• ベストアンサー

テーブルデータのインポートについて

バージョンはAccess2003です。 テーブルAとテーブルBがあります。 CSVからデータをインポートし、全データがテキスト型で保存されています。 テーブルBには最終的にデータを保存したいフィールドプロパティが定義されています。 VBを使ってテーブルAからテーブルBにインポートしたいと思っています。 テーブルAのデータをテーブルBの定義に合うように加工するにはどうすればいいのでしょうか? アドバイスよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.2

Q、加工するにはどうすればいいのでしょうか? A、質問が曖昧かと・・・。 テーブルの列の型を取得してということが焦点なのでしょうか? ADOX.Catalog を使う手もありますが、列に並び順がテーブルの並びと一致しないという不具合があります。 で、私は、ADODB.Recordsetの Fields().Type で判別しています。 Public Function GetFieldsList_II(ByVal strCNNString As String, ByVal strTableName As String) As String() On Error GoTo Err_GetFieldsList_II   Dim I     As Integer   Dim N     As Integer   Dim rst    As ADODB.Recordset   Dim strFields As String   Set rst = New ADODB.Recordset   With rst     .Open "SELECT TOP 1 * FROM [" & strTableName & "]", _        strCNNString, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       N = .Fields.Count - 1       .MoveFirst       For I = 0 To N         strFields = strFields & SetL(.Fields(I).Name, Space(18)) & _             Chr(9) & _             "<" & .Fields(I).Type & "> " & .Fields(I).Value & ";"       Next I       strFields = Left(strFields, Len(strFields) - 1)       strFields = Replace(strFields, "<202>", "テキスト型      ")       strFields = Replace(strFields, "<17>", "バイト型      ")       strFields = Replace(strFields, "<2>", "整数型      ")       strFields = Replace(strFields, "<3>", "長整数型     ")       strFields = Replace(strFields, "<4>", "単精度浮動少数点型")       strFields = Replace(strFields, "<5>", "倍精度浮動少数点型")       strFields = Replace(strFields, "<7>", "日付・時刻型    ")       strFields = Replace(strFields, "<6>", "通貨型      ")       strFields = Replace(strFields, "<11>", "Yes/No型     ")     Else       strFields = ""     End If   End With Exit_GetFieldsList_II:   GetFieldsList_II = Split(strFields, ";")   Exit Function Err_GetFieldsList_II:   strFields = ""   Resume Exit_GetFieldsList_II End Function

pooh0128
質問者

お礼

質問が曖昧でしたね^^;申し訳ないです。。 質問したかったことはまさに回答の通りです! 参考にいろいろ試行錯誤してみたところ、うまく動かすことができました! ホントにありがとうございます!!助かりました!

その他の回答 (1)

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.1

テーブルAとテーブルBの定義を記載して頂けないでしょうか。 例えば テーブルA  X1 char(10)  X2 char(20)  X3 char(30) テーブルB  X1 char(10)  X3 char(30) とかでしたら、 VBを使うまでも無く、 insert into テーブルB select X1, X2 from テーブルA といった事もできます。 VBを利用するのであれば テーブルAからCSVにテキストデータを出力しているみたいですので、 ・出力したテキストを1件読み込み ・テーブルBのレイアウトにあわせて項目を編集 ・テーブルBに1件追加 を繰り返す感じではないかな。

関連するQ&A