2013-12-12 31 views
0

我得到了很多的SQL 2005表(84到具体)字段(实际上它是由程序返回的查询) 它看起来就像当我访问记录的字段后放置然后一些先前放置的字段变空了,而服务器实际上已经为它返回了一个值 有没有人有这样的问题? 我的解决方案是将这样的消失字段放在表的末尾,以便稍后通过代码(这里是VBA)访问它的值时仍然可以访问,但我认为它是ADODB.Recordset 2.8中的一个大问题,因为我不应该关心现场秩序 我知道这个问题不是很具体,但也许有人有类似的问题?ADODB记录字段访问顺序给出空值

回答

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 = any number以任何顺序。

+0

我知道GetRows的可以用来解决这个问题,但它使得使用记录比较烦琐:(我会尽量准备测试SQL /代码重现它 – Kodak