Ms access 设置报表的数据源
我试图在Access窗体中创建一个按钮,它将运行两个查询,然后获取结果记录集并将它们放入报告中。我已经到了按钮将调用模块的地步,它创建适当的记录集,然后创建报告。但是,报告是空白的,其中没有来自记录集的数据。我认为我的问题是,我没有正确分配报告的数据源,但我不知道如何解决这一问题Ms access 设置报表的数据源,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我试图在Access窗体中创建一个按钮,它将运行两个查询,然后获取结果记录集并将它们放入报告中。我已经到了按钮将调用模块的地步,它创建适当的记录集,然后创建报告。但是,报告是空白的,其中没有来自记录集的数据。我认为我的问题是,我没有正确分配报告的数据源,但我不知道如何解决这一问题 Private Function showReport(sectionHeading As String, SQL As String, recordset As ADODB.Recordset) Dim textBo
Private Function showReport(sectionHeading As String, SQL As String, recordset As ADODB.Recordset)
Dim textBox As Access.textBox ' textbox control
Dim label As Access.label ' label control
Dim report As report ' hold report object
Dim controlTop As Long ' holds top value of control position
Dim controlLeft As Long ' holds left value of control position
Dim title As String 'holds title of report
Dim i As Integer 'iterator
i = 0
title = sectionHeading
controlLeft = 0
controlTop = 0
Set report = CreateReport
report.Width = 8500
report.Caption = title
Set label = CreateReportControl(report.Name, acLabel, _
acPageHeader, , "Title", 0, 0)
label.FontBold = True
label.FontSize = 12
label.SizeToFit
For Each fld In recordset.fields
Set textBox = CreateReportControl(report.Name, acTextBox, _
acDetail, , fld.Name, controlLeft + 1500, controlTop)
textBox.SizeToFit
Set label = CreateReportControl(report.Name, acLabel, acDetail, _
textBox.Name, fld.Name, controlLeft, controlTop, 1400, textBox.Height)
label.SizeToFit
controlTop = controlTop + textBox.Height + 25
i = i + 1
Next
Set label = CreateReportControl(report.Name, acLabel, _
acPageFooter, , Now(), 0, 0)
Set textBox = CreateReportControl(report.Name, acTextBox, _
acPageFooter, , "='Page ' & [Page] & ' of ' & [Pages]", report.Width - 1000, 0)
textBox.SizeToFit
report.RecordSource = SQL
DoCmd.OpenReport report.Name, acViewPreview
recordset.Close
Set recordset = Nothing
Set report = Nothing
End Function
我得说你漏掉了一行 report.RecordSource=填充的查询 但我很确定,一定有比从头开始创建新报告更好的方法来实现您的目标 而且,将变量命名为数据类型标签、报告等是很容易出错的 编辑 您确定您的SQL是有效的吗?或者,您可以尝试将其保存为查询并传递查询名称 我做了一个小测试,基本上可以用。当我运行此命令时,r\tbProduct的记录源为空: Dim rep As报告 DoCmd.OpenReport r\u tbProduct,acViewDesign 设置rep=报告!产品 rep.RecordSource=从tbProduct中选择*,其中ID>=6 DoCmd.OpenReport r\u tbProduct,acViewPreview 它显示了正确的数据 我再次强烈建议您重命名变量 作为报告的Dim报告
只是在问问题。您将数据源设置为什么?在这里,您没有显示这一点—它是查询还是表—如果是查询,SQL是什么?如果您自己打开报告-是否有包含数据的页面?什么是CreateReport和CreateReportControl?您使用的是什么版本的MS Access?请更新您的标记。问题是我没有找到任何方法从报表外部的模块设置数据源。目的是使数据源成为一个查询。当我运行它时,报告以正确的格式打开,但没有任何数据,只有名称?在每一个领域。@dbmitch:它们是:和。通常使用这些方法构建向导@dbmitch:所有MSDN页面都是这样的。点击其他版本,ta da:我已经在中添加了这个,但现在它给了我一条错误消息,Microsoft Access数据库无法访问DoCmd.OpenReport行上的对象。此错误消息后面是我正在使用的SQL字符串。您到底添加了什么?请编辑您的问题。已编辑。我向函数和您建议设置recordsource的行中添加了一些新参数。添加recordsource行后,我开始出现错误:Microsoft Access数据库引擎找不到对象“SELECT…”。。。SQL字符串“”的其余部分。请参见编辑。不确定SQL是否有效。