微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过函数返回本地存储的记录集

如何解决通过函数返回本地存储的记录集

我在 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 举报,一经查实,本站将立刻删除。