[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「演算子がありません。」のエラーを修正したい。』(佐々木)
お世話になります。
下記のサイトを参考にExcelVBAからAccessにデータ更新するプログラムを作成したいと考えております。
https://tonari-it.com/excel-vba-access-update-records/
プログラムを実行したら「演算子がありません。」とエラーが出ました。
おそらくExcelのD列のフィールドは文字列型のデータであるからだと思い
『ws.Range("D1").Value & "=" & ws.Cells(i, 4).Value & "," & _』 を 『ws.Range("D1").Value & "=" '& ws.Cells(i, 4).Value &' "," & _』 に変更しましたが同じエラーが出ました。
どこを変更すればよいでしょうか?
Option Explicit
Sub データ更新()
Dim Updatesht As Worksheet Set Updatesht = ThisWorkbook.Worksheets("Sheet1")
Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & "C:\Users\my-note\Desktop\新しいフォルダー\test\test.accdb" & ";" adoCON.Open
Dim adoRs As Object Set adoRs = CreateObject("ADODB.Recordset")
Dim strSQL As String
Dim i As Long i = 2
Do While seibutsuUpdatesht.Cells(i, 1).Value <> ""
strSQL = _ "UPDATE T_データ更新 " & _ "SET " & _ Updatesht.Range("E1").Value & "=" & Updatesht.Cells(i, 5).Value & "." & _ Updatesht.Range("G1").Value & "=" & Updatesht.Cells(i, 7).Value & "." & _ " WHERE ID = " & Updatesht.Cells(i, 1).Value
adoCON.Execute strSQL i = i + 1
Loop
adoCON.Close
Set adoCON = Nothing
End Sub
< 使用 Excel:Excel2019、使用 OS:Windows10 >
UPDATE T_データ更新 SET [E1]=[E2].[G1]=[G2]. ←ココが意味不明になっちゃってるんだと思います。 WHERE (実際、私にも求める構文の推測すらできません。これでは) ID = [A2]
[テーブル名].[カラム名] = [テーブル名].[カラム名]
か、
[カラム名] = [カラム名],[カラム名] = [カラム名]
のどちらかじゃないのかな? 程度の予想しか...
(白茶) 2021/10/12(火) 19:03
参考にされたページとほぼほぼ同じ事をなさろうとしているのであれば
"SET " & _ Updatesht.Range("E1").Value & "=" & Updatesht.Cells(i, 5).Value & "," & _ Updatesht.Range("G1").Value & "=" & Updatesht.Cells(i, 7).Value & _ " WHERE ID = " & Updatesht.Cells(i, 1).Value
という感じでしょうか...ね? (たぶんですけど^^;)
(白茶) 2021/10/12(火) 19:35
白茶さんご返信ありがとうございます。
> UPDATE T_データ更新 SET [E1]=[E2].[G1]=[G2]. ←ココが意味不明になっちゃってるんだと思います。 WHERE (実際、私にも求める構文の推測すらできません。これでは) ID = [A2]
Excelのシートはこのような感じで、 [フィールド名]=[値] となっています。E列のフィールドは更新できますが、G列が更新 出来ない状態です。
|___A____B__________C______D______E_________F______G___ 1 | ID 分類 名前 担当者 評価1 評価2 販売店 | 2 | 1 おもちゃ ぬいぐるみ 119 1 2 aaa店 | 2 おもちゃ ラジコン 120 2 2 bbb店 3 | : :
"SET " & _ Updatesht.Range("E1").Value & "=" & Updatesht.Cells(i, 5).Value & "." & _ Updatesht.Range("G1").Value & "=" & Updatesht.Cells(i, 7).Value & _ " WHERE ID = " & Updatesht.Cells(i, 1).Value
↑の"."を","に修正しましたら、エラーが『一つ以上の必要なパラメータの値が設定されていません』になってしまいました。 フィールド名とテーブル名が間違っていない場合、他の原因はなんでしょうか?
(佐々木) 2021/10/13(水) 12:14
↓ココはピリオドじゃなくてカンマですね "SET " & _ Updatesht.Range("E1").Value & "=" & Updatesht.Cells(i, 5).Value & "." & _ Updatesht.Range("G1").Value & "=" & Updatesht.Cells(i, 7).Value & _ " WHERE ID = " & Updatesht.Cells(i, 1).Value
(白茶) 2021/10/13(水) 13:03
それでもダメなら一旦 strSQL をイミディエイトにプリントして確認してみたらどうでしょ? なんかどっかに構文の間違いがあるんだと思います (けど私なんかにわかるかな...)
(白茶) 2021/10/13(水) 13:05
あ。そうか。 >一つ以上の必要なパラメータの値が設定されていません ってエラーメッセージから推測しないとですね^^;
試しに・・・
"SET " & _ Updatesht.Range("E1").Value & "=" & Updatesht.Cells(i, 5).Value & "," & _ Updatesht.Range("G1").Value & "='" & Updatesht.Cells(i, 7).Value & "'" & _ " WHERE ID = " & Updatesht.Cells(i, 1).Value
あるいは[G1]の「販売店」って文字列がそもそもカラム名として正しくないとか? (それはないか^^;)
(白茶) 2021/10/13(水) 13:11
白茶さんありがとうございます。
シングルクォーテーションを入れてみたら、出来ました!
やはりSQLは難しいですね。^^; (佐々木) 2021/10/13(水) 13:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.