将分隔的字段拆分为多字段

时间:2017-05-23 16:39:26

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

我有一个访问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列表从一个字段解析为多个?

1 个答案:

答案 0 :(得分:0)

可能比在目标表中逐个插入记录的后续VBA循环更快/更好的解决方案。但是,例如它完成了这项工作。

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

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