MS Access '16 - запрос не извлекает значение из поля - PullRequest
0 голосов
/ 26 марта 2019

[Отказ от ответственности: я самоучка и абсолютный новичок!]

У меня есть ФОРМА, с помощью которой QUERY извлекает данные и использует их для заполнения ОТЧЕТА. Когда конечный пользователь заканчивает отчет и нажимает кнопку, должно произойти следующее:

1) ФОРМА сохраняет все данные в новой записи в ТАБЛИЦЕ
2) Запрос извлекает эту запись по ИД (с автонумерацией) из ФОРМЫ
3) ЗАПРОС заполняет ОТЧЕТ с данными из ТАБЛИЦЫ
4) ФОРМА и ЗАПРОС закрываются - нет необходимости сохранять.

QUERY извлекает все данные из соответствующей ТАБЛИЦЫ по следующим критериям: [Forms]! [Data_Input_Form]! [ID]

Тем не менее, мой ОТЧЕТ выходит пустым! Ик!

У меня есть похожий QUERY, который извлекает данные из того же TABLE и заполняет их аналогичным отчетом по следующим критериям: Like Nz ([Forms]! [Home_Form]! [Incident_ID_Lookup_text], "*")

Неудивительно, что когда я добавил это в запрос, который не работал так, как я хотел, он сообщал обо всех предыдущих записях.

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

ОТЧЕТ должен быть заполнен самой последней записью, но он продолжает появляться пустым.

1 Ответ

1 голос
/ 27 марта 2019

Это потому, что вы перемещаете новую (пустую) запись без идентификатора.

Полагаю, все, что вам нужно, это использовать текущий идентификатор формы - и использовать правильный синтаксис для фильтра:

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