CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  数据库及相关技术

ADOTABLE与ADOQUERY

楼主xjp6688(大平/要做必须最好)2005-03-15 22:55:04 在 C++ Builder / 数据库及相关技术 提问

小弟在用ADOTABLE的时候发现比ADOQUERY麻烦多了,尤其是在查询的时候,ADOTABLE比ADOQUERY费事,如果在EDIT中输入要查询的内容,如果内容与数据库中的类型不一致,程序就会出现严重的错误,而QUERY就不是,大不了查不出结果罢了,而ADOTABLE用过滤器,用LOCATE,用LOOKUP什么的都不行,不知怎么处理???? 问题点数:20、回复次数:30Top

1 楼milkwayhong(自在)回复于 2005-03-15 23:19:42 得分 0

你可以进行预处理进行限制呀Top

2 楼h98458(零点起飞)回复于 2005-03-15 23:56:37 得分 2

你可以用ADOTABLE的Filter进行数据的筛选呀  
  ADOTable1->Filtered=false;  
  ADOTable1->Filter="你的SQL语句"  
  ADOTable1->Filtered=true;  
   
  Top

3 楼scanmaymaymay(yyc)回复于 2005-03-16 00:06:39 得分 3

你内容与数据库中的类型不一致,用table和query都是会出现错误的,应该你自己在edit输入内容作控制,而不是强求控件帮你做了  
  ADOTABLE和ADOQUERY都有过滤器,  
  ADOTable1->Filtered=false;  
  ADOTable1->Filter="你的过滤条件";  
  ADOTable1->Filtered=true;  
  ADOQUERY的过滤也是这样用Top

4 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 06:47:20 得分 0

怎么做预处理进行限制呀?  
  还有怎么做EDIT限制呀??Top

5 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 06:48:35 得分 0

TO   h98458(零点起飞)    
  就是用FILTER,感觉才有很多错误!!!  
  感觉过滤器特不好用,也可能我不会用,哈哈,希望各位大虾指点!Top

6 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 06:49:52 得分 0

比如用过滤器,如果在EDIT中应该输入的是汉字,但是如果误输入的是些字母什么的,就会出现严重的错误!!!  
  Top

7 楼h98458(零点起飞)回复于 2005-03-16 09:44:22 得分 3

就是用FILTER,感觉才有很多错误!!!  
  -----------------------------------  
  用这个比较特殊,是直接写where子句的,比如直接这样:  
  ADOTable1->Filtered=false;  
  ADOTable1->Filter="ID='"+Edit1->Text+"'";  
  ADOTable1->Filtered=true;  
   
  Top

8 楼h98458(零点起飞)回复于 2005-03-16 09:47:35 得分 2

还有出现什么严重错误?  
  我用过,大不了是查询不出数据而已  
  你可在查查你在设置数据库时和设计程序的字符集是否一致Top

9 楼babycathq2000()回复于 2005-03-16 09:50:33 得分 1

我也有同样的问题  
  Top

10 楼dxhdxh(anyduan)回复于 2005-03-16 10:28:52 得分 1

最好还是自己查询前先处理判断后再执行不过我还是用ADOQUERY多些Top

11 楼babycathq2000()回复于 2005-03-16 10:52:47 得分 1

如果用ADOQUERY,也用filter查询过滤吗?在edit内输入汉字或者字母也是不行的阿,这怎么处理???Top

12 楼rcrain(东方细雨)回复于 2005-03-16 11:29:34 得分 2

比如用过滤器,如果在EDIT中应该输入的是汉字,但是如果误输入的是些字母什么的,就会出现严重的错误!!!  
  --------------------------------  
  如果要查询的条件是汉字,那么在取到Edit中的串时,先做判断,再作为过滤的条件。判断汉字和字母,可以用他们的ASCII码。比如  
  if(Edit->text的ascii码在汉字的范围内)    
  {  
        ADOTable1->Filtered=false;  
        ADOTable1->Filter="ID='"+StrToInt(Edit1->text)+"'";  
        ADOTable1->Filtered=true;  
  }  
  else     提示输入类型不对,请重新输入。  
                                                                                                                         
  Top

13 楼babycathq2000()回复于 2005-03-16 11:33:31 得分 1

定义表时,类型为char,这应该没有问题把???Top

14 楼rcrain(东方细雨)回复于 2005-03-16 11:34:22 得分 1

不管时ADOTable还是ADOQuery,edit输入的内容做条件查询时都要先取出来判断,只有符合字段类型,才可以作为查询条件,ADOTable可以用filter,而ADOQuery,查询条件可以在sql语句的where子句中进行设置。Top

15 楼babycathq2000()回复于 2005-03-16 11:43:42 得分 1

Edit->text的ascii码在汉字的范围内???或者Edit->text的ascii码在字母的范围内???  
   
  这该怎么写???Top

