怎样用VBA取得Access数据库中的查询结果?

DimMyDbAsDatabase'定义数据库对象DimMyDsAsRecordset'定义数据集对象DimCNNAsConnectionSetMyDb=CurrentD... Dim MyDb As Database '定义数据库对象
Dim MyDs As Recordset '定义数据集对象
Dim CNN As Connection
Set MyDb = CurrentDb '数据库为当前数据库
Dim i As Integer
Set MyDs = MyDb.OpenRecordset("Select Flux_Amount FROM Mytable", , dbReadOnly)

Debug.Print MyDs.RecordCount

For i = 0 To MyDs.RecordCount - 1
MsgBox CStr(MyDs.Fields(0))
Next i

问题是Mytable中有64条记录,但是查询结果只显示了1条。

请问,怎么才能将这64条记录都取出,并通过VBA传递给一个数组A呢?

谢谢!
谢谢yuan710825,但是我的问题的重点是,将全部记录取出。表单中明明有64条记录,但是总是只能显示一条。Debug.Print MyDs.RecordCount显示的结果也是1.
请问,怎么解决呢?
展开
 我来答
yuan710825
2009-06-09 · TA获得超过187个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:472万
展开全部

对于这种写法不是很了解,如果用ado+sql可以帮到你。

Sub bb()

Dim cnn As ADODB.Connection

Dim rs As ADODB.Recordset

Set cnn = New ADODB.Connection

mydata = ThisWorkbook.Path & "\123.mdb"

With cnn

.Provider = "microsoft.jet.oledb.4.0"

.Open mydata

End With

Set rs = New ADODB.Recordset

Sql = "select Flux_Amount from Mytable"

rs.Open Sql, cnn, 3, 2

ReDim arr(rs.RecordCount)

For i = 0 To rs.RecordCount - 1

arr(i) = rs.Fields("Flux_Amount")

rs.MoveNext

Next i

MsgBox Join(arr, ",")

End Sub

应该说这种用法比较主流,复制代码到vbe,然后引用ado 2.8,将access与excel文件放在一个文件夹,将数据库名变动一下,就可以测试了。(要改为同你的access,表名,字段名一致)

匿名用户
推荐于2017-10-06
展开全部
用DAO,可以在VB添加DAO组件。然后,定义参数。

'Database Connection
Dim cn As Workspace
Dim db As Database
Dim Rs As Recordset
Dim YOURPWD$, strSQL$, sContent$

'设置数据库
Set cn = DBEngine.Workspaces(0)
Set db = cn.OpenDatabase(sDbPath, False, False, ";pwd=" & YOURPWD)

'打开数据库
strSQL = "Select * From YourTable"
Set Rs = db.OpenRecordset(strSQL, , dbReadOnly)

'取出一个不为NULL的字符串字段值
sContent = trim$(Rs!Item1)

--------------------------------------------------------------
'使用前提在VB中加入VB组件
Dim xlsApp As Object, xlsBook As Object, xlsSheet As Object
Dim Row&, Col&

On Error GoTo ExcelInport_Err
'创建应用Excel程序
Set xlsApp = CreateObject("Excel.Application")
'Excel WorkBook 的添加
Set xlsBook = xlsApp.Workbooks.Add
’取得活动的Excel Sheet
Set xlsSheet = xlsBook.ActiveSheet

'Excel Sheet的标题
xlsSheet.Name = "Your Sheet Name"

'Excel Sheet 内容的填充
With xlsSheet
Row = 1 '行
Col = 1 '列
.Cells(Row, Col).Value = "Your Fill Content"
End With

‘Excel
xlsApp.Visible = True

Set xlsSheet = Nothing
Set xlsBook = Nothing
Set xlsApp = Nothing
Exit Sub

ExcelInport_Err:
'关闭时没有消息框
xlsApp.DisplayAlerts = False
xlsApp.Quit
Set xlsApp = Nothing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-06-08
展开全部
For i = 0 To MyDs.RecordCount - 1
MsgBox CStr(MyDs.Fields(0))
MyDs.movenext
Next i
你少了这句:“MyDs.movenext”记录向下移动。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式