1

SQL サーバー (localhost) に接続して、以下を抽出しようとしています。

SELECT INVOICENO, SUPPLIERID, AMOUNT, DOCID
FROM ES_TRANS_HEADER
WHERE READYTOINVOICE = 1

次に、この情報をコンマで区切って .txt ファイルに入れる必要があります

これは私がこれまでに得たものです:

function accounting()
  Dim myStream, connection, myCommand, recValue
  Set myStream = CreateObject("ADODB.Stream")
  Set connection = CreateObject("ADODB.Connection")
  Set myCommand = CreateObject("ADODB.Command")
  connection.Open "Provider=SQLNCLI10;" & _
    "Data Source=localhost;" & _
    "Integrated Security=SSPI;" & _
    "Initial Catalog=SQLDatabase;" & _
    "User ID=;Password="
  myCommand.ActiveConnection=connection
  myCommand.CommandText="SELECT INVOICENO,SUPPLIERID, AMOUNT, DOCID FROM ES_TRANS_HEADER WHERE READYTOINVOICE = 1"
  SET recValue = myCommand.Execute()

  If Not recValue.EOF then
     MsgBox "INVOICENO = " & recValue(0) & vbcrlf & "SUPPLIERID=" & recValue(1) _
     & "AMOUNT="  &  recValue(2) & "DOCID=" & recValue(3)
  End If

  While Not recValue.EOF
    INVOICENO = recValue(0)
    SUPPLIERID = recValue(1)
    AMOUNT = recValue(2)
    DOCCID = recValue(3)
    recValue.MoveNext
  Wend
end function

私はここで正しい軌道に乗っていますか? もしそうなら、次に何をしようとすべきですか?

前もって感謝します

4

1 に答える 1

0

MsgBox括弧の欠落はありませんでした。それらを削除します (そして、VBScript の括弧に関する Eric Lippert の最も素晴らしいブログ投稿を読んでください)。その行に欠けているのは、行末の行継続文字 ( _) です。VBScript では、これがないと行を折り返すことができません。これを変える:

MsgBox ("INVOICENO = " & recValue(0) & vbcrlf & "SUPPLIERID=" & recValue(1)
& "AMOUNT="  &  recValue(2) & "DOCID=" & recValue(3))

これに:

MsgBox "INVOICENO = " & recValue(0) & vbcrlf & "SUPPLIERID=" & recValue(1) _
  & "AMOUNT="  &  recValue(2) & "DOCID=" & recValue(3)

または、ステートメント全体を 1 行に入れます。

MsgBox "INVOICENO = " & recValue(0) & vbcrlf & "SUPPLIERID=" & recValue(1) & "AMOUNT="  &  recValue(2) & "DOCID=" & recValue(3)

データベース接続に関しては、接続文字列が奇妙に思えます。ここで提供される情報によると、その接続文字列はミラーリングされたデータベースへの接続用です。代わりにこれを試してください:

db = "..."  'specify database name here
connection.Open "Provider=SQLNCLI10;" _
  & "Server=localhost;" _
  & "Database=" & db & ";" _
  & "Trusted_Connection=yes;"

それでも問題が解決しない場合: 接続のStateプロパティの値を確認します。

WScript.Echo connection.State

また、発生したエラー (エラー番号、エラー メッセージ、行番号)で質問を更新してください。

于 2013-09-04T08:59:12.080 に答える