问题描述:

我试图让字段名的字符串表,然后拆分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 

我相信你不完全明白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,然后再立即改变它。