Ms access Access 2010中多个字段的表单查询

Ms access Access 2010中多个字段的表单查询,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我想创建一个通过表单获取字段参数的查询。为此,我创建了一个带有组合框和下拉选项的表单,用于从中选择值,这将填充各个不可见文本字段中的文本值,我已将其默认值设置为null。现在在我的查询中,我将列的条件设置为iifisNull[Forms]![条件]![表格上的文本],[表格中的列],[表格]![条件]![表格上的文本]。我对表单中where子句所在的所有列都这样做了。我试过运行这个。结果似乎是随机的。它适用于三列,但当我使用它时,它给了我一个空的结果集。谁能告诉我我做错了什么?或者是否有更好的方

我想创建一个通过表单获取字段参数的查询。为此,我创建了一个带有组合框和下拉选项的表单,用于从中选择值,这将填充各个不可见文本字段中的文本值,我已将其默认值设置为null。现在在我的查询中,我将列的条件设置为iifisNull[Forms]![条件]![表格上的文本],[表格中的列],[表格]![条件]![表格上的文本]。我对表单中where子句所在的所有列都这样做了。我试过运行这个。结果似乎是随机的。它适用于三列,但当我使用它时,它给了我一个空的结果集。谁能告诉我我做错了什么?或者是否有更好的方法在Access中通过表单实现查询。

听起来您正在尝试创建动态SQL。以下是我通常喜欢的vba中的方法:

Dim SQL As String

SQL = "SELECT tblName.* From tblName WHERE (1=1)"

If Not IsNull(Me.combo1) Then
    SQL = SQL & " And ([Field1] Like ""*" & Me.combo1 & "*"")" ' I am using like statements here, but that is because this is a search tool.
End If

If Not IsNull(Me.combo2) Then
    SQL = SQL & " And ([Feild2] Like ""*" & Me.combo2 & "*"")"
End If

Docmd.RunSQL SQL

End Sub
基本上,只有当用户在文本框/组合框或其他框中输入了值时,才能添加到SQL语句中。其中1=1用于说明所有字段都为空的情况


使用这个概念来创建SQL语句。避免使用不可见的文本框来存储数据,这通常意味着你做错了什么,并且会得到混合的结果。这个论坛上的其他人可以比我更好地解释为什么会这样

只需使用Like操作符。将其放入查询的条件字段中,如\*&表单![表格名称]![Form_Field]&\*-这告诉它如果字段为空或null并且匹配字段中的任何内容,则获取任何内容。这可能不是你想要的。应该注意的是,它将返回任何包含文本字符串的内容。例如:如果您键入,它将返回tether、This、theses、thermometer以及任何包含单词的内容。它最适用于多字或更长的字符串,可以更精确地匹配,但它适用于搜索查询,因为通常有一组人眼在寻找结果,错误的结果不是一个大问题。

我不知道上述解决方案有什么问题,但我已经为其创建了一个解决方案。我正在为where子句中的每一列创建一个新列,并将其定义为:new_column:[field]=[Forms]![条件]![表格上的文字]或[表格]![条件]![text_on_form]为空这似乎解决了问题,但我想知道之前的方法为什么不起作用。我还想知道如何使用第二种方法将表单中的复选框与表中的yes/no列进行比较。非常感谢您提供的任何帮助!我在表单中还有许多文本框用于动态查询。如何使用VB将表单值和列值与文本框匹配?我不确定是否理解您的问题。如果你能确切地描述一下你想要实现的目标,也许会有所帮助。您是否将Access用作后端Access是否存储表?您的表格绑定到一张桌子上了吗?您将需要使用我提供的代码,但通常情况下,将me.combo1替换为您的表单值和[Field1]使用列标题。我使用Access作为后端。它是一个平面表。我用于生成查询的表单未绑定到任何表。我正在尝试修改查询条件,但问题太多。VB的问题是,我不懂VB。我很难弄清楚代码在做什么。我需要一个代码,它可以从invi文本框中获取文本值,当选择下拉列表中的值时,该文本框会填充。我也有“是”或“否”字段,我会将其作为复选框贯穿整个表单。无论如何,如果你能帮我编写这个动态查询代码,我将不胜感激。在上面的VB代码中,代码如何知道在1=1的情况下检查空值的形式?我也不明白我的概念。。对不起,我只是个初学者。我想了解所有这些您不需要动态SQL,Access会为您解决所有这些问题。请访问此帮助文章以开始: