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.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」の行もあります、それらには同じ管理コードを
付け足していく場合の方法
お手間をかけますが、もう少しお付き合い願えれば大変ありがたいです。
なにとぞよろしくお願いいたします。
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)
です。
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ACCESS で 項目名を出力せずにエクスポートしたい
その他(データベース)
-
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
-
4
Access VBAでCSVファイルをインポートする方法
Access(アクセス)
-
5
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
8
Accessのレポートで開くと「読み取り専用なので…」と出る。
Access(アクセス)
-
9
access テキストボックスの値取得
Access(アクセス)
-
10
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
11
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
12
サブフォームの高さをVBAで調整するには
Access(アクセス)
-
13
VBA ACCESS SQL WHERE句の数値型の変数の記述の仕方
その他(プログラミング・Web制作)
-
14
【Access2003 VBA】クエリをエクスポートしたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
access2003 クエリSQL文に...
-
1、Rstudioで回帰直線を求める...
-
chatgptでつくってもらったコー...
-
MessageBoxで表示される文字列...
-
ExcelのVBAコードについて教え...
-
1日に1人がこなせるプログラム...
-
フィルターかけた後、重複を除...
-
特定行の背景色を変えたいのですが
-
アルファベットに付いて質問し...
-
パイソンプログラム
-
UWSCでMOUSEORG関数が上手く処...
-
COBOLの文法
-
コンパイルエラー 変数が定義...
-
Gitのクローンについて
-
文字コードについて
-
ユーザーフォームに2つのコン...
-
Visual BASIC イベント作成しよ...
-
欠番の抽出について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
特定行の背景色を変えたいのですが
-
変数名「cur」について
-
PreviewKeyDownイベントが2回...
-
将来AIが進歩してくるにつれて...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
Nullの使い方が不正です。
おすすめ情報