在VBA中将记录集存储到阵列

问题描述

我有一个动态函数调用存储过程,并将记录集存储在一个数组中,我想在另一个子数组中使用它。但是我没有在这样的数组中得到结果:

Array(0,0) = 1
Array(0,1) = Miller
Array(1,0) = 2
Array(1,1) = Jones
Array(2,0) = 3
Array(2,1) = Jackson
....

我的数组结果如下:

Array(0,0) = 1
Array(1,0) = Miller
Array(0,1) = 2
Array(1,1) = Jones
Array(0,2) = 3
Array(1,2) = Jackson
....

要了解该过程,我向您展示sql-statement

CREATE PROCEDURE dbo.sp_GetAllPersons
AS
BEGIN
    SET NOCOUNT ON;

    SELECT disTINCT u.ID,u.Name
    FROM dbo.v_Users u
END
GO

获取记录集并将其存储在数组中的函数

Public Function fgetDataBySProc(ByVal sProcName As String) As Variant
    ...
    
    Dim Cmd As New ADODB.Command
    With Cmd
        .ActiveConnection = cn
        .CommandText = sProcName
        .CommandType = adCmdstoredProc
    End With
    
    Dim ObjRs As New ADODB.Recordset: Set ObjRs = Cmd.Execute
    Dim ArrData() As Variant
    
    If Not ObjRs.EOF Then
        ArrData = ObjRs.GetRows(ObjRs.RecordCount)
    End If
    
    ObjRs.Close
    cn.Close
    
    fgetDataBySProc = ArrData
End Function

调用函数的子项:

Public Sub cbFillPersons()
    Dim sProcString As String: sProcString = "dbo.sp_GetAllPersons"
    Dim ArrData As Variant: ArrData = fgetDataBySProc(sProcString)   
    Dim i as Integer
    
    ' Just for testing
    For i = LBound(ArrData) To UBound(ArrData)
        Debug.Print "AddItem: " & ArrData(0,i)
        Debug.Print "List: " & ArrData(1,i)
    Next
End Sub

我不知道我在做什么错。也许是.GetRows()方法

解决方法

转置2D数组

  • 您可以使用function Main(props) { const [change,setChange] = useState(0); const [change1,setChange1] = useState(0); function changeOver() { setChange(1) } function changeOut() { setChange(0) } function changeOver1() { setChange1(1) } function changeOut1() { setChange1(0) } return ( <section className="test2"> <div className="navbar"> <a href="#" onMouseEnter={changeOver} onMouseLeave={changeOut}> <span>Végétarien </span> <img src={change ? vegeColor : vege } style={{ height: '1.8em' }}/> </a> <a href="#" onMouseEnter={changeOver1} onMouseLeave={changeOut1}> <span>Poisson </span> <img src={change1 ? seafoodColor : seafood } style={{ height: '1.8em' }} /> </a> </section> ) } 函数转置结果数组。

  • 然后,您的getTransposedArray函数中的最后一行将是:

    fGetDataBySProc

功能

 fGetDataBySProc = getTransposedArray(ArrData) 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...