请问形如“SELECT * FROM tblMain WHERE ID LIKE '%'”的语句为什么TADOTable不能正确执行,而企业管理器却可以正确执行?

uhian 2005-12-01 04:59:30
在CB中想实现在编辑框输入的同时实现过滤功能,故在编辑框的Change事件中写代码如下:
adotblMain->Filtered=false;
adotblMain->Filter="select * from tblMain where id like "+QuotedStr(edtID->Text+"%");
adotblMain->Filtered=true;
可是这样当编辑框一旦为空的时候就会出现异常,提示信息为:
“参数类型不正确,或不在可以接受的范围内,或与其他参数冲突”。
以为是编辑框为空的原因,所以直接将Filter设定成“SELECT * FROM tblMain WHERE ID LIKE '%'”结果还是出错,可是在企业管理器和查询分析器中却可以正确执行。
这是为什么?TADOTable对语句有要求?
...全文
220 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
uhian 2005-12-02
  • 打赏
  • 举报
回复
ID是字符型,varchar(10)。ID内容就是姓名拼音缩写。
刚才做了测试,ADOTable就是不支持这种Filter语句:“ID LIKE '%'”。
ADOQuery这样就没问题,可能跟ADOTable的过滤方式有关?或者是个BUG?
guanshangming 2005-12-01
  • 打赏
  • 举报
回复
ID的类型是什么?是字符型吗?如果是字符型,应该是没有问题的。
uhian 2005-12-01
  • 打赏
  • 举报
回复
to:setdefault(山转水也转)
汗,是我复制错了。其实是没有“select * from tblMain where ”这一部分的,我这是将最终的SQL不自觉地翻译出来了。其实我写的是:
adotblMain->Filter="id like "+QuotedStr(edtID->Text+"%");

to:tompkins2000(AirHunter),UTzlpower(鸡骨草)
应该不是这些原因,因为当edtID->Text不为空的时候是可以正确执行的。
UTzlpower 2005-12-01
  • 打赏
  • 举报
回复
id是一个关键字,按下列方式试一试:
"select * from tblMain where [id] like "+QuotedStr(edtID->Text+"%")
或者程序中处理;
if (QuotedStr(edtID->Text=="")
adotblMain->Filter="select * from tblMain";
空中猎手 2005-12-01
  • 打赏
  • 举报
回复
adotblMain->Active=false;
adotblMain->SQL->Text ="select * from tblMain where id like "+QuotedStr(edtID->Text+"%");
adotblMain->Active=true;

这样才对么,你用错属性啦
setdefault 2005-12-01
  • 打赏
  • 举报
回复
在Filter中%通配符没有试过,想这么用可以使用ADOQuery来代替ADOTable,在ADOQuery->SQL中使用你的SQL语句
setdefault 2005-12-01
  • 打赏
  • 举报
回复
Filter中是一个判断,不放SQL语句

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