vbscript - 如何浏览查询结果?

标签 vbscript

我有一个疑问:

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/

相关文章:

date - 如何在 Visual Basic Sc​​ript 中获取整数形式的月份?

regex - 带有字符 + 或 - 的 VBScript RegExp

c# - 如何在 C# 2.0 中从 List<> 获取最后一个对象

windows - 从 VBScript 中的 cmd/c 命令获取返回值

windows - 使用 Windows shell 脚本自动打开文件

excel - "Object Required"声明Excel.Application对象后出错

windows - 从另一个 VBScript 中终止一个 VBScript

excel - 如何从 VBScript 关闭 Excel 文件而不提示?

linux - 如何通过复制 CSV 文件并从 Linux 远程运行 VBA 宏来创建 Excel 文件

if-statement - vb脚本if语句