我被分配了从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
答案 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"