【发布时间】:2020-03-13 14:11:46
【问题描述】:
我写了下面的Sub 来运行一些Make-table 查询,其中一些使用参数Some_date
Sub run_query(queryName As String, Optional Some_date As Date)
Form_Select_input.logProgress queryName
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs(queryName)
On Error Resume Next
qdf!Date_after = Date_after
On Error GoTo 0
qdf.Execute
Set qdf = Nothing
End Sub
一个典型的查询看起来像
PARAMETERS Some_date DateTime;
SELECT Some_field
, Other_field
INTO Some_Target
FROM Some_Source
LEFT JOIN Other_Source
ON Some_Source.key = Other_Source.key
where Some_Source.Transaction_Date > [Some_date];
现在这在我第一次运行查询时有效,但第二次出现表已经存在的错误,所以我想写一些类似
的东西Sub run_query(queryName As String, Optional Some_date As Date)
Form_Select_input.logProgress queryName
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs(queryName)
On Error Resume Next
DoCmd.DeleteObject acTable, qdf.Destination ' At first execution, the destination does not exist, but we resume next
qdf!Date_after = Date_after ' For some queries, the parameter does not exist, but we resume next
On Error GoTo 0
qdf.Execute
Set qdf = Nothing
End Sub
请帮我用现有的东西替换qdf.Destination。
【问题讨论】:
-
一个想法是将查询命名为类似于表:
MyTable_Create和MyTable。因此,如果您想执行查询MyTable_Create,您需要先搜索一个名为MyTable的表,方法是从查询名称中删除_Create。 -
好吧,如果我能从头开始设计的话