我有一个ADODataSet,其中“Filtered”属性设置为True(已过滤:= 是的;)
当我应用过滤器时:
[No] like '2%'
弹出错误“无法打开过滤器”。 [不]是一个领域 整数类型的ADODataSet。当我对字符串列应用类似的过滤器时,它工作正常。
e.g:
[LastName] like 'Jo%'.
有什么想法吗?
感谢。
答案 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%'