我有多个使用相同日期的查询,并且只想询问用户一次
MethodCall(arg1, out string arg2);
查询条件为Public Sub runappends()
Dim getmyparameter As Date
Call getmyparameter1(getmyparameter)
DoCmd.OpenQuery "Append to Current Quarter Counts 1", acViewNormal, acAdd
DoCmd.OpenQuery "Append to Current Quarter Counts 2", acViewNormal, acAdd
End Sub
Public Function getmyparameter1(getmyparameter As Date)
getmyparameter = CDate(InputBox("enter date greater than"))
End Function
,因为这里唯一的选择是调用函数。
但是似乎无法获取传递给查询2、3等的日期吗?
答案 0 :(得分:3)
我建议使用DAO.QueryDef
,而不是使用OpenQuery
方法。这将使您的代码简单得多。
我假设您的2个查询都有日期参数。对于此答案,我假设参数称为pDate
。因此,您可以执行以下操作:
Public Sub RunAppends()
Dim db as DAO.Database, qdf as DAO.QueryDef
Dim dateParam as Date
set db = CurrentDB
' you can move this to a separate function if you really want,
' but it's only 1 line, so there's not really a reason to.
dateParam = CDate(InputBox("Enter date:"))
set qdf = db.QueryDefs("Append to Current Quarter Counts 1")
qdf.Parameters("pDate").Value = dateParam
qdf.Execute dbFailOnError
set qdf = db.QueryDefs("Append to Current Quarter Counts 2")
qdf.Parameters("pDate").Value = dateParam
qdf.execute dbFailOnError
' cleanup your objects
set qdf = Nothing
set db = Nothing
End Sub
由于执行这两个查询的代码相同,因此您可以使用循环结构(例如,使用查询名称数组,然后以这种方式执行)。
我还建议更改查询名称:通常,应避免在对象名称中使用空格。您还可以使用匈牙利表示法来澄清这些查询,例如qAppendToCurrentQuarterCounts1
和qAppendToCurrentQuarterCounts2
。然后我还想知道这两个查询之间的区别是什么,因为它们的名称是如此相似...
答案 1 :(得分:0)
这是我要怎么做:
Public myparameter As Date
Public Function getmyparameter() as Date
getmyparameter=myparameter
End Function
Public Sub setmyparameter()
myparameter=CDate(InputBox("enter date greater than"))
End Sub
使用Call setmyparameter
向用户询问日期和您的查询条件中的getmyparameter()
。