Ms access SQL MS Access查询从表单文本框获取文本值

Ms access SQL MS Access查询从表单文本框获取文本值,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,我有一个“非常”长的查询,是通过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

我有一个“非常”长的查询,是通过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代码本身编写它,但由于大量换行符和查询的变化性质,我不想在每行末尾手动添加&

任何帮助都将不胜感激

问候,,
Navs

您可以这样编写WHERE子句:

WHERE B=[Forms]![FormName]![FieldName]
$src_query = "Select a,b,c from abc <where clause> union select ..."
$src_query = Replace($src_query,
                     "<where clause>",
                     [Forms]![FormName]![WhereClause])
所以它从表单中获取值。但是,如果我理解正确的话,在形式上不仅有条件,还有整个where子句,可以是‘where b=1’,也可以是‘where c=4’或者‘where a=2,b=6’

我认为没有一个完美的解决方案,您不能使用普通访问,但必须编写一些VBA代码,您可以使用以下内容生成查询字符串:

WHERE B=[Forms]![FormName]![FieldName]
$src_query = "Select a,b,c from abc <where clause> union select ..."
$src_query = Replace($src_query,
                     "<where clause>",
                     [Forms]![FormName]![WhereClause])

现在您的查询已经准备好执行。

只需做一点功课,我就找到了如何将文本文件的内容分配给变量。然后,我可以使用“Fthiella”给出的代码片段更改变量

您可以将Where子句放在单独的查询中,而不改变原始查询

Select * 
from MyQuery
Where (a=1 and b=7) or (c=3 and d="StackOverflow")

非常感谢您的回复。确切地说,where子句可以是动态的,可以添加或删除不同的字段。你的第二个解决方案似乎符合要求。但是我面临一个问题,我的查询时间很长,我使用excel和公式来创建该查询。但这个问题不会改变。一旦我锁定最终逻辑,它将是相同的。但是,当前长度限制我使用$src_查询。你知道其他方法吗?我可以把一个长查询的格式设置为我需要的格式,以适应大量的换行符。嗨,fthiella,有没有办法在access vb中将一个查询文件的内容作为字符串分配给一个变量?嗨,我想我不明白这里的问题是什么。。。换行有什么问题?分配查询文件内容是什么意思?如果你能解释,我可以帮你更好!确保我的查询在查询编辑器中跨越227行。在将如此长的查询分配给解释中的变量$srcquery时,我遇到了麻烦。然后,我必须在每行末尾手动添加&。我将内容分配给变量的意思是,我可以在文本文件中进行查询,并使用vb access将文件的内容分配给变量。希望我能解释清楚一点。如果你需要更多信息,请告诉我。非常感谢你宝贵的时间帮助我。嗨,费希拉,谢谢你及时的帮助。在没有什么作业的情况下,我发现了如何将文本文件的内容分配给变量。然后,我可以用您给出的代码片段更改变量。再次感谢您及时的帮助。我会从现在开始关闭这个帖子。