我有一个疑问:
sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5'
但我不知道浏览我的结果。
我尝试了这个,但不起作用
req.Open sqlPU, oConn
If Not req.EOF Then
Set resultSet = oConn.Execute(sqlPU)
For Each result In resultSet
WScript.Echo resultSet.Fields(num_uti).Value
Next
End if
最佳答案
尝试像这样重构代码;
Dim oConn, req, sqlPU
'Create connection
Set oConn = CreateObject("ADODB.Connection")
Call oConn.Open("yourconnectionstring")
'Set query
sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5'"
'Open recordset
Set req = CreateObject("ADODB.Recordset")
Call req.Open(sqlPU, oConn)
'Loop the return data
Do While Not req.EOF
'Output field called num_uti.
WScript.Echo req.Fields("num_uti").Value
'Move to next record
Call req.MoveNext()
Loop
'Clean-up
Call req.Close()
Set req = Nothing
Call oConn.Close()
Set oConn = Nothing
问题中的代码有一些问题,
sqlPU
查询字符串缺少字符串终止字符("
),将导致语法错误。- 当您在
ADODB.Recordset
上调用.Open()
时,它会被填充,并且可以使用Do
循环和进行遍历>.MoveNext()
方法,您不需要执行额外的.Execute()
操作,并再次重新运行相同的查询。.MoveNext()
方法告诉ADODB.Recordset
将其指针移动到第 1 条记录,一旦到达末尾,.EOF
的值将等于True
。如果没有.MoveNext()
,指针将不会移过文件末尾 (EOF),并且循环将无限期运行或直到脚本失败,这两者都不是很好。 - 使用
.Fields()
集合引用列需要索引(从 0 开始的序数值) 或包含列别名的字符串(在本例中“num_uti”
)。在原始代码中,列别名不是字符串,这意味着 VBScript 会假定它是一个名为num_uti
的变量,并且由于num_uti
未初始化,因此会失败。
关于vbscript - 如何浏览查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41182127/