1

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

当我应用过滤器时:

[No] like '2%'

弹出错误“无法打开过滤器”。[No] 是整数类型的 ADODataSet 中的一个字段。当我将类似的过滤器应用于字符串列时,它可以正常工作。

例如:

[LastName] like 'Jo%'. 

任何的想法 ?

谢谢。

4

1 回答 1

1

我同意 Ken 的观点,如果您要查找 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%'
于 2012-09-06T09:05:04.687 回答