文章編號: 210588 - 上次校閱: 2005年6月23日 - 版次: 2.0

ACC2000: 如何剖析以逗號分隔的文字為多個欄位

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文提供您可以使用剖析以逗號分隔的文字,在 [文字] 欄位中,並在多個 文字 欄位中顯示的文字的兩種方法。

第一種方法可用於包含以逗點,例如欄位包含最後一個名稱,後面跟著一個第一個名稱為 (Smith 名字在後) 分隔的兩個字的 文字 欄位。

第二種方法可用於包含超過兩個字之間以逗號 (,) 來分隔,例如包含城市、 某地區和國家/地區 (多倫多,Ontario,加拿大) 的一個欄位的 文字 欄位。

其他相關資訊

為了要剖析以逗號分隔 文字 欄位,並在多個 文字 欄位中顯示產生的文字字串,使用其中一個下面列出的方法:

方法 1

這個方法,其中包含三個函式在查詢中使用運算式: Instr() 函式,以搜尋 文字] 欄位中逗號和 Left$()Right$() 函式,以展開 [文字] 欄位的兩個部份。

剖析包含以逗號分隔的兩個字的 文字 欄位,請依照下列步驟執行:
  1. 啟動 Microsoft Access 然後再開啟任何現有的資料庫。

    建立表格以下列結構:
    表格: Parse2Words
    ------------------
    欄位名稱: Empl
    資料類型: 文字
  2. 在 [資料工作表檢視] 中檢視 Parse2Words 資料表,並再 Empl 欄位中輸入下列三個記錄:
    姓氏在前名字在後
    Callahan 李妙玫
    曹 Andrew
  3. 建立下列 Parse2Words 資料表為基礎的查詢:
       Query: QueryTest
       ------------------------------------------------------------------
       Field: FirstName: Right$([Empl],Len([Empl]) - InStr(1,[Empl],",") -1)
          Show: True
       Field: LastName: Left$([Empl],InStr(1,[Empl],",") -1)
          Show: True
    						
    注意: 您可以修改 QueryTest 查詢進行了兩個部分在 Empl 欄位之間的空格。比方說如果 Empl] 欄位中的文字是不包含空格的 姓氏在前名字在後,移除"-1"FirstName 欄位運算式。
  4. 執行查詢。QueryTest 查詢成兩個以下的欄位分隔 Empl] 欄位中的文字的附註:
       FirstName   LastName
       --------------------
       John        Smith
       Laura       Callahan
       Andrew      Fuller
    					

方法 2

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。這個方法會使用兩個使用者自訂函數: 名為 CountCSWords() 計算 文字] 欄位中的逗點分隔文字的一個函式和名為 GetCSWord() 傳回 文字] 欄位中的第 n 個字的函式。

剖析包含以逗號分隔的兩個以上字的 文字 欄位,請依照下列步驟執行:
  1. 啟動 Microsoft Access 然後再開啟任何資料庫。
  2. 建立表格以下列結構:
    表格: ParseWords
    --------------------
    欄位名稱: 位置
    資料類型: 文字
  3. 在 [資料工作表檢視] 中檢視 ParseWords 資料表,並接著在 [位置] 欄位中輸入下列三個記錄:
    多倫多,Ontario,加拿大
    台北士麻州,美國
    溫哥華,不列顛哥倫比亞,加拿大
  4. 建立一個模組,然後輸入 選項明確宣告 區段中如果它已經不存在。
  5. 鍵入下列程序:
    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. 將模組編譯、 將它存成 basParse,並關閉它。
  7. 建立下列 ParseWords 資料表為基礎的查詢:
       Query: QueryTest2
       ---------------------------------------
       Field: City: GetCSWord([Location],1)
          Show: True
       Field: Region: GetCSWord([Location],2)
          Show: True
       Field: Country: GetCSWord([Location],3)
          Show: True
    					
  8. 執行查詢。附註 QueryTest2 查詢將在 [位置] 欄位中的文字隔開到下面三個欄位:
       City        Region             Country
       --------------------------------------
       Toronto     Ontario            Canada
       Boston      Massachusetts      USA
       Vancouver   British Columbia   Canada
    					

?考

如需詳細資訊程式設計資源的相關的 Visual Basic 應用程式,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
226118? (http://support.microsoft.com/kb/226118/EN-US/ ) OFF2000: 應用程式的 Visual Basic 程式設計資源

取得更多資訊有關剖析文字字串按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
209045? (http://support.microsoft.com/kb/209045/EN-US/ ) ACC2000: 範例運算式以解壓縮文字字串的部分

這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbhowto kbusage KB210588 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:210588? (http://support.microsoft.com/kb/210588/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。