電子書籍の厳選無料作品が豊富!

いつも楽しく勉強させていただいております。

環境はWin7、Office2007、MySQL5.5.28です。
データはMySQL上にあり、それを集計した結果をExcelまたはcsv形式で取り出すプログラムを開発中です。

集計の表側(ブレークダウン)や絞込みの条件は可変なので、AccessでMySQLに渡すコマンドを編集し、テキストファイルとして出力します。

このテキストファイルを実行するのに目下のところ次の二通りで行っています。

1.MySQLのクライアント画面から下記のように実行

source C:\Users\meglin\Documents\サマリー.sql

2.コマンドプロンプト画面から下記のように実行

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql

どちらの方法でも快適に動きます。

近々そのプログラムを運用ベースに乗せたいのですが、オペレーションをする上司が「あの黒い画面(MySQLのクライアント画面/コマンドプロンプト画面)を触るのがコワイ。すべてAccessから対応できないか」と言います。

要するに上記コマンドのサマリー.sqlをAccessの中から起動したいのです。
できますでしょうか。

おそらくShell関数を使うのだと思って下記のように書いてみたのですが、うまく動いてくれません。

Shell("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql")

どうしたらいいでしょうか。

最初はAccessからMySQLにODBC接続とADOで1行ずつ実行してみたのですが、集計の列と行が多いので処理時間がかかり実用的ではありません。

A 回答 (1件)

>黒い画面



vbsなどで以下のような処理をしてみては?

'test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("コマンド・・・", 0)

この回答への補足

MySQLでなくWindowsの方に移動します。ありがとうございました。

補足日時:2013/02/26 09:56
    • good
    • 0
この回答へのお礼

yambejpさん、回答ありがとうございます。

結果からいうとNGでした。

Ret = WshShell.Run("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql",0)

としてみたのですが、結果は変わらず(正常に動けば集計後のイメージのテーブルができます)。

第二パラメータの0を取って


Ret = WshShell.Run("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql")

とやってみたのですが、黒い画面が一瞬開いて文字列がどーっと流れるのが見えるのでMySQLの起動はできているのだと思います。
yambejpさんのヒントは参考になりましたが、きっと私のサマリー.sqlファイルを渡す書き方がマズいのでしょう。

お礼日時:2013/02/22 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!