尝试将SQL字符串分配给Access报告的记录源属性

时间:2016-09-07 14:57:24

标签: vba access-vba

我有一张如下图所示的表格。三个排序按钮,1个预览报告按钮。

sort and preview buttons

单击排序按钮时,会更新名为strsql的公开声明的变量。

我在Form

的顶部有这个代码
Option Compare Database
Public strsql As String
Option Explicit

更新strsql并用于填充列表区域。

其中一个按钮点击事件

Private Sub cmdReturnDate_Click()
   strsql = strSQL1 & strSQL2 & Me!cboDistricts.Value & weekEndSort
   Me!teachersList.RowSource = strsql
   Me!teachersList.Requery
 End Sub

我正在尝试使用strsql作为在预览报告按钮上调用的报告的记录源。

我在报告的事件打开函数中有这行代码,并且可以在变量strsql中看到正确的sql

Private Sub btnPreviewReport_Click() 
  MsgBox (strsql)

  Rem assign the sql string to the reports data property.
  DoCmd.OpenReport "reportname", acViewPreview

 End Sub

我要么将sql传递给报表,要么引用报表recordSource属性中的变量。

尝试在报告开放事件中引用

 Private Sub Report_Open(Cancel As Integer)

   Me.RecordSource strsql

 End Sub

报告目前没有显示数据,没有识别变量 - 没有输出。

问题是:如何访问/分配strsql到reports recordsource属性?

2 个答案:

答案 0 :(得分:0)

Me.RecordSource strsql应为Me.RecordSource = strsql

但是,当您打开报告时,您知道有WhereCondition选项吗? 您也可以使用OpenArgs将参数传递给报表/表单。

docmd.OpenReport reportname:="SomeReport", _  
                 whereCondition:="Category = 33", _
                 openArgs:="Furniture"  

答案 1 :(得分:0)

打开隐藏的报告,设置记录源,然后关闭报告并保存:

DoCmd.OpenReport "SomeReport", acViewDesign, , , acHidden
Reports!SomeReport.RecordSource = strSQL
DoCmd.Close acReport, "SomeReport", acSaveYes