在访问中用逗号分隔的拆分字符串

时间:2018-02-21 02:40:46

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

我有一个表tblPartnerships结构为
ID合作伙伴关系
1财务,IT,运营
2法律,合规,IT,HR

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

金融
IT
操作
法律
遵守
IT
HR

我知道有一个分割函数,例如varList = Split(stTmp,“,”)但是我完全迷失了如何遍历整个列tblPartnerships.Partnerships将其插入到MasterTable中.Rowheading
任何Access查询或vba代码都将受到高度赞赏

2 个答案:

答案 0 :(得分:2)

使用单个参数(要导入的单词)创建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

答案 1 :(得分:0)

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

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

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