从数组中的记录集中获取字段名称

Get fields names from a recordset in an array

我写了一个函数来从 adodb 记录集中获取字段名称到一个数组中(在 VBA 中)并且它工作正常。

现在我正在尝试将代码传输到 vb.net 但我被困在这个函数上:

这是 VBA 工作代码:

Public Function NomiCampi(MyRs As ADODB.Recordset, ByRef Dest())
Dim Flds, i%
Set Flds = MyRs.Fields
ReDim Dest(Flds.Count - 1)
For i = 0 To Flds.Count - 1
    Dest(i) = Flds(i).Name
Next i
End Function

我是这样使用的(其中 rs 是一个记录集,Campi 是一个字符串数组):

Call NomiCampi(rs, Campi)

我在 vb.net 中进行了多次尝试,但没有任何效果。这是实际代码(不起作用):

Public Function NomiCampi(ByVal MyRs As ADODB.Recordset) As String()
    Dim Matrice(), Flds, i%
    Flds = MyRs.Fields
    ReDim Matrice(Flds.Count - 1)
    For i = 0 To Flds.Count - 1
        Matrice(i) = CStr(Flds(i).Name)
    Next i
    NomiCampi = Matrice
    Stop
End Function

我哪里错了?

首先,更改您的函数,使其实际上 returns 某些东西:

Public Function NomiCampi(ByVal MyRs As ADODB.Recordset) As String()
    Dim Matrice As String()
    Dim Flds As ADODB.Fields
    Dim i As Integer
    Flds = MyRs.Fields
    ReDim Matrice(Flds.Count - 1)
    For i = 0 To Flds.Count - 1
        Matrice(i) = CStr(Flds(i).Name)
    Next i
    Return Matrice
End Function

然后调用:

Dim Campi As String() = NomiCampi(rs)

或者,如果您已经声明 Campi:

Campi = NomiCampi(rs)