今VBAとMySQLの勉強しています。わからないのが以下のことなので質問させていただきたいです。
Excelの指定したセルに入ってる値をMySQLデータベースのテーブルに新しいレコードとして
追加する場合どのようなコードにしたらいいですか?
イメージとしては以下コードのようなイメージなんですが、これで正しい場合は
値を取得するセルをB2とした場合、SQL文のValue以降のコードはセルをどう指定すればいいですか?
value以降にセルを指定した場合エラーになりましたが、直接値を入れた場合はデータベースにレコードが追加されていました。
なので考え方はあってるのかなとか勝手に思ってますが…
もしSQL文自体や考え方が違っていた場合どういったコードにするのが正しいですか?
いろいろ試してるのですがうまくいかないので教えていただけると助かります。よろしくお願いいたします。
VBA
1コード 2Dim con As Object 3Dim SQL1 As String 4 5Set con = CreateObject("ADODB.Connection") 6con.connectionString = "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _ 7 " SERVER=localhost;" & _ 8 " DATABASE=practice;" & _ 9 " UID=root;" & _ 10 " PWD=sample;" 11con.Open 12 13Dim SQL1 As String 14SQL1 = "Insert into syouhin_table(商品名,新商品フラグ,見積フラグ)Value()" 15con.Execute SQL1
以下試してみたコードです。セルを指定してマクロを実行すると
-2147217900(80040e14)オートメーションエラーです"となります。
vba
1'value以降に直接値を入れた場合。 2SQL1 = "insert into syouhin_table(商品名,新商品フラグ,見積フラグ)value('お菓子',0,1)" 3 4'value以降にセルを指定した場合 5SQL1 = "insert into syouhin_table(商品名,新商品フラグ,見積フラグ)value(" & Cells(2, 2).Value & ",0,1)" 6SQL1 = "insert into syouhin_table(商品名,新商品フラグ,見積フラグ)value(Cells(2, 2).Value,0,1)"
以下レコードを追加したいテーブル
mysql>show fields from syouhin_table;
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| 商品ID | int(10) | NO | PRI | NULL | auto_increment |
| 商品名 | varchar(50) | NO | UNI | NULL | |
| 新商品フラグ | tinyint(1) | NO | | NULL | |
| 派生ID | int(10) | YES | | NULL | |
| 見積フラグ | tinyint(1) | NO | | NULL | |
| 発売開始日 | date | YES | | NULL | |
| 販売終了日 | date | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
回答1件
あなたの回答
tips
プレビュー