将数据集内容保存到变体数组 – VBA 与 VB.net

问题描述 投票:0回答:1

在 VBA 中,定义一个数组非常简单,使用 ADO(一个简单的 accdb 表)读取记录集,然后使用记录集中的信息填充该数组。假设我有一个包含 3 列的表格,A 是日期,B 是人员姓名,C 是每个人一天中的步数。因为我们处理数字和字符串,所以定义一个变体数组很简单:

Dim RS_CON As Object, RS_DATA As Object
Dim  connString as String, queryString as string
Dim OutputArr() as variant
Set RS_CON = CreateObject("ADODB.Connection")
Set RS_DATA = CreateObject("ADODB.Recordset")
RS_CON.Open connString
queryString="SELECT * FROM [TableName]"
RS_DATA.Open queryString, RS_CON, adOpenStatic, adLockOptimistic, adCmdText
OutputArr =RS_DATA.GetRows(RS_DATA.RecordCount)

生成的数组有 3 列和表的所有行,甚至没有指定数组的维度。此外,数组还保存各种数据类型。 但我该让谁在 VB.NET 中做同样的事情呢?

    RS_CON = New OleDbConnection With {
        .ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" &
        sourceFld & dbFileName & "; Persist Security Info=False;")
    }
    Try
        dtSet = New DataSet
        dtTables = dtSet.Tables
        queryString = "SELECT * FROM [TableName];"
        RS_CON.Open() '---> Open Connection To The DataBase File.
        dtAdapt = New OleDbDataAdapter(queryString, RS_CON)
        dtAdapt.Fill(dtSet)

        Dim Y() As Array '---> DOES NOT WORK!!

        RS_CON.Close()

感谢您提供任何提示/线索/指导。 斯特凡

arrays vb.net recordset
1个回答
0
投票

您可以使用

DataRow.ItemArray
属性将行作为数组获取。

VB.NET 中不存在

Variant
,请使用
Object
代替。

我还建议填写

DataTable
而不是
DataSet

Dim connectionString = "Data Source=localhost;Timeout=10;Database=Junk;Integrated Security=True;"
Dim strSql As String = "SELECT [Id], [Code], [Value] FROM [Table1]"
Dim dtb As New DataTable
Using cnn As New SqlConnection(connectionString)
  cnn.Open()
  Using dad As New SqlDataAdapter(strSql, cnn)
    dad.Fill(dtb)
  End Using
  cnn.Close()
End Using
Dim y() As Object = dtb.Rows(0).ItemArray
© www.soinside.com 2019 - 2024. All rights reserved.