如何从Access数据库中读取多个列?

时间:2016-02-28 14:17:36

标签: excel vba excel-vba access-vba

我被分配了从Access计算某些值并将它们存储到Excel的任务。如果我使用单列数据库,我的代码可以正常工作。

我的代码如下所示:

With Recordset
        Source = "SELECT tbl_cog.[Latitude] FROM tbl_cog WHERE Company='Bandung Food Truck Festival Members'"
        .Open Source:=Source, ActiveConnection:=Connection
        For Col = 0 To Recordset.Fields.Count - 1
            TextBox1.Value = Recordset.Fields(Col).Value
        Next
    End With

但是当我想读取多列时,我的代码只读了一列。我的代码如下所示:

With Recordset
        Source = "SELECT tbl_cog.[Latitude], tbl_cog.[Longitude] FROM tbl_cog WHERE Company='Bandung Food Truck Festival Members'"
        .Open Source:=Source, ActiveConnection:=Connection
        For Col = 0 To Recordset.Fields.Count - 1
            TextBox1.Value = Recordset.Fields(Col).Value
            TextBox2.Value = Recordset.Fields(Col).Value
        Next
    End With

更新:

我的程序有1列,如下所示:https://prntscr.com/a90g5z

我的程序包含2列,如下所示:https://prntscr.com/a90gpi

我的数据库访问方式如下:https://prntscr.com/a90h0q

2 个答案:

答案 0 :(得分:2)

假设Recordset中只有一条记录,那么您应该更正您的代码,如下面的代码段所示:

TextBox1.Value = Recordset.Fields(0).Value
TextBox2.Value = Recordset.Fields(1).Value

等等(如果您有两个以上的字段)。显然,您不需要For循环来完成此任务。

答案 1 :(得分:1)

我使用此方法将数据从Access传入Excel:

DataArray = Recordset.GetRows()  'all the data from the Select is transferred to an array
nb_rows = UBound(DataArray, 1)  'calculate the number of rows of the array
nb_cols = UBound(DataArray, 2)  'calculate the number of columns of the array

'paste the array to excel
Sheets(1).Range(Cells(1, 1), Cells(nb_rows, nb_cols)).Value = DataArray

'如果你想要前3列,只需用Cells替换Cells(nb_rows,nb_cols)(nb_rows,3)

使用此代码替换"对于col = 0到Recordset.Fields.Count - 1 .... next"