在我的VBA子例程中,我想从复杂查询中创建一个新表
(qryA UNION ALL qryB UNION ALL qryC)
strSQL = "select * into tblNew from qryComplex"
后续查询(超过3个首字母)需要在打开的表单中找到的参数(假设为4)。
通过选择,例如,
Set qdf = db.CreateQueryDef("", strSQL)
qdf.Parameters(0) = Forms!frmMain.txtF1
qdf.Parameters(1) = Forms!frmMain.txtF2
qdf.Parameters(2) = Forms!frmMain.txtF3
qdf.Parameters(3) = Forms!frmMain.txtF1
qdf.Execute
我如何知道所需的订单是确定性的?
如何确定订单和内容,而无需深入了解后续查询并尝试组合?
答案 0 :(得分:1)
Access支持PARAMETERS
子句,即使某些/所有参数仅用于基础查询,也可以确定参数的顺序。您只需确保为所有参数命名,并使用正确的名称和类型。 PARAMETERS
子句后面必须跟一个分号。
您可以使用Access中的“参数”对话框来帮助您:
假设您的所有参数都需要是短文本,您的查询将如下所示:
PARAMETERS Param1 Text ( 255 ),Param2 Text ( 255 ), Param3 Text ( 255 );
SELECT * INTO tblNew
FROM qryComplex;
答案 1 :(得分:0)
我使用来自VBA的参数和放置它们的顺序从来都不是问题。您只需要从所有相关查询中说出所有问题。
答案 2 :(得分:0)
使用参数名称而不是索引编号
qdf.Parameters("parameter example name 1") = Forms!frmMain.txtF1
qdf.Parameters("parameter example name 2") = Forms!frmMain.txtF2
qdf.Parameters("parameter example name 3") = Forms!frmMain.txtF3
qdf.Parameters("parameter example name 4") = Forms!frmMain.txtF1