Использование запроса выбора в отчете Access - PullRequest
0 голосов
/ 18 октября 2019

У меня есть две таблицы и отчет, tbl1, tbl2 и rptAllOrders.
tbl1 и tbl2 не идентичны.

Отчет не связан ни с однимисточник записи и так это элементы управления.

Это выполнимо в VBA? Или есть лучший альтернативный способ?

Private Sub btnReport_Click()
DoCmd.OpenReport "rptAllOders" , , acViewPriview 
End Sub

Private Sub rptAllOders_Open(Cancel As integer)

Dim strq As string

strq = "SELECT tbl1.ItemNo, tbl1.ItemName, 
tbl2.OderDate, tbl2.OderNo FROM tbl1 UNION ALL ON 
tbl1.ItemNo = tbl2.ItemNo AND ItemName = 
'"Forms!comboItemName.Value"' ORDER BY oderDate 
ASC"

 End Sub

1 Ответ

0 голосов
/ 18 октября 2019

Следуя вашему примеру, решение с правильной конкатенацией строк будет следующим. Он встраивает Forms!comboItemName.Value как строку.

Private Sub rptAllOders_Open(Cancel As integer)
    Dim strq As String
    strq = "SELECT tbl1.ItemNo, tbl1.ItemName, " & _
           "tbl2.OderDate, tbl2.OderNo FROM tbl1 UNION ALL ON " & _
           "tbl1.ItemNo = tbl2.ItemNo AND ItemName = '" & _ 
           Forms!comboItemName.Value & "' ORDER BY oderDate ASC"

    Me.RecordSource = strq
End Sub

Вы должны проверить свой запрос в конструкторе запросов с жестко закодированным параметром, чтобы доказать это, я не уверен, что сам запрос (даже без или жестко закодирован)параметр) работает хорошо.

И как всегда: Посмотрите, как использовать параметризованные запросы, потому что использование конкатенации строк для встраивания параметров представляет собой риск в виде SQL-инъекции !

Смотрите здесь: https://stackoverflow.com/a/49509616/7658533

...