Makale numarası: 210588 - Son Gözden Geçirme: 23 Haziran 2005 Perşembe - Gözden geçirme: 2.0

ACC2000: Nasıl metin, virgülle ayrılmış birden çok alan çözümle

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir <a0>metin</a0> alanına, virgülle ayrılmış metin ayrıştırma ve birden çok metin alanları metin görüntülemek için kullanabileceğiniz iki yöntem sağlar.

Ilk yöntem, örneğin Soyadı (Etikan, Gamze) bir ilk adını içeren bir alanda bir virgül ile ayrılmış iki sözcük içeren bir metin alanı için kullanabilirsiniz.

Örneğin, Şehir, bölge ve ülke (Toronto, Kanada, Kanada) içeren bir alanda virgülle ayırarak ikiden fazla sözcük içeren bir metin alanı için ikinci yöntem kullanabilirsiniz.

Daha fazla bilgi

Virgülle ayrılmış metin alanları ayrıştırılamıyor ve elde edilen metin dizeleri, birden çok metin alanları görüntülemek için aşağıda listelenen yöntemlerden birini kullanın:

Yöntem 1

Bu yöntem, üç işlevi içeren bir sorgudaki bir deyim kullanır: Instr() işlevi, virgülle ayrılmış metin alanına aramak ve iki metin alanı parçalarını çıkarmak Left$() ve Right$() işlevleri.

Virgülle ayrılmış olan iki sözcük içeren bir metin alanı ayrıştırmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Microsoft Access'i başlatın ve sonra da herhangi bir varolan veritabanını açın.

    Tablo aşağıdaki yapıda oluşturun:
    Tablo: Parse2Words
    ------------------
    Ad alanı: Empl
    Veri türü: metin
  2. Parse2Words tabloyu Veri Sayfası görünümünde ve aşağıdaki üç kaydı Empl alanına yazın:
    Etikan, Gamze
    Etikan, Gamze
    Barış Çetinok,
  3. Aşağıdaki Parse2Words tabloyu temel alan sorgu oluşturma:
       Query: QueryTest
       ------------------------------------------------------------------
       Field: FirstName: Right$([Empl],Len([Empl]) - InStr(1,[Empl],",") -1)
          Show: True
       Field: LastName: Left$([Empl],InStr(1,[Empl],",") -1)
          Show: True
    						
    Not: Empl alanında iki bölümleri arasındaki boşluklar hesap için QueryTest sorgu değişiklik yapabilirsiniz. Örneğin, metin Empl alanında Etikan, Gamze boşluk, "-1" ad alanı ifadeden kaldırın.
  4. Sorguyu çalıştırın. Not QueryTest sorgu Empl</a0> alanındaki metni aşağıdaki iki alanlara ayırır:
       FirstName   LastName
       --------------------
       John        Smith
       Laura       Callahan
       Andrew      Fuller
    					

Yöntem 2

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Bu yöntem, iki kullanıcı tanımlı işlevleri kullanır: metin alanına, virgülle ayrılmış sözcük sayısını saymak için CountCSWords() adlı bir işlev ve metin alanına n. sözcüğe dönmek için GetCSWord() adında bir işlev.

Virgül ile ayrılmış iki sözcük içeren bir metin alanı ayrıştırmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Microsoft Access'i başlatın ve sonra istediğiniz veritabanını açın.
  2. Tablo aşağıdaki yapıda oluşturun:
    Tablo: ParseWords
    --------------------
    Ad alanı: konumu
    Veri türü: metin
  3. ParseWords tabloyu Veri Sayfası görünümünde görüntüleyin ve sonra da <a2>Konum</a2> alanında aşağıdaki üç kaydı yazın:
    Toronto, Kanada, Kanada
    Boston, Massachusetts'de, ABD
    Vancouver, British Columbia, Kanada
  4. Bir modül oluşturun ve zaten orada değilse Option Explicittanımlamalar bölümüne yazın.
  5. Aşağıdaki yordamlar yazın:
    Function CountCSWords(ByVal S) As Integer
    ' Counts the words in a string that are separated by commas.
    
    Dim WC As Integer, Pos As Integer
       If VarType(S) <> 8 Or Len(S) = 0 Then
         CountCSWords = 0
         Exit Function
       End If
       WC = 1
       Pos = InStr(S, ",")
       Do While Pos > 0
         WC = WC + 1
         Pos = InStr(Pos + 1, S, ",")
       Loop
       CountCSWords = WC
    End Function
    
    Function GetCSWord(ByVal S, Indx As Integer)
    ' Returns the nth word in a specific field.
    
    Dim WC As Integer, Count As Integer, SPos As Integer, EPos As Integer
       WC = CountCSWords(S)
       If Indx < 1 Or Indx > WC Then
         GetCSWord = Null
         Exit Function
       End If
       Count = 1
       SPos = 1
       For Count = 2 To Indx
         SPos = InStr(SPos, S, ",") + 1
       Next Count
       EPos = InStr(SPos, S, ",") - 1
       If EPos <= 0 Then EPos = Len(S)
       GetCSWord = Trim(Mid(S, SPos, EPos - SPos + 1))
    End Function
    
    					
  6. Modül derleme basParse kaydedin ve sonra kapatın.
  7. Aşağıdaki ParseWords tabloyu temel alan sorgu oluşturma:
       Query: QueryTest2
       ---------------------------------------
       Field: City: GetCSWord([Location],1)
          Show: True
       Field: Region: GetCSWord([Location],2)
          Show: True
       Field: Country: GetCSWord([Location],3)
          Show: True
    					
  8. Sorguyu çalıştırın. Not QueryTest2 sorgu metni <a0>Konum</a0> alanında aşağıdaki üç alanlara ayırır:
       City        Region             Country
       --------------------------------------
       Toronto     Ontario            Canada
       Boston      Massachusetts      USA
       Vancouver   British Columbia   Canada
    					

Referanslar

Hakkında ek bilgi için programlama kaynaklarının Visual Basic for Applications, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
226118  (http://support.microsoft.com/kb/226118/EN-US/ ) OFF2000: Kaynaklar Visual Basic for Applications programlama

Metin dizeleri ayrıştırma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
209045  (http://support.microsoft.com/kb/209045/EN-US/ ) ACC2000: Örnek ifadeleri bölüm metin dizesinin ayıklamak

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbusage KB210588 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:210588  (http://support.microsoft.com/kb/210588/en-us/ )