我的问题:我有一个查询过滤数据,具体取决于输入到表单中的复选框,文本框和组合框中的内容。除了一个单独的组合框外,所有这些都完美无缺。如果我在这个名为'cmbBodyType'的组合框中输入数据,无论我输入什么数据,每次都会返回0结果。
到目前为止我的代码非常冗长,所以我将它全部粘贴到下面,然后我将粘贴我用于过滤组合框的片段。
SELECT [Car Table].Car_VIN, [Car Table].Car_Class, [Car Table].Car_BodyType,
[Car Table].Car_Colour, [Car Table].Car_Make, [Car Table].Car_Model, [Car
Table].Car_EngineType, [Car Table].Car_TransmissionType, [Car
Table].Car_GPSAvailability, [Car Table].Car_BootSpace, [Car
Table].Car_FuelConsumptRate, [Car Table].Car_SeatNumber, [Car
Table].Car_GreenStarRating, [Car Table].Car_ANCAPSafetyRating, [Car
Table].Car_DriveType
FROM [Car Table]
WHERE ((([Car Table].Car_VIN) Like "*" & [Forms]![Navigation Form]!
[NavigationSubform].[Form]![txtVIN] & "*") AND (([Car Table].Car_Class) Like "*"
& [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbClass] & "*") AND
(([Car Table].Car_DriveType) Like "*" & [Forms]![Navigation Form]!
[NavigationSubform].[Form]![cmbDriveType] & "*") AND (([Car Table].Car_BodyType)
Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType] &
"*") AND (([Car Table].Car_Colour) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![cmbBodyType] & "*") AND (([Car Table].Car_Make)
Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![txtMake] & "*")
AND (([Car Table].Car_Model) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![txtModel] & "*") AND (([Car Table].Car_EngineType)
Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbEngineType]
& "*") AND (([Car Table].Car_TransmissionType) Like "*" & [Forms]![Navigation
Form]![NavigationSubform].[Form]![cmbTransmissionType] & "*") AND (([Car
Table].Car_GPSAvailability) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![ChGPSAvailability] & "*") AND (([Car
Table].Car_SeatNumber) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![txtSeatNumber] & "*") AND (([Car
Table].Car_GreenStarRating) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![cmbGreenStarRating] & "*") AND (([Car
Table].Car_ANCAPSafetyRating) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![cmbANCAPSafetyRating] & "*") AND
((Abs([car_fuelconsumptrate]-Nz([Forms]![Navigation Form]![NavigationSubform]
.[Form]![txtFuelConsumption],[car_fuelconsumptrate]))<=Nz([2],9999)))
AND ((Abs([car_bootspace]-Nz([Forms]![Navigation Form]![NavigationSubform].[Form]
![txtBootSpace], [car_BootSpace]))<=Nz([100],9999))));
片段(这将在WHERE中,或者更简单地说,这是设计视图中显示的标准):
Like "*" & [Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType] & "*"
编辑:似乎我的'绿色星级评级'组合框在搜索中没有任何差别,无论其价值如何。似乎工作和非工作组合框之间的所有内容都是相同的...我注意到的一件事是,两个不起作用的组合框都有比其他工作组合框更多的选择。
答案 0 :(得分:1)
您可以在WHERE语句中使用类似
的部分 ...AND [Car Table].Car_BodyType Like
IIf(IsNull([Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType]),"*" ,
[Forms]![Navigation Form]![NavigationSubform].[Form]![cmbBodyType])...
在MS Access Search Form need to pass values from unbound combo box to query找到 阅读它以获得进一步的解释,以及评论。
BTW:
(([Car Table].Car_Colour) Like "*" & [Forms]![Navigation Form]
![NavigationSubform].[Form]![cmbBodyType] & "*")
您从cmbBodyType
中搜索Car_color小心这个巨大的SQL
编辑:星级评分系统:这个领域是什么类型的?如果是数字字段,则LIKE不适用。 LIKE意为文本afaik。