2017-05-23 123 views
2

我有访问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名单多少?

回答

0

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

  • TableCSV是源表
  • TableFields的名称是目标表
  • 恒定maxValues的名称指定构成后构成动态的INSERT INTO语句可用
  • 的查询字段values的数量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