ADODB Recordset字段访问顺序给出空值

时间:2013-12-12 21:16:15

标签: sql-server vba ado

我有一个SQL 2005表,其中包含许多(84个特定的)字段(实际上它是一个过程返回的查询) 看起来当我访问后面放置的记录集字段时,之前放置的某个字段变为空,而服务器实际上为它返回了一个值 有这样的问题吗? 我的解决方案是把这个消失的字段放在一个表的末尾,所以当稍后通过代码(这里是VBA)访问它时它的值仍然可以访问但是我认为它是ADODB.Recordset 2.8中的一个大问题,因为我不应该在乎关于现场订单 我知道这个问题不是很具体,但也许有人有类似的问题吗?

1 个答案:

答案 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 =任何顺序的任何数字。

相关问题