皆様のお力をお貸しください。
今エクセルからボタン操作でMYSQLへの命令を実行するものを作成しています。
何とか
・エクセルからMYSQLへのデータ入力
テーブル作成・レコード入力・テーブル削除等
・txtデータをエクセルに取込
まではできたんですが
・エクセルからMYSQLへデータを外部出力する命令
を実行できません。
MYSQLでは
select from test into outfile c:/vb/test1.txt fields terminated by ',';
で外部出力されるのでこの命令文をVBE上で
sql = select from test1 into outfile
sql = sql & "c:/vb/test1.txt fields
sql = sql & terminated by ',';
で"c:~となってエラーとなります。
変数にいれてみたりと色々ためしましたがわかりません。
MYSQLでの命令がなのでそれをはずすことはできないと思うのですが、
VBEでは文字は"で囲むようになっていますし・・・。
よい方法があったら教えてください。
お願いいたします。
を~の中に書く場合は " としてあげます。(C言語の\のようなもん)
MsgBox 私の名前は "Blue" です。
ありがとうございます!!
早速試してみたところエラーもでませんでした!
でも実行しようとすると
Private Sub CommandButton5_Click()
'** MYSQLからの外部出力
Dim cn As Variant
Dim sql As String
'** ODBC 接続
Set cn = CreateObject(ADODB.Connection)
cn.Open dsn=MySQL;uid=**;pwd=***
cn.CursorLocation = 3
'** 外部出力
sql = select from test1 into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';
cn.Execute sql
'** ODBC 接続解除
cn.Close
End Sub
'-2147217865(80040e37)'オートメーションエラーとなりました。
上記ソースで間違っているところはどこでしょうか?
教えてください。お願いします。
> select from test1 into outfile c:/vb/test1_1.txt fields terminated by ',';
これって、SQL文あっていますか?(SELECTの後にいきなりFROMっていけったっけ?)
ADO関係なしに実行できるかテストしてみてください。
参考)
MySQL 4.1 リファレンスマニュアル :: 6 MySQL SQL言語リファレンス :: 6.4 データの
操作: SELECT、INSERT、UPDATE、DELETE :: 6.4.1 SELECT 構文
http://dev.mysql.com/doc/refman/4.1/ja/select.html
すいませんっ!!
*が抜けてました!!
sql = select * from car into outfile "c:/vb/test1_1.txt" fields terminated
by ',';
で1行でかくと成功しました!
行をわけて
sql = select * from car into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';
とするとエラーになります。
"b"a
というようにが三連続になるとちゃんと読込んでくれないんでしょうか?
a"bb"a
のようにしないと?
ひつひとつ考えて質問もまとめてきますので、今後もよろしくお願いいたします!
ありがとうございました!!
解決です!
普通に空白がないからなのでは?
>sql = select * from car into outfile
>sql = sql & "c:/vb/test1_1.txt" fields
>sql = sql & terminated by ',';
だと、
select * from car into outfilec:/vb/test1_1.txt filedsterminated by ',';
ですよね?
いろいろ検索してみてたけど、その構文でもいけるんだ。
sql = SELECT * INTO OUTFILE "C:/vb/test1_1.txt" FILEDS FIELDS TERMINATED
BY ',' FROM car;
かなぁとおもった。
FILEDS FIELDS
とかくのもあるんですね。
まだまだ奥が深いんですね!
ほんとにありがとうございます!
空白についてですが、
sql = select * from car into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';
とか
"c:/vb/test1_1.txt" fields
としてみたり色々試したんですが、だめでした。
何でなんでしょうね・・・。
いけると思ったんですけど・・・。
あ、だだの間違いです。
詳しくは先のリンクみてください。
# 最後のほうにあったの参考にしたから。
連結でダメになるとは考えにくいです。
Executeの前でメッセージボックスかなんかで確認してみてはどうでしょうか?
ありがとうございます。
確認してみます。
時間がかかるとは思いますが、確認してみます!!
本当にいつもありがとうございます。
疑問点が解決して助かっています!!