※ ChatGPTを利用し、要約された質問です(原文:【お願いします助けてください】Exel+MySQL)
【お願いします助けてください】Exel+MySQL
このQ&Aのポイント
エクセルでMYSQLを扱おうとしています。色々やっているのですが、以下のようなユーザー関数を作ってエクセルからMYSQLにデータを登録しようと試みました。指定した値が半角英数であればちゃんとうまくいくのですが、全角を指定すると、syntax errorになることです。
また、コマンドプロンプト上からであれば、なぜか全角で指定してもエラーがでないのです。フィールドのデータ型はtext型のやつに上のマクロを試してみました。
エクセルでMYSQLにデータを登録しようとする際に、全角を指定するとsyntax errorが発生する問題があります。なぜコマンドプロンプト上ではエラーが発生せずに正しく登録できるのか不明です。
【お願いします助けてください】Exel+MySQL
エクセルでMYSQLを扱おうとしています。
色々やっているのですが、以下のようなユーザー関数を作ってエクセルからMYSQLにデータを登録しようと試みました。引数が変ですが、table_nameでテーブルを指定します。set_data(0)でフィールド名、set_data(1)がset_data(0)で指定した値を設定し、データを書き込む、以下続くという感じになっています。
例えばこういう感じで引数を設定すると、
Call Set_Record("post_data", "post_number", "000-000", "first_section", "大日本県", "second_section", "大日本市大日本町", "third_section", "365-1452")
MYSQL上では
insert into post_data set post_number = 000-000 , first_section = 大日本県 , second_section = 大日本市大日本町 , third_section = 365-1452 ;
という感じの命令が実行されるというだけのものです。
これで分からないのは、指定した値が半角英数であればちゃんとうまくいくのですが、全角を指定すると、syntax errorになることです。しかし、コマンドプロンプト上からであれば、なぜか全角で指定してもエラーがでないのです。なんかもうちんぷんかんぷんでわけ分からん感じです。フィールドのデータ型はtext型のやつに上のマクロを試してみました。
Function Set_Record(table_name As String, ParamArray set_data() As Variant)
Dim cn As Variant
Dim set_sql As String
Dim i, j As Integer
'** ODBC 接続
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=msdasql.1;data source = test;"
cn.CursorLocation = 3
'** トランザクション開始
cn.BeginTrans
set_sql = "insert into" & Chr(32) & table_name & Chr(32) & "set "
For i = 0 To UBound(set_data)
If i Mod 2 = 0 Then
set_sql = set_sql & set_data(i) & Chr(32) & "=" & Chr(32)
Else
If i <> UBound(set_data) Then
set_sql = set_sql & set_data(i) & Chr(32) & "," & Chr(32)
Else
set_sql = set_sql & set_data(i) & Chr(32) & ";"
End If
End If
Next
MsgBox set_sql
cn.Execute set_sql
'** トランザクション終了
cn.CommitTrans
お礼
それだーーー!!!!! ありがとうございます! そうですよ、それです! わたしゃあアホですな! ありがとうありがとう!