
ACCESS VBA ヘッダなしCSVの入力について
”商品管理.mdb”の中に
下のような”商品TBL”があります
商品ID 納入日 仕入NO 管理コード
9 20100305 25596
10 20100326 19229
11 20100412 65841
12 20100423 26845
上の商品TBLテーブルの管理コードを入れる元データとして
下のような”管理.csv”があります
20100326,20100305,123
20100326,20100326,456
20100326,20100412,222
20100326,20100423,1111
ヘッダーはありませんが
1列目:納入日、2列目:仕入NO、3列目:管理コード
になります。
やりたいことは
”商品TBL”の ”納入日”と”仕入NO”と
管理.csvの”納入日”と”仕入NO”(ヘッダーはありませんが1カラムと2カラム)
が一致した場合、管理.csvの管理コード(3カラム目)を
”商品TBL”の管理コードに入力したいのです。
色々参考にしているのですがやり方がわかりません
今何とか”商品TBL”に管理.csvを読み込ませる所までは出来ましたが
ただ単にデータを追加させる事が出来た程度です。
商品TBLと管理CSVを比較してマッチしたら管理コードを入力できる方法を
どなたか、お教え願います。
以下現在の状況です
Private Sub コマンド0_Click()
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const ForReading = 1
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = c:\test\商品管理.mdb"
objRecordSet.Open "SELECT * FROM 商品TBL", _
objConnection, adOpenStatic, adLockOptimistic
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\test\管理.csv")
Do Until objFile.AtEndOfStream
strkanri = objFile.ReadLine
MsgBox strkanri
arrkanri = Split(strkanri, ",")
objRecordSet.AddNew
objRecordSet("納入日") = arrkanri(0)
objRecordSet("仕入NO") = arrkanri(1)
objRecordSet("管理コード") = arrkanri(2)
objRecordSet.Update
Loop
objRecordSet.Close
objConnection.Close
End Sub
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) の内容を囲います。
複数あるのであれば、絞り込まれた分を、ぐるぐる回します。
30246kiku様
貴重なアドバイスありがとうございます!!
おかげさまで希望通りの動作が出来ました。
ありがとうございます。
No.3
- 回答日時:
#2です
記述間違いです。
Do While (Not objRecordSet.EOF)
は
While (Not objRecordSet.EOF)
です。
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
の方が良いかも?
データ量は見ていないので、使えるものなのかは判断してください。
30246kiku様
アドバイスありがとうございます、
希望の動きが出来ました。
また落とし穴的な注意点も非常に助かります。
もしよろしければ
2点ほど30246kiku様のアドバイスをお聞きしたいのですが、
・仕入NOが0から始まるものもあるのでフィールドを文字型にしています、その場合対処法
・商品TBLに同じ値の「納入日」「仕入NO」の行もあります、それらには同じ管理コードを
付け足していく場合の方法
お手間をかけますが、もう少しお付き合い願えれば大変ありがたいです。
なにとぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
このQ&Aを見た人はこんなQ&Aも見ています
-
「それ、メッセージ花火でわざわざ伝えること?」
「それ、メッセージ花火でわざわざ伝えること?」というメッセージを教えて下さい
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
スタッフと宿泊客が全員斜め上を行くホテルのレビュー
スタッフも宿泊客も、一流を通り越して全員斜め上なホテルのレビューにありがちな内容を教えて下さい
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
ACCESS で 項目名を出力せずにエクスポートしたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
オートフィルタで抽出結果に 罫...
-
1日に1人がこなせるプログラム...
-
エクセルに見えない文字(JISX0...
-
VBAでdo内にてWAITを使うとエラ...
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
Microsoft Visual Studio Commu...
-
VBA リストボックス(複数条件...
-
Excel VBA素人です。VBAで図形...
-
コンボボックス3つを連動させたい
-
Excel VBAでOpenTextのFieldInf...
-
VBA ユーザーフォームの印刷に...
-
Javaの改行について
-
JavaScript|特定URLだった時、...
-
【VB6】実行ファイルとした後、...
-
access2021 VBA メソッドまたは...
-
スキャンコード取得は MapVirtu...
-
ASP.NET2.0 C# のGridViewで横...
-
QRコードの印刷
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
access2021 VBA メソッドまたは...
-
Excel VBA素人です。VBAで図形...
-
Exel VBA 別ブックから該当デ...
-
access2003 クエリSQL文に...
-
エクセルに見えない文字(JISX0...
-
Nullの使い方が不正です。
-
【VB6】実行ファイルとした後、...
-
VBAでファイルオープン後にコー...
-
オートフィルタで抽出結果に 罫...
-
PreviewKeyDownイベントが2回...
-
JavaScriptの定数名が取り消し...
-
Excel VBAでOpenTextのFieldInf...
-
COBOLの文法
-
ACCESSユニオンクエリでORDER B...
-
Access DCountでの連番について
-
VBA リストボックス(複数条件...
-
C# コードビハインドについて
おすすめ情報