我有一个绑定到访问数据库中主表的表单。有5个组合框,显示存储在主数据库中的ID的描述。
TruckModelID存储在tblTruckList中,与tblTruckModel中的TruckModelID相关。 TruckModelName存储在tblTruckModel中。 我可以创建一个简单的搜索功能,我可以在其中输入ID,但用户不会知道特定型号的ID。如何进行某种搜索,可以查看txtFindTruck(我的搜索字段)中的值并将其与名称进行比较,然后选择正确的ID并从TruckList返回具有正确ID的记录?
这是我在查看tblMain中的值时所使用的:
DoCmd.ApplyFilter "", "[TruckID] Like ""*"" & Forms![Ändra Truck]!txtFindTruck & ""*"""
这基本上就是我想要的:
DoCmd.ApplyFilter "", "[cmbTruckModelName] Like ""*"" & Forms![Ändra Truck]!txtFindTruck & ""*"""
然而,表单使用的实际值是TruckModelID而不是TruckModelName
我确信我在描述中遗漏了一些让人难以理解的内容,请不要犹豫,问我任何事情:D也会非常感谢任何帮助。
答案 0 :(得分:1)
您可以使用SQL IN
子句按其他查询进行过滤,如下所示:
DoCmd.ApplyFilter "", "[TruckID] IN(" & _
"SELECT TruckID From MyTable WHERE TruckModelName LIKE ""*"" & Forms![Ändra Truck]!txtFindTruck & ""*"")"
填写像你的表名一样的空白,它应该有效。
但是,这可能不是解决您问题的最佳方法。如果您使用的是组合框,则可以使用隐藏的ID列进行搜索,并在组合框中包含实际的模型名称,这可能更加用户友好。
有关如何隐藏列的信息,请参阅How to hide columns in a ComboBox dropdown?。