在Delphi中使用或同时使用和条件进入AdoTable过滤器

在Delphi中使用或同时使用和条件进入AdoTable过滤器,delphi,Delphi,我试图在AdoTable组件上应用以下过滤器,但它显示错误: ((details_id = 15) OR (details_id = 16) OR (details_id = 17)) AND(personel_id = 5) 错误是: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. 有什么问题,我该怎么做这个过滤器。 我以前在Delphi帮助

我试图在AdoTable组件上应用以下过滤器,但它显示错误:

((details_id = 15) OR (details_id = 16) OR (details_id = 17)) AND(personel_id = 5)
错误是:

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
有什么问题,我该怎么做这个过滤器。 我以前在Delphi帮助中搜索过它,但无法解决它。
提前特别感谢。

如果您想在表格上制作一个过滤器,使用
TADOQuery
并放置:

TADOQuery.SQL.Text := 'SELECT * FROM TableName WHERE ((details_id = 15) OR (details_id = 16) OR (details_id = 17)) AND (personel_id = 5)'
其中
TableName
是实际表的名称。以这种方式使用参数值也更容易操作

更好的是,你可以这样写:

TADOQuery.SQL.Text := 'SELECT * FROM TableName WHERE ((details_id IN (15, 16, 17)) AND (personel_id = 5)'

不,这是一个示例代码。我尝试了您的评论,但没有解决问题。您认为错误与
有关的原因是什么?我使用:(details\u id=15)或(details\u id=16)或(details\u id=17)测试属性,结果正常,但当+'和'条件不正常时,请显示分配此布尔表达式的源代码。问题似乎不是表达式,而是你使用它的方式:你将它(或将它用作参数)赋给不接受布尔值的东西。我完全不知道它是否相关,但你将“AND”和“(”挤在一起,而对于“or”有一个空格。这只是一个猜测(我不认为是这样的,但当我看到它时,我的脑海中浮现出了这一切):试试
((details\u id=15)或(details\u id=16)或(details\u id=17))和(personel\u id=5)
。谢谢。我以前就知道这个方法,但我想知道过滤TAdoTable的方法。我确信有一种方法可以做到这一点。尽管我是用这种方法解决的。