我有一个学生应用程序数据库,其中包含一个包含每个应用程序信息的表单。
我想从表单中创建一个报告(我不确定是否应该使用宏或命令按钮)但它应该做的是在点击时,它应该创建一个仅包含来自当前正在显示在表单上的应用程序。
我创建了一个如下所示的报告:
要创建宏(单击时在打印预览模式下打开报表)我在宏设计中的where框下使用了以下条件:[Application]![Record ID] = [Forms]![Form]![记录ID]
但是,当我单击表单上的宏时,它会显示报告,但不会使用表单中的数据填充报告中的字段。
我问的问题是,如何通常在表单上创建一个按钮,一旦点击就会显示一个打印预览,其中包含该表单中包含的信息(不是多个记录)
谢谢,
汤姆
答案 0 :(得分:2)
它应该像这样简单(在VBA中,而不是宏):
If Me.NewRecord = False Then
DoCmd.OpenReport "rptMyReportName", acViewPreview, , "[RecordID] = " & Me!RecordID
End If
作为旁注,最好不要在设计表时在字段名称中使用空格或符号。我会将记录ID更改为RecordID。
答案 1 :(得分: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] =”&我![ID]表示字符串“[ID =”和我表格的字段ID中的数字将连接到“[ID] = 7”。
因此该行执行一个读取
的宏OpenReport my_reportname,inPreviewMode,ID = 7
编辑:添加了一些代码以保存当前记录(如果是新的
)