我当前正在编写一个Access宏,它将原始数据导入表中并执行一系列SELECT查询。我试图避免使用RunSQL,因为:
我尝试了OpenQuery,它似乎可以满足我的要求。有人可以请您解释这两种方法之间的区别,以便我可以依靠它
答案 0 :(得分:0)
如果您已构建查询,则简单的方法是:
Dim db As DAO.Database
Dim q as DAO.QueryDef
Set db = CurrentDb
Set q = db.QueryDefs("SomeQuery")
q.Execute()
Set q = db.QueryDefs("SomeOtherQuery")
q.Execute()
' etc.
答案 1 :(得分:0)
简而言之,使用VBA编写您自己的查询比打开预制查询具有更大的灵活性。 在VBA中组成查询的sql字符串,可以根据控件状态,变量等随时随地对其进行修改。
当然,这并非总是必要的,在许多情况下使用OpenQuery完全可以。
根据任务的不同,这两种方法的性能可能也会有所不同,但是很大程度上也取决于其他元素。
至于“混乱的” SQL代码:您可以对其进行控制。例如
strsql = "SELECT idUsr, strLogin, intDep FROM Users WHERE True "
If (condition1) then
strsql = strsql & " And intDep>30"
else
strsql = strsql & " And intDep<=30"
end if
'more conditions here
...
'set the order
If (condition9) then
strsql = strsql & " ORDER BY idUsr, intDep"
Else
strsql = strsql & " ORDER BY intDep, isUsr"
End If