Vba MS Access'16-查询未从字段中提取值

Vba MS Access'16-查询未从字段中提取值,vba,ms-access,Vba,Ms Access,[免责声明:我自学成才,完全是新手!] 我有一个表单,查询使用该表单提取数据并使用它填充报表。当最终用户完成报告并单击按钮时,应发生以下情况: 1表单将所有数据保存在表2的一条新记录中。查询通过从表单中自动编号的ID提取该记录。3查询使用表4中的数据填充报告。表单和查询关闭-无需保存 查询使用以下条件从相应表中提取所有数据:[表单]![数据输入表格]![ID] 然而,我的报告却一片空白!哎呀 我有一个类似的查询,它从同一个表中提取数据,并使用以下条件将其填充到类似的报告中:Like Nz[For

[免责声明:我自学成才,完全是新手!]

我有一个表单,查询使用该表单提取数据并使用它填充报表。当最终用户完成报告并单击按钮时,应发生以下情况:

1表单将所有数据保存在表2的一条新记录中。查询通过从表单中自动编号的ID提取该记录。3查询使用表4中的数据填充报告。表单和查询关闭-无需保存

查询使用以下条件从相应表中提取所有数据:[表单]![数据输入表格]![ID]

然而,我的报告却一片空白!哎呀

我有一个类似的查询,它从同一个表中提取数据,并使用以下条件将其填充到类似的报告中:Like Nz[Forms]![主页表单]![事件\u ID\u查找\u文本]*

毫不奇怪,当我将这个添加到查询中时,它报告了以前的所有记录,而我希望它不能正常工作

'------------------------------------------------------------
' Add Report [and Open Report] Button Click
'
'
'------------------------------------------------------------

Private Sub Add_Rpt_Btn_Click()

If MsgBox("Are you sure? No backsies.", vbYesNo, "Add Report?") = vbNo Then
    Exit Sub
End If

 'Check for Necessary Fields and Add New Record
If (IsNull(Me.Person_Filing) Or IsNull(Me.Nature_Lst) Or IsNull(Me.Location_Cmb) Or IsNull(Me.Summary) Or IsNull(Me.Narrative)) = True Then
    MsgBox "Looks like you left some important information out. Please fill out all fields with an asterisk.", vbOKOnly, Whoops
    Exit Sub
Else
    DoCmd.GoToRecord , , acNewRec
End If

 'Run Query to Open Report
DoCmd.OpenQuery "Form_to_Report_Qry"

DoCmd.OpenReport "Incident_Report_1", acViewReport, , [ID] = [Forms]![Data_Input_Form]![ID]

 'Close Query without Saving
DoCmd.Close acQuery, "Form_to_Report_Qry", acSaveNo

 'Close Form without Saving
DoCmd.Close acForm, "Data_Input_Form", acSaveNo

End Sub

报表需要用最新的记录填充,但它总是显示为空。

这是因为您移动了一个新的空记录,而该记录没有ID

我想,您只需要使用表单的当前ID,并为过滤器使用正确的语法:

Private Sub Add_Rpt_Btn_Click()

    If MsgBox("Are you sure? No backsies.", vbYesNo, "Add Report?") = vbNo Then
        Exit Sub
    End If

    ' Check for Necessary Fields and Add New Record
    If (IsNull(Me.Person_Filing) Or IsNull(Me.Nature_Lst) Or IsNull(Me.Location_Cmb) Or IsNull(Me.Summary) Or IsNull(Me.Narrative)) = True Then
        MsgBox "Looks like you left some important information out. Please fill out all fields with an asterisk.", vbOKOnly, Whoops
        Exit Sub
    End If

    ' If not saved, save the current record.
    If Me.Dirty = True Then
        Me.Dirty = False
    End If

    DoCmd.OpenReport "Incident_Report_1", acViewReport, , "[ID] = " & Me![ID].Value & ""

    ' Close Form without Saving
    DoCmd.Close acForm, Me.Name, acSaveNo

End Sub

啊,是的!谢谢,古斯塔夫,这完全奏效了。你能解释一下或者链接到一个解释吗?[ID]=&Me![ID]。重视&再次感谢!我被难住了!当报表打开时,正是筛选表达式筛选此单个记录上的报表。