我正在尝试在数据库中实现搜索功能:一种从组合框中读取所选值,另一种从文本框中读取用户输入。在这两种情况下,我都将多值字段用作WHERE子句的一部分。搜索查询正确过滤了我的数据集,但是它们返回重复的条目,我相信多值字段中的每个单独值都会有一个。我看到以下建议删除多值字段的.Value的线程。
Multivalue combobox creates multiple records in form
但是,我需要这些多值字段成为我的WHERE子句的一部分,当我删除.Value时,我得到了该线程中讨论的问题。
Multi-valued...cannot be used in a WHERE or HAVING
我也尝试使用DISTINCT关键字,但这不适用于多值字段。
我还看到了使用Totals函数并将每一列设置为First,将每一列设置为Group By的建议,但这给了我“表达式必须是聚合函数的一部分。”或“您的查询不将指定的表达式作为聚合函数的一部分。”使用分组依据的任何东西。如果将所有内容都设置为“第一”,则不会出现这些错误,但是在执行搜索时,系统会提示我输入“ EXP 1015”,“ EXP 1016”等值。
查询的(当前)SQL在下面。替换,面积和属性是我的多值字段。
选择[产品表] .ID,[产品表] .ProductName,[产品表] .ProductDescription,[产品表] .Company,[产品表] .Replacement.Value,[产品表] .Area.Value, [产品表] .Prop.Value,[产品表] .Source,[产品表]。机会,[产品表] .Stage,[产品表]。区域,[产品表] .Prop,[产品表] .Replacement ,[产品表]。标签,[产品表]。优先级
从[产品表]
在哪里(((([[Product Table] .ProductName)Like(“ *”&[Forms]![Main Menu]![Search box]&“ *”)))OR(((([[Product Table] .ProductDescription )Like(“ *”&[Forms]![Main Menu]![Search box]&“ *”)))))((((([Product Table] .Company)Like(“ *”&[Forms]![Main菜单]![搜索框]&“ *”))))或(((([产品表] .Replacement.Value)像(“ *”&[表格]![主菜单]![搜索框]&“ *” )))OR(((([[Product Table] .Area.Value)Like(“ *”&[Forms]![Main Menu]![Search box]&“ *”)))OR(((( .Prop.Value)Like(“ *”&[Forms]![Main Menu]![Search box]&“ *”))))或(((([[Product Table] .Source)Like(“ *”&[Forms] ]![主菜单]![搜索框]&“ *”)))));
在任何人发表评论之前,我不应该使用多值字段:是的,我知道,但是现在为这个特定的数据库更改它已经为时已晚。