• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS VBA ヘッダなしCSVの入力について)

ACCESS VBA ヘッダなしCSVの入力について

このQ&Aのポイント
  • ACCESS VBAを使用してヘッダがないCSVファイルを入力する方法について教えてください。
  • 商品管理.mdbというデータベースには、商品TBLというテーブルがあります。このテーブルには商品ID、納入日、仕入NO、管理コードの列があります。
  • また、管理.csvというCSVファイルもあります。このファイルには納入日、仕入NO、管理コードの列があります。これらの列が一致した場合、管理.csvの管理コードを商品TBLの管理コードに入力したいです。現在は商品TBLにデータを追加することしかできていません。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です 以下のようにしてみてどうなりますか。   Do Until objFile.AtEndOfStream     strkanri = objFile.ReadLine     MsgBox strkanri     arrkanri = Split(strkanri, ",")     objRecordSet.Filter = "納入日=" & arrkanri(0) _               & " AND 仕入NO ='" & arrkanri(1) & "'"     Do While (Not objRecordSet.EOF)       objRecordSet("管理コード") = arrkanri(2)       objRecordSet.Update       objRecordSet.MoveNext     Wend   Loop ※ 「仕入NO」がテキスト型であれば、' ' で arrkanri(1) の内容を囲います。 複数あるのであれば、絞り込まれた分を、ぐるぐる回します。

matupo
質問者

お礼

30246kiku様 貴重なアドバイスありがとうございます!! おかげさまで希望通りの動作が出来ました。 ありがとうございます。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#2です 記述間違いです。     Do While (Not objRecordSet.EOF) は     While (Not objRecordSet.EOF) です。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

「納入日」「仕入NO」は、数値型と仮定します。 Do Loop 部分を以下にしてどうなりますか。   Do Until objFile.AtEndOfStream     strkanri = objFile.ReadLine     MsgBox strkanri     arrkanri = Split(strkanri, ",")     objRecordSet.Filter = "納入日=" & arrkanri(0) _               & " AND 仕入NO =" & arrkanri(1)     If (objRecordSet.EOF) Then       objRecordSet.AddNew       objRecordSet("納入日") = arrkanri(0)       objRecordSet("仕入NO") = arrkanri(1)     End If     objRecordSet("管理コード") = arrkanri(2)     objRecordSet.Update   Loop ※ 1度「納入日」「仕入NO」で絞込みします。 結果、なければ全部を追加し、あれば「管理コード」のみを更新します。 ただし、絞り込んだ際に1件しかないはず、、が前提条件となります。 「商品ID」との関係がわからないので、あった時だけとすると、     If (Not objRecordSet.EOF) Then       objRecordSet("管理コード") = arrkanri(2)       objRecordSet.Update     End If の方が良いかも? データ量は見ていないので、使えるものなのかは判断してください。

matupo
質問者

お礼

30246kiku様 アドバイスありがとうございます、 希望の動きが出来ました。 また落とし穴的な注意点も非常に助かります。 もしよろしければ 2点ほど30246kiku様のアドバイスをお聞きしたいのですが、 ・仕入NOが0から始まるものもあるのでフィールドを文字型にしています、その場合対処法 ・商品TBLに同じ値の「納入日」「仕入NO」の行もあります、それらには同じ管理コードを  付け足していく場合の方法 お手間をかけますが、もう少しお付き合い願えれば大変ありがたいです。 なにとぞよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう