こんにちは。
EXCEL2013からACCESS2013へデータを更新するvbaについて質問させてください。
https://infith.com/system/access/excel_access_ad …
こちらを参考にマクロを設定しました。
ACCESS テーブル名:T商品マスター
更新するためのフィールド:商品コード
EXCEL アクティブシートにあるA~C列2行目から最終行まで
変更した箇所
strSQL = "SELECT T商品マスター.* FROM T商品マスター "
strSQL = strSQL & "WHERE T商品マスター.商品コード = " & CLng(.Cells(i, 1).Value) & " ;"
これを実行すると↓の部分でデバックになり、
抽出条件が一致しません、と表示されてしまいます。
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenKeyset, adLockOptimistic
おそらく変更した箇所の書き方が違うのかなと思ったのですが
自分ではいくら考えてもわからず、よろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub DB_Write()
Dim adoCON As New ADODB.Connection
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim odbdDB As Variant
Dim wSheetName As Variant
Dim i As Integer
Dim wLastGyou As Long
'カレントディレクトリのデータベースパスを取得
odbdDB = "C:\***\Desktop\売上管理.accdb"
'データベースに接続する
adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & odbdDB & ""
adoCON.Open
'トランザクション開始
adoCON.BeginTrans
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
With Worksheets(wSheetName)
'最終行番号を取得
wLastGyou = .UsedRange.Rows.Count
'Excelの一覧を読み込みAccessに書き込む
For i = 2 To wLastGyou
'商品コードの数値チェック(数字の場合は処理を実行)
If .Cells(i, 1).Value <> "" Then
'DB接続用SQL
strSQL = "SELECT T商品マスター.* FROM T商品マスター "
strSQL = strSQL & "WHERE T商品マスター.商品コード = " & CLng(.Cells(i, 1).Value) & " ;"
'カーソルをクライアント側に設定
adoRS.CursorLocation = adUseClient
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenKeyset, adLockOptimistic
'入力された商品コードと同一のレコードが無い場合は新規登録
If adoRS.EOF Then
adoRS.AddNew
adoRS!商品コード = CLng(.Cells(i, 1).Value)
End If
adoRS!商品コード = .Cells(i, 2).Value
adoRS!商品名 = .Cells(i, 3).Value
adoRS!単価 = .Cells(i, 3).Value
adoRS.Update
'レコードセットを閉じる
adoRS.Close: Set adoRS = Nothing
End If
Next i
End With
'トランザクション終了
adoCON.CommitTrans
'ADOコネクションオブジェクトのクローズ処理
adoCON.Close: Set adoCON = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
>T商品マスター.商品コード
がどんなデータ型なのかシートのA列がどうなっているのかがわかりませんけど、コード的には『ともに数値』であることが条件ですよね?
商品コードなので『A0001』とか『00225』とかの『文字列(数字≠数値)』ではないですか?
仮にそうなら、
strSQL = strSQL & "WHERE T商品マスター.商品コード = '" & .Cells(i, 1).Text & "' ;"
とかになるかもですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「新商品」と「リニューアル商...
-
"スレスレ" "ギリギリ" を丁寧...
-
「売れ筋」に対して???
-
エクセルを使って、商品管理を...
-
excel VBAで、置換した結果を別...
-
皆さんなら現品限り(展示品)の...
-
シマアジの内臓なんですが
-
今さっきセブンイレブンに行っ...
-
「リピーター」の逆は?
-
松下電器 Panasonic National...
-
市場の成熟化について
-
裾野拡大ってどういう意味なん...
-
顧客不在の逆の意味はなんとい...
-
商売は、安く売るくらいなら捨...
-
エアウィーヴって胡散臭くない...
-
質屋に就職。
-
市場環境とは
-
僕の彼女が“amwayのディストリ...
-
メーカー小売希望価格?・・・
-
市場(いちば、しじょう)の使い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"スレスレ" "ギリギリ" を丁寧...
-
「新商品」と「リニューアル商...
-
持ち運びできるクーラー探して...
-
スギ薬局でクロックス風のが売...
-
皆さんなら現品限り(展示品)の...
-
excel VBAで、置換した結果を別...
-
シュガーレディーの無料試食会...
-
セブンイレブン無料引換券の対...
-
スリムドカンなどまるかん製品...
-
「売れ筋」に対して???
-
エクセルを使って、商品管理を...
-
TextBox.2 に Vlookupを入れる...
-
歩数計アプリが増えてきました...
-
Safariでビジターアンケート参...
-
グループの最後の行に書式、計...
-
ヤマダ電機OP!先着商品をゲッ...
-
サイトへアクセスされる優先順位
-
キツネみたいなブランドの名前...
-
USB4 Version 1.0の最大伝送距...
-
VOCALOIDのVY2
おすすめ情報