我有一个SQL 2005表,其中包含许多(84个特定的)字段(实际上它是一个过程返回的查询) 看起来当我访问后面放置的记录集字段时,之前放置的某个字段变为空,而服务器实际上为它返回了一个值 有这样的问题吗? 我的解决方案是把这个消失的字段放在一个表的末尾,所以当稍后通过代码(这里是VBA)访问它时它的值仍然可以访问但是我认为它是ADODB.Recordset 2.8中的一个大问题,因为我不应该在乎关于现场订单 我知道这个问题不是很具体,但也许有人有类似的问题吗?
答案 0 :(得分:0)
确保字段值的一种方法是将记录集传递给类似的数组(您必须构建自己的连接函数):
Function getStoredProcedure() As Variant
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim conn As ADODB.Connection
Dim values As Variant
Set conn = getConn("Server", "Database")
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "StoredProcedureName"
cmd.Parameters.Item("@TODAY") = today
Set rs = cmd.Execute
If Not rs.EOF Then
values = rs.GetRows
Else
Exit Function
End If
Set cmd = Nothing
getStoredProcedure= transposeArray(values)
End Function
从那里你总是可以从数组中检索值。否则,在没有看到你的代码或理解你想要做什么的情况下,我无法判断这是否真的是ADODB的一个问题,因为当我按照我想要的任何顺序提取字段项时我无法重新创建此问题,例如:rs.Fields.Item(i).Value
for i =任何顺序的任何数字。