【问题标题】:Split string separated by commas in access在访问中以逗号分隔的拆分字符串
【发布时间】:2018-02-21 02:40:45
【问题描述】:

我有一个结构为 tblPartnerships 的表
ID      合作伙伴
1     财务、IT、运营
2     法律、合规、IT、人力资源

我需要从合作伙伴列中提取所有逗号分隔的关键字,并将其放在另一个主表中,每个单词作为单独的行,以便它显示为

金融
资讯科技
运营
法律
合规
资讯科技
人力资源

我知道有一个拆分函数,例如 varList = Split(stTmp, ",") 但我完全不知道如何遍历整个列 tblPartnerships.Partnerships 将其插入 MasterTable.Rowheading
任何 Access 查询或 vba 代码将不胜感激

【问题讨论】:

  • 使用 VBA 操作记录集对象并在循环结构中读取记录集的每条记录。
  • 这是一个“一次性的事情”,做一个参考表吗? (如果是,我建议您在 Excel 中手动创建您的列表。)或者这会定期运行吗? (如果是这样,它完成了什么,并且输出表肯定需要多个字段?)

标签: sql vba ms-access ms-access-2016


【解决方案1】:

使用单个参数创建一个Append 查询,即要导入的单词。查询的源 SQL 应该是这样的:

PARAMETERS [prmWord] Text (50);
INSERT INTO T ( Words )
SELECT [prmWord] AS _Word;

T 是您的表(主)的名称,Words 是字段的名称。

然后只需遍历 Partnerships 记录集,拆分值并使用上述查询导入每个单词。

Sub SplitAndImport()
    On Error GoTo ErrorTrap

    Dim rs As DAO.Recordset
    Set rs = CurrentDb().OpenRecordset("SELECT Partnerships FROM tblPartnerships;", dbOpenSnapshot)
    With rs
        If .EOF Then GoTo Leave
        .MoveLast
        .MoveFirst
    End With

    Dim arr As Variant
    Dim i As Long, ii As Long
    For i = 1 To rs.RecordCount
        arr = Split(rs![Partnerships], ",")
        For ii = LBound(arr) To UBound(arr)
            With CurrentDb().QueryDefs("QueryName")
                .Parameters("[prmWord]").Value = Trim(arr(ii))
                .Execute dbFailOnError
            End With
        Next
        rs.MoveNext
    Next

Leave:
    If Not rs Is Nothing Then rs.Close
    On Error GoTo 0
    Exit Sub

ErrorTrap:
    MsgBox Err.Description, vbCritical
    Resume Leave
End Sub

【讨论】:

    【解决方案2】:

    这可能无法与您当前的数据库设计一样准确。 您可以尝试使用多值字段。稍后,如果您想在单行上查看多个值,请使用“AssignedTo”命令。

    SELECT [title], [lcs].[AssignedTo].[value] AS Expr1
    FROM Product;
    

    其中 lcs 是一个多值字段,title 是一个文本字段。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2023-01-03
      • 2017-01-05
      • 2012-05-24
      相关资源
      最近更新 更多