■26364 / inTopicNo.3) |
Re[2]: vbsから実行したSQLスクリプトファイルの結果取得方法 |
□投稿者/ soba (3回)-(2008/10/07(Tue) 18:53:15)
|
■No26355 (たくボン さん) に返信
> vbscriptはあまり使わないので、スマートな方法かどうかはわかりませんが、リダイレクトして結果をファイルに落としてみては?
> コマンドプロンプトで結果が表示されると言うことは、標準出力に結果が出ているので、それをリダイレクトすれば後は普通にファイルを読み込むだけですし。
> リダイレクトの方法とかは、この辺りが参考になるかも。
> http://winofsql.jp/VA003334/vbsguide051215192026.htm
たくボンさん、お返事ありがとうございます。
早速ご提示頂きましたURLを参考に、vbscriptを記述してみました。
なお、最初の投稿時のコードはミスがあったため、その部分も修正しております。
(文字列内にて変数を使用していました。。。)
■test.vbs
---------------------------↓ここから↓----------------------------------
strID = "ID"
strPsw = "パスワード"
strSvr = "サーバ名"
strDb = "DB名"
OutPath = "標準出力内容を出力するテキストファイルのパス"
strFile = "スクリプトファイルのパス"
intID = "ストアド内にて行われるSelect分の条件となるID"
Set WshShell = WScript.CreateObject("WScript.Shell")
Call WshShell.Run("cmd.exe /c sqlcmd -U " & ID & " -P " & strPsw & " -S " & strSvr & " -d " & strDb & " -i " & strFile & " -v NUMBER=" & intID & " > " & OutPath, 0, True)
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Set objHandle = objFso.OpenTextFile(OutPath, 1)
If Not objHandle.AtEndOfStream Then
strResult = objHandle.ReadAll
End If
objHandle.Close
---------------------------↑ここまで↑----------------------------------
■test.vbs実行結果
---------------------------↓ここから↓----------------------------------
NAME
------------------------------
hoge
(1 行処理されました)
---------------------------↑ここまで↑----------------------------------
標準出力内容を'strResult'という変数に取得できたのですが、
上記のようになりました。
結果の取得には成功したものの、カラム名と半角ハイフンと処理行数も出てしまい、
たくボンさんには大変申し訳ないのですが、望み通りの結果ではありませんでした。
ただコマンドプロンプトをほとんど使用したことがなかったため、
標準出力という機能を知るきっかけとなり、大変感謝しております。
ありがとうございました。
必要行のみ取り出してTrim関数でスペースを削るという方法で、無理やり処理を通すこともできそうですが、
あまり確実な方法とは思えませんので、
引き続き、他の方法をご存知の方がいらっしゃいましたら、ご教示頂けましたら幸いです。
|
|