2

我有一个学生应用程序数据库,其中包含一个包含每个应用程序信息的表单。

我想从表单创建一个报告(我不确定我应该使用宏还是命令按钮)但是它应该做的是在点击时,它应该创建一个只包含来自当前应用程序的信息的报告正在表单上显示。

我创建了一个如下所示的报告:

在此处输入图像描述

要创建宏(单击时会在打印预览模式下打开报告),我在宏设计的 where 框下使用了以下条件:[Application]![Record ID]=[Forms]![Form]![Record ID]

但是,当我单击表单上的宏时,它会显示报告,但不会使用表单中的数据填充报告中的字段。

我要问的问题是,人们通常如何在表单上创建一个按钮,一旦单击该按钮就会显示一个打印预览,其中包含该表单中包含的信息(不是多个记录)

谢谢,

汤姆

4

2 回答 2

2

我不知道如何用宏来做到这一点。我从不使用宏——你可以做宏用 vba 做的所有事情——而且很简单:

Private Sub ReportOpenButton_Click()
On Error GoTo Err_ReportOpenButton_Click

If Not Me.NewRecord Then
    DoCmd.OpenReport "My_Reportname", acPreview, , "[ID] = " & Me![ID]
Else
  If MsgBox("Save the new Record ?", vbQuestion & vbOKCancel, "Attention") = vbOK Then
    RunCommand acCmdSaveRecord
    DoCmd.OpenReport "Bericht1", acPreview, , "[ID] = " & Me.ID
  End If
End If

Exit_ReportOpenButton_Click:
    Exit Sub
Err_ReportOpenButton_Click:
    MsgBox Err.Description
    Resume Exit_ReportOpenButton_Click:
End Sub

这里重要的部分是:[ID] 是报告中 ID 字段的名称,Me![ID] 是执行此命令的表单中的 id 字段的名称(me)。所以最后一个参数 "[ID] = " & Me![ID] 意味着,字符串 "[ID =" 和我的表单的字段 id 中的数字将连接到例如 "[ID] = 7"。

所以该行执行一个宏,读取

OpenReport my_reportname, inPreviewMode, ID = 7

编辑:添加了一些代码来保存当前记录,如果它是新的

于 2012-05-02T12:04:27.163 回答
2

它应该像这样简单(在 VBA 中,而不是宏中):

If Me.NewRecord = False Then
    DoCmd.OpenReport "rptMyReportName", acViewPreview, , "[RecordID] = " & Me!RecordID
End If

附带说明一下,在设计表格时,最好不要在字段名称中使用空格或符号。我会将记录 ID 更改为 RecordID。

于 2012-05-02T11:41:07.910 回答