如何解决在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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。