如何解决通过函数返回本地存储的记录集
我在 VB6 中有一个功能性脚本,我需要将其迁移到 VBScript。作为代码重组的一部分,我决定对利用函数返回记录集感兴趣。想要处理与数据库的连接,以便事务关闭,因此将记录集写入内存对象对我来说很有意义。通过多次迭代试图确定我的语法到底有什么问题,我不确定哪个是最引人注目的。
Sub Main()
clientRecordset(" Exec [dbo].[StoredProc] ")
End Sub
Private function clientRecordset(sqlQuery)
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Dim objConnection,objRecordset
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
Set clientRecordset = CreateObject("ADODB.Recordset")
objConnection.Open _
"{connection properties}"
clientRecordset = objConnection.Execute(sqlQuery) ' Error: operation is not allowed when object is closed
clientRecordset = objRecordset.Open sqlQuery,objConnection,adOpenStatic,adLockOptimistic 'Error: Expected end of statement
objRecordset.close()
objConnection.close()
SET objRecordset = nothing
Set objConnection = nothing
End Function
解决方法
多年来我一直在生产中使用这样的东西。一旦我检索到 RecordSet,我就会循环它并使用字段分隔符 (FDel) 和行分隔符 (RDel) 将其连接成一个字符串,然后根据需要将它们拆分为一个数组。
objRecordSet.Open(Query,objConnection,adOpenStatic,adLockOptimistic)
objRecordSet.MoveFirst
Dim LCount = 0
Dim RCount = objRecordSet.RecordCount
Dim FCount = objRecordSet.Fields.Count
Dim FDel = "|"
Dim RDel = "$"
Dim Rows = ""
Do Until LCount = RCount
For i = 0 To (FCount - 1)
Fields = ""
Fields = objRecordSet.Fields.Item(i)
Rows = Rows & Fields & FDel
Next
Rows = Rows & RDel
objRecordSet.MoveNext
LCount = LCount + 1
Loop
Output = Rows
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。