function - 通过函数返回本地存储的记录集
问题描述
我在 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
推荐阅读
- node.js - Mongoose 连接到身份验证数据库语法以包括 auth 和 useNewUrlParser 选项
- c# - 使用 Delegate.CreateDelegate 将可变参数函数转换为 System.Action
- asp.net - 无法加载文件或程序集“System.Runtime.InteropServices.RuntimeInformation”
- excel - 测试 VBA rnd 函数的随机性
- java - removeIf 实现细节
- php - __construct 不创建新数组
- google-apps-script - 如何通过 GAS 在 Google 表单中的问题中添加图像?
- java - 使用 dns 种子列表和 java 客户端连接到 MongoDB 3.6
- grails - 创建域类时是否应该自动生成表?
- docker - 创建一个引用 Github 包上的图像的 Github Docker 容器操作