【问题标题】:MS Access '16 - Query not pulling a value from a fieldMS Access '16 - 查询不从字段中提取值
【发布时间】:2019-03-26 20:30:59
【问题描述】:

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

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

1) FORM 将所有数据保存在 TABLE 上的新记录中
2) 查询从 FORM 中按 ID(自动编号)提取该记录
3) QUERY 用 REPORT 填充TABLE 中的数据
4) FORM 和 QUERY 关闭 - 无需保存。

QUERY 使用以下条件从对应的 TABLE 中提取所有数据:[Forms]![Data_Input_Form]![ID]

但是,我的报告是空白的!哎呀!

我有一个类似的 QUERY,它从同一个 TABLE 中提取数据并将其填充到具有以下条件的类似 REPORT:Like Nz([Forms]![Home_Form]![Incident_ID_Lookup_text],"*")

不出所料,当我将此添加到无法正常工作的 QUERY 时,它会报告所有以前的记录。

'------------------------------------------------------------
' 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

报告需要填充最近的记录,但它总是出现空白。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    那是因为您移动了一条新的(空)记录 - 没有 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].Value & “” 再次感谢!我被难住了!
    • 它是过滤器表达式 - 当报表打开时 - 过滤单条记录上的报表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多