类似在filter属性中搜索整数字段

时间:2012-09-05 21:41:03

标签: delphi delphi-xe2 tadotable

我有一个ADODataSet,其中“Filtered”属性设置为True(已过滤:= 是的;)

当我应用过滤器时:

[No] like '2%'

弹出错误“无法打开过滤器”。 [不]是一个领域 整数类型的ADODataSet。当我对字符串列应用类似的过滤器时,它工作正常。

e.g:

[LastName] like 'Jo%'. 

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我同意肯,如果您正在寻找数字值20到29或200到299,那么根据值进行搜索。如果您仍想按要求执行操作,请考虑tAdoDataSet的Filter属性与向查询添加“where”子句不同。将使用服务器的语法在服务器端处理where子句。另一方面,Filter属性在您的软件中进行解析,并具有自己的语法规则。

选项一是使用实际的where子句。在我的测试中,我正在使用MS SQL Server。我将SQL文本更改为:

select [LASTNAME], [NO] from PEOPLE
where [NO] like '2%'

在这种情况下,MSSQL的语法规则会在应用过滤器之前将数值转换为字符串。

选项二是更改查询以返回字符串。

select [LASTNAME], [NO],
cast ( [NO] as varchar(20) ) as [NO_AS_CHAR] 
from PEOPLE

然后将过滤器更改为

[NO_AS_CHAR] like '2%'