![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ExcelでMySQLを使おうと色々やっています。
エクセルからMySQLへデータを送る(?)ときに、全角文字が正しく転送(?)されていない感じなのです。具体的な例を挙げます。
・【test】というデータベースがある
・そのなかに【data】というテーブルがある
・【data】の中には【name】というフィールドがある
状況はこんな感じです。ここにデータを送るために以下のようなマクロを組みました。
Sub Set_Record(SET_DATA As String)
Dim cn As Variant
Dim sql As String
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=msdasql.1;data source = test;"
cn.CursorLocation = 3
set_sql = "insert into data(name) values ( " & Chr(34) & SET_DATA & Chr(34) & ");"
cn.Execute set_sql
cn.Close
End Sub
引数SET_DATAに指定した文字列をデータベース【test】の【data】テーブルの【name】というフィールドにセットするというだけのものです。
ここでセットする文字数【SET_DATA】に、半角英数文字を指定すると、これはうまくいきます。確認するとちゃんとデータが入っていました。
しかしセットする文字数【SET_DATA】に全角文字列を指定すると、syntax error とかいうMySQLのエラーが出てしまいます。ここでエラー内容がVBAのエラーダイアログに表示されるのですが、【correct string value '\x88\xA2・・・・' for column 'data' at row 1】という感じで表示されます。あまり良く分かりませんがとりあえず【'\x88\xA2・・・・'】というデータは入力できません、ということなのでしょうが、指定したのは例えば【あいうえお】や【小泉純一郎】などの全角文字列なのです。これって何かエクセルからMySQLへの転送のときに、変な感じになっちゃっているということなのだと思うのですが、私にはなんだか全然分かりません。
お願いします。助けてください!!!!!!!!!!!
※下に同じ質問がありますが、質問に記載したコードが間違っていたので、『コードが間違っているからできないんじゃないの?』というご指摘を回避するために、コードを直してもう一度同じ質問をさせていただきました。下の質問は回答がつかなければ、早急に削除します。
実際には別のマクロで掲載の問題が起こったのですが、教えてgooに書き込むにはちょっと長かったので質問用に同様の問題が起きるコードを短く書いたのですが、実行しないで投稿してしまい、こういう感じになっちゃいました。すみません。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>文字コードの情報は何を書けば良いでしょうか?
「status」コマンドや「show variables like '%char%'」を入力すると、サーバやクライアント、DBの文字コードの設定内容が表示されるはずです。
それらが、SJISになっていますか?
SJISになっているなら、以下の設定をしてみてください。
<方法1>
ODBCの設定画面の「Connect Option」タブに、Initial Statement という入力個所があるので、「SET NAMES SJIS」または「SET CHARACTER SET SJIS」を設定
<方法2>
(1)MySQL 5.0.13以降なら、my,ini またはmy.cnf のmysqld セクションに下記を追加
skip-character-set-client-handshake
(2)そして、MySQLを再起動
No.1
- 回答日時:
>※下に同じ質問がありますが、~もう一度同じ質問をさせていただきました。
下の質問は回答がつかなければ、早急に削除します。規約違反ですよ?
回答があるかを待つのでなく、早急に削除してください。
仮に誰かが回答してくれても、あなたが確認する前に削除されるかも知れません。
こういう質問をする場合は、MySQLのバージョン、文字コードといった情報を書きましょう。
(1)最初のSQLを実行する前に、「set names sjis」を実行してみてください。
(2)SQLが入力できる状態で、「status」または「show variables like '%char%'」といったコマンドを入力すると、文字コードの設定がどうなるか確認できるので確認してください。「sjis」等になってないと、日本語は扱えません。
この回答への補足
>規約違反ですよ?
>回答があるかを待つのでなく、早急に削除してください。
すみません。消したいのですが、多分投稿してから一定時間たたないと削除できないようなので(マイページからこの質問の削除をできるようですが、その削除ボタンが押せない感じです)、このようにしました。
文字コードの設定は最初からsjisにしてあります。
質問に記載するのを忘れていましたが、コマンドプロンプトからの入力であれば日本語の全角文字もちゃんと入力できることは確認できています。
>こういう質問をする場合は、MySQLのバージョン、文字コードといった情報を書きましょう。
MySQLのバージョンは5.0です。文字コードの情報は何を書けば良いでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【再質問】ExecelからM...
-
ワークテーブルなのに自動で削...
-
ROWNUMでUPDATEをしたいのです...
-
論理名とコメント構文(?)について
-
テーブル名をカラムとして取得...
-
Accessでデータシートに同じデ...
-
SQL*LoaderでCSVから指定した列...
-
SQL Server management studio ...
-
SQL、2つのテーブルで条件一致...
-
SQLにて指定日付より前、かつ最...
-
update文で改行を入れる
-
男性と2人で飲食店に行きテーブ...
-
他のデータベースとのテーブル結合
-
SELECT 文の NULL列は?
-
特定のカラムが更新されたとき...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
LONG型の先頭250バイトを Varch...
-
2台のサーバー間でのテーブル...
-
結合テーブルでINSERTする方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel テーブル内の空白行の削除
-
ACCESSのマクロでテーブルのデ...
-
トリガって、自分自身のテーブ...
-
物理削除と論理削除、どっちが...
-
大量のレコードを削除する方法
-
列のDEFAULT設定を削除するコマ...
-
アクセス2010について
-
CSVファイルから一括して削除す...
-
アクセスのクエリでレコード削...
-
ワークテーブルなのに自動で削...
-
リサイクルビンのテーブル削除方法
-
【ACCESS2000】 VBAでリレーシ...
-
ここで言う参考書のエイリアス...
-
access2010 モジュールで exc...
-
HiRDBのPURGEとDROPの違い
-
すべてのテーブル削除
-
ACCESSのデータ入力時の「メモ...
-
Access2000の削除クエリで消し...
-
連番をふり直した後の文字の桁...
-
mysqlで間接クエリー実行させた...
おすすめ情報