我有一个'非常'长的查询通过MS Access编写了很多联合(大约30个)和其他动态变量。
现在,我需要在所有这些联合中插入'Where'子句,并且where子句将是常量并通过表单生成(选择一些选项,我编写了一个vb代码来创建包含where子句的字符串
有什么方法可以在SQL查询中使用一些变量,以便变量从表单操作的文本结果中获取where子句?
说明:我的查询
Select a,b,c,d from
(select x as a,b,c,d from abc <where clause> union
select y as a,b,c,d from abc <where clause> union
select z as a,b,c,d from abc <where clause> union
select p as a,b,c,d from abc <where clause>)
order by a
应填充文本框结果,该结果看起来像'where b = 1'
我想在VB代码本身中编写它,但是对于大量的换行符和chaning查询的性质,我不想手动在每行的末尾添加“&amp; _”。
非常感谢任何帮助。
此致 导航
答案 0 :(得分:2)
您可以像这样编写WHERE子句:
WHERE B=[Forms]![FormName]![FieldName]
所以它从表单中获取值。但是,如果我理解正确,那么形式不仅仅是条件,而是整个where子句,可能是',其中b = 1'但它也可能是' c = 4'或'其中a = 2且b = 6'?
我认为没有一个完美的解决方案,你不能使用普通的Access,但你必须编写一些VBA代码,你可以用这样的东西生成查询字符串:
$src_query = "Select a,b,c from abc <where clause> union select ..."
$src_query = Replace($src_query,
"<where clause>",
[Forms]![FormName]![WhereClause])
然后你只需要以编程方式修改查询:
CurrentDb.QueryDefs("QueryName").SQL = $src_query
现在您的查询已准备好执行。
答案 1 :(得分:1)
您可以将Where
子句放在单独的查询中,而不是更改原始
Select *
from MyQuery
Where (a=1 and b=7) or (c=3 and d="StackOverflow")
答案 2 :(得分:0)
通过很少的功课,我找到了如何将文本文件的内容分配给变量。然后,我能够使用代码片段“Fthiella”更改变量。