在表中拆分访问字段名称字符串

时间:2017-10-18 00:58:24

标签: access-vba

我试图在表中获取字段名称字符串,然后在字符后分割子字符串。我有多个带有子串的字段,例如ChuckQ1然后下一个字段是ChuckQ2然后是JawQ1等。

然后我尝试使用子字符串填充名为strarray1的数组。我把它分成两次,以免重复。请看下面的

基本示例: 字段名称“TestQ1”,我希望“1”作为拆分子字符串。如果它是第一个类型,而不是2或3 ......,那么第二个拆分是获取实际名称类型“Test”

我的类型不匹配@ 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 个答案:

答案 0 :(得分: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,然后立即改变它。