- ベストアンサー
テーブルデータのインポートについて
バージョンはAccess2003です。 テーブルAとテーブルBがあります。 CSVからデータをインポートし、全データがテキスト型で保存されています。 テーブルBには最終的にデータを保存したいフィールドプロパティが定義されています。 VBを使ってテーブルAからテーブルBにインポートしたいと思っています。 テーブルAのデータをテーブルBの定義に合うように加工するにはどうすればいいのでしょうか? アドバイスよろしくお願いします。
- みんなの回答 (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
その他の回答 (1)
- Tiffa9900
- ベストアンサー率31% (68/216)
テーブル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件追加 を繰り返す感じではないかな。
お礼
質問が曖昧でしたね^^;申し訳ないです。。 質問したかったことはまさに回答の通りです! 参考にいろいろ試行錯誤してみたところ、うまく動かすことができました! ホントにありがとうございます!!助かりました!