我有一个 ADODataSet,其中“Filtered”属性设置为 True (Filtered:= True;)
当我应用过滤器时:
[No] like '2%'
弹出错误“无法打开过滤器”。[No] 是整数类型的 ADODataSet 中的一个字段。当我将类似的过滤器应用于字符串列时,它可以正常工作。
例如:
[LastName] like 'Jo%'.
任何的想法 ?
谢谢。
我有一个 ADODataSet,其中“Filtered”属性设置为 True (Filtered:= True;)
当我应用过滤器时:
[No] like '2%'
弹出错误“无法打开过滤器”。[No] 是整数类型的 ADODataSet 中的一个字段。当我将类似的过滤器应用于字符串列时,它可以正常工作。
例如:
[LastName] like 'Jo%'.
任何的想法 ?
谢谢。
我同意 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%'