0

我有两个表格和一个报告tbl1tbl2rptAllOrders
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
4

1 回答 1

0

按照您的示例,具有正确字符串连接的解决方案将是这样的。它嵌入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

于 2019-10-18T06:27:11.790 回答