2017-05-23 17 views
2

私は、カンマ区切りの値を持つ1つのフィールドを格納するアクセス2013テーブルを持っています。私はそれが常になります数に適応するのに十分な「値」フィールドを持つことになりますので、私は動的にテーブルを作成していますので、分割フィールドを複数フィールドに分割

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

のような私は構造を持つに結果を解析する必要がある第二のテーブルを作成しました解析されました。サンプル・データは、のようなものです:

uppID values 
aeo031 boat, goat, hoat, moat 

そして私は、フィールドマッピングが多く、1つのフィールドからのCSVリストを解析VBAにアクセスすることができますどのような

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

のように行きたいですか?

答えて

0

おそらくは、宛先テーブルにレコードを1つずつ挿入する以下の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 
関連する問題