客户端用clientdataset,提示CommandText does not return a result set

Lasia龟龟 2008-12-10 02:23:18
rt,服务器端用ADOConnection,ADOQuery和dataSetProvider
客户端用:SocketConnection,ClientDataSet和DataSource
每次使用insert或者delete等语句操作时总会提示刚才的错误,虽然报错,但是插入和删除操作还是正常。

strProNum:= self.ClientDataSet1.Fields[0].AsString;
sql:=' Delete from Product where ProNum=''';
sql:= sql + strProNum ;
sql:= sql + '''';
self.ClientDataSet1.Close;
self.ClientDataSet1.CommandText:=sql;
self.ClientDataSet1.Open;

有人告诉我clientdaset理论上只是负责传输数据的,最好用adoquery。但是有没有其他方法解决呢?不想摒弃原来的配置。或者用adoquery应该怎样连上datasetProvider,或者是adoquery连clientdaset。。具体应该可以怎样做。。

小女子用delphi才几天,很多东西都不懂,因为赶着那个小小项目不得不在没有学过delphi的基础上用,跪求解答。
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lasia龟龟 2008-12-10
  • 打赏
  • 举报
回复
可以了,谢谢。用Execute,然后再加多条select语句再open返回结果集。但为什么我google或者百度总是出不了答案,上来问就那么容易找到答案呢。。

这100点分数就这样散去了
火龙岛主 2008-12-10
  • 打赏
  • 举报
回复
  strProNum:= self.ClientDataSet1.Fields[0].AsString;
sql:=' Delete from Product where ProNum=''';
sql:= sql + strProNum ;
sql:= sql + '''';
self.ClientDataSet1.Close;
self.ClientDataSet1.CommandText:=sql;
self.ClientDataSet1.Execute;

Execute不返回结果集
Open返回结果集
starluck 2008-12-10
  • 打赏
  • 举报
回复


用 EXECSQL 不要用OPEN,因為你不是返回一個數據集,而是執行一個刪除操作
Corn1 2008-12-10
  • 打赏
  • 举报
回复
最后一句,Open改成ExecSQL或Execute(忘了是哪个)
Open是打开数据集,用于select语句。

2,498

社区成员

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

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