关于TADOQuery与DataSource->DataSet的问题?

killedkiss 2003-02-14 09:25:28
为什么我这样赋值可以,
DBGrid2->DataSource->DataSet=ADOUQuery1;


以下这样就不可以???
TADOUQuery*ADO=new TADOUQuery;
ADO=DBGrid2->DataSource->DataSet;
出现说类型不同不能赋值的错误,我这样强行转换了也不行
ADO=TADOUQuery(DBGrid2->DataSource->DataSet)

...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Robin 2003-02-19
  • 打赏
  • 举报
回复
高!
呵呵!
windindance 2003-02-14
  • 打赏
  • 举报
回复
TADOQuery *ADO=new TADOQuery(this);
ADO=DBGrid2->DataSource->DataSet;
有两处错误:
应该强制转换:
ADO = dynamic_cast<TADOQuery*>(DBGrid2->DataSource->DataSet);

但是强制转换以后,原来的new TADOQuery(this)成为悬浮指针。

所以标准的用法:
if (TADOQuery *ADO = dynamic_cast<TADOQuery*>(DBGrid2->DataSource->DataSet) )
{
AddListViewPicutures(DBGrid2->DataSource,ADO);
}
killedkiss 2003-02-14
  • 打赏
  • 举报
回复
bluemeteor(挂月||╭∩╮(︶︿︶)╭∩╮)

TADOQuery *ADO=new TADOQuery(this);
ADO=DBGrid2->DataSource->DataSet;

AddListViewPicutures(DBGrid2->DataSource,ADO);
我就是这样写的,可是不行
killedkiss 2003-02-14
  • 打赏
  • 举报
回复
: Drate(鸟窝里的虫)
我的ADO是一个函数的虚参,所以无法象你这样写 怎么办??
bluemeteor 2003-02-14
  • 打赏
  • 举报
回复
这样当然是不可以的....

DBGrid2->DataSource->DataSet这个是一个指向Tdataset类型对象的指针(在delphi)里

如果你DBGrid2->DataSource->DataSet已经指向了一个query类型的对象那么
先创建一个指向ADO的指针,然后把这个DBGrid2->DataSource->DataSet的地址赋值给那个指针

来自delphi版的报道
Billy_Chen28 2003-02-14
  • 打赏
  • 举报
回复
用Clone函数,具体可以看看系统帮助
Junmy 2003-02-14
  • 打赏
  • 举报
回复
问题可能是:你的DBGrid2->DataSource->DataSet是不是空的?如果该值是空的,你就别的TADOUQuery实例赋值或进行强行转换,就难免会出错!请查看一下!
票票飞扬 2003-02-14
  • 打赏
  • 举报
回复
DataSet包括ADOQuery,ADOTable,Query,Table等。
ADOQuery包含于DataSet,所以对DataSet可以用ADOQuery赋值,而不能对ADOQuery用DataSet赋值。
Drate 2003-02-14
  • 打赏
  • 举报
回复
这样是肯定不行的,因为ADO与DBGrid2->DataSource->DataSet都是对象的指针

不知道在BCB中是不是可以这样试试:

ADO.Clone(DBGrid2->DataSource->DataSet);
qingnag 2003-02-14
  • 打赏
  • 举报
回复
同楼上一样。 祝你好运!

1,178

社区成员

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

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