【问题标题】:Split Delimited Field To Multi Fields将分隔字段拆分为多个字段
【发布时间】:2017-05-23 16:39:26
【问题描述】:

我有一个 access 2013 表,其中包含一个带有逗号分隔值的字段。我创建了第二个表,我需要将结果解析成这样的结构

uPPID number
value1 short text
value2 short text
value3 short text
value4 short text

我正在动态创建表,因此它总是有足够的“值”字段来容纳将被解析出的数字。样本数据是这样的:

 uppID   values
aeo031  boat, goat, hoat, moat

我希望字段映射像这样

uPPID = aeo031
value1 = boat
value2 = goat
value3 = hoat
value4 = moat

如何访问 vba 解析出一个从一个字段到多个字段的 csv 列表?

【问题讨论】:

    标签: ms-access vba ms-access-2013


    【解决方案1】:

    可能有比在目标表中一一插入记录的以下 VBA 循环更快/更好的解决方案。但例如它可以完成这项工作。

    • TableCSV 是源表的名称
    • TableFields 是目标表的名称
    • 常量maxValues 指定了values 可用的字段数
    • 查询在组合values字段后动态组合INSERT INTO语句;它完成它以提供所有列,并添加周围的引号'...'。 (p.s. 如果我们可以在不指定所有列值的情况下插入,则可以简化..)

    .

    Sub splitTable()
      Const maxValues As Long = 4 ' <-- Set to number of value fields in destination table
      Dim query As String, values As String, rs
      Set rs = CurrentDb.OpenRecordset("TableCSV")
    
      Do Until rs.EOF
        values = rs!values ' next we add commas to provide all fields
        values = values & String(maxValues - UBound(Split(values, ",")) - 1, ",")
        values = "'" & Replace(values, ",", "','") & "'"  ' 'a', 'b', '', '' etc
        query = "INSERT INTO TableFields VALUES (" & rs!uPPID & "," & values & ")"
        Debug.Print query
    
        CurrentDb.Execute query
        rs.moveNext
      Loop
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2010-10-12
      • 2013-08-28
      相关资源
      最近更新 更多