2017-10-18 25 views
0

我試圖讓字段名的字符串表,然後拆分Access字段名字符串的字符後拆分子。我有多個字段與計數的子字符串,例如ChuckQ1然後下一個字段是ChuckQ2然後JawQ1等

然後,我試圖用子字符串填充名爲strarray1的數組。我將它分成兩次以避免重複。請參考下面

基本示例: 字段名稱「TestQ1」,我想「1」作爲分割子。如果它是第一個類型,不是2或3 ...,那麼第二個分割就是抓住實際的名稱類型「測試」

我遇到類型不匹配@fldStr = Split(fldStr, "Q", 1)。請注意,第一個字段被命名爲「ID」,表prim鍵。那會是一個問題,因爲它在字符串中沒有「Q」?或者是字段名稱不是字符串類型?

代碼

Dim f As Integer 
Dim fldStr As String 
Dim db As DAO.Database 
Set db = CurrentDb() 
Dim rs1 As DAO.Recordset 
Set rs1 = db.OpenRecordset(Selection) 
Dim fld As DAO.Field 
f = 1 
For Each fld In rs1.Fields 
    fldStr = fld.Name 
    fldStr = Split(fldStr, "Q", 1) 
    If fldStr = "1" Then 
     fldStr = fld.Name 
     fldStr = Split(fldStr, "Q", 0) 
     strArray1(f) = fldStr 
     f = f + 1 
    Else 
    End If 
Next 
Set fld = Nothing 

回答

1

我相信你不完全明白Split一樣。 Split在分隔符上分割一個字符串,併爲您提供一個數組。第三個參數(在這裏您輸入01)是陣列,其中最後一個元素包含字符串的未分裂餘數(0爲0元素,以便返回一個空數組中的元素的最大數量,1爲1個元件,從而返回數組與你的整個字符串)。

如果你想返回數組的特定元素,你可以使用以下命令:Split(fldStr, "Q")(1)

實現在你的代碼:

Dim f As Integer 
Dim fldStr As String 
Dim db As DAO.Database 
Set db = CurrentDb() 
Dim rs1 As DAO.Recordset 
Set rs1 = db.OpenRecordset(Selection) 
Dim fld As DAO.Field 
f = 1 
For Each fld In rs1.Fields 
    fldStr = fld.Name 
    fldStr = Split(fldStr, "Q")(1) 
    If fldStr = "1" Then 
     fldStr = fld.Name 
     fldStr = Split(fldStr, "Q")(0) 
     strArray1(f) = fldStr 
     f = f + 1 
    Else 
    End If 
Next 
Set fld = Nothing 

請注意,此部分:

fldStr = fld.Name 
fldStr = Split(fldStr, "Q")(0) 

對我沒有意義。爲什麼要改變fldStr,然後再立即改變它。