表
问题描述:
我试图让字段名的字符串表,然后拆分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
在分隔符上分割一个字符串,并为您提供一个数组。第三个参数(在这里您输入0
和1
)是阵列,其中最后一个元素包含字符串的未分裂余数(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,然后再立即改变它。