2017-06-13 76 views
1

我有一个表单绑定到我的访问数据库中的主表。有5个组合框显示存储在主数据库中的ID的描述。DoCmd.ApplyFilter的替代或建议?

TruckModelID存储在tblTruckList中并与tblTruckModel中的TruckModelID相关。 TruckModelName存储在tblTruckModel中。 我可以做一个简单的搜索功能,我可以输入ID,但用户不会知道特定型号的ID。我如何进行某种搜索以查看txtFindTruck(我的搜索字段)中的值,并将其与名称进行比较,然后选择正确的ID并使用正确的ID从TruckList返回记录?

这是在值tblMain看的时候我一直在使用的是什么:

DoCmd.ApplyFilter "", "[TruckID] Like ""*"" & Forms![Ändra Truck]!txtFindTruck & ""*""" 

这基本上就是我想要的:

DoCmd.ApplyFilter "", "[cmbTruckModelName] Like ""*"" & Forms![Ändra Truck]!txtFindTruck & ""*""" 

但是,这种形式使用的实际值是TruckModelID不是卡车模型名称

我确定我错过了一些描述中的内容,很难理解,请不要犹豫,问我任何事情:D也任何帮助将不胜感激。

回答

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?

+0

谢谢埃里克!你是一个巨大的帮助!非常感谢! – Merpz