【问题标题】:Split Access field name string in table拆分表中的访问字段名称字符串
【发布时间】:2020-07-13 19:15:47
【问题描述】:

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

然后我试图用子字符串填充一个名为strarray1 的数组。我将它拆分两次,以免重复。请看下文

基本示例: 字段名称“TestQ1”,我想要“1”作为拆分子字符串。如果是类型中的第一个,不是2或者3...,那么第二个拆分就是抓取实际名称类型“Test”

我收到类型不匹配 @fldStr = Split(fldStr, "Q", 1)。请注意,第一个字段名为“ID”,是表的主键。这会是一个问题,因为它在字符串中没有“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   

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    我相信你并不完全理解Split 的作用。 Split 在分隔符上拆分字符串,并为您提供一个数组。第三个参数(您输入 01 的位置)是该数组中的最大元素数,其中最后一个元素包含字符串的未拆分余数(0 是 0 个元素,因此返回一个空数组,@ 987654326@ 是 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,然后立即再次更改。

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 2023-03-17
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      相关资源
      最近更新 更多