16 楼rcrain(东方细雨)回复于 2005-03-16 12:12:05 得分 0

ASCII(X)>73   AND   ASCII(X)<92   ,打个比方。字母ASCII码值要去查,当然这个方法是我自己想的,也不一定对。汉字有自己的码方式,不是ASCII.Top

17 楼babycathq2000()回复于 2005-03-16 13:55:38 得分 0

BCB中有ASCII(X)>73   AND   ASCII(X)<92   这样的写法吗???Top

18 楼babycathq2000()回复于 2005-03-16 15:12:51 得分 0

大家帮帮忙Top

19 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 15:19:31 得分 0

多谢大家的指点!Top

20 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 15:24:59 得分 0

TO   h98458(零点起飞)  
  还是不行Top

21 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 15:26:21 得分 0

if(RadioGroup1->ItemIndex==0)  
                                  {               try  
                                                                  {  
                                                                                  DataSource1->DataSet=ADOTable1;  
                                                                                  ADOTable1->Active=false;  
                                                                                  ADOTable1->Filter="student_ID='"+Edit1->Text+"   '";  
                                                                                  ADOTable1->Active=true;  
                                                                                  ADOTable1->Filtered=true;  
                                                                    }  
                                                  catch(...)  
                                                  {  
                                                                  ShowMessage("类型不正确!");  
                                                                  Application->Terminate();  
                                                  }  
   
                                  }  
                                  else   if   (RadioGroup1->ItemIndex==1)  
                                  {               DataSource1->DataSet=ADOQuery1;  
                                                  ADOQuery1->Active=false;  
                                                  ADOQuery1->SQL->Clear();  
                                                  ADOQuery1->SQL->Add("select   *   from   student_Info   where   student_ID   like   '%"+Edit1->Text+"%'");  
                                                  ADOQuery1->Active=true;  
                                                  ADOQuery1->Open();  
   
                                  }Top

22 楼zwlyh521(重头大戏)回复于 2005-03-16 22:45:17 得分 1

C++ BCB里弄的 控件和主件连接一顶要弄好呢Top

23 楼zwlyh521(重头大戏)回复于 2005-03-16 22:46:15 得分 0

C++ BCB里弄的 控件和主件连接一顶要弄好呢Top

24 楼xjp6688(大平/要做必须最好)回复于 2005-03-16 22:55:36 得分 0

发现一比较怪现象,如果字段为char类型,这样就没有任何问题,ADOTable1->Active=false;  
                                                                                  ADOTable1->Filter="student_ID='"+Edit1->Text+"   '";  
                                                                                  ADOTable1->Active=true;  
                                                                                  ADOTable1->Filtered=true;  
   
   
  但是总不能要求字段INT??Top

25 楼xjp6688(大平/要做必须最好)回复于 2005-03-17 07:28:45 得分 0

怎么没人回答,总不能要求数据库中的字段都为char吧????  
  Top

26 楼xjp6688(大平/要做必须最好)回复于 2005-03-17 12:15:51 得分 0

高手们呢????Top

27 楼suny803(惊虹飞雪)回复于 2005-03-17 13:37:25 得分 1

你看一下你的student_ID的数据类型,看是不是String型的,如果是将空格去了试一下,用trim()Top

28 楼xjp6688(大平/要做必须最好)回复于 2005-03-17 15:20:26 得分 0

我的student_ID如果改成CHAR类型就没问题,不过我发现如果字段不是CHAR类型什么的,就不行,难到非的字段都是char类型吗,在这个问题上不知是怎么处理的??Top

29 楼xjp6688(大平/要做必须最好)回复于 2005-03-17 15:21:08 得分 0

大家怎么不谈谈经验???Top

30 楼xjp6688(大平/要做必须最好)回复于 2005-03-17 15:21:52 得分 0

用trim处理也不行!!!Top

相关问题

  • 高手救命:AdoTable与AdoQuery出错?
  • 关于adotable和adoquery的错误信息
  • 求adotable或adoquery的添加语句
  • ADOTable和ADOQuery古怪的问题?
  • ADOQuery
  • ADOQuery或ADOTable中有类似BDE的Query和Table的CachedUpdate功能?
  • ADOQuery替换ADOtable出错,could not convert variant of type (null) into type (double).
  • 怎样给数据集(如ADOTable、ADOQuery)增加字段?
  • ADOQuery……
  • ADOQuery

关键词

  • 字段
  • 汉字
  • 查询
  • 字母
  • ascii码
  • 数据库
  • 控件
  • active
  • 内容
  • 数据

得分解答快速导航

  • 帖主:xjp6688
  • h98458
  • scanmaymaymay
  • h98458
  • h98458
  • babycathq2000
  • dxhdxh
  • babycathq2000
  • rcrain
  • babycathq2000
  • rcrain
  • babycathq2000
  • zwlyh521
  • suny803

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo