1

我正在尝试连接到 SQL 服务器(本地主机)并提取以下内容:

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没有缺少任何括号。删除它们(并阅读 Eric Lippert 关于 VBScript 括号的最棒的博客文章)。该行中缺少的是行尾的行继续字符 ( _)。在 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)

或将整个语句放在一行中:

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 回答