我使用Query控件出现了如下问题:'Error creating cursor handle'

liang_jimmy 2002-04-11 12:03:37
我使用的Query如下:
ProductName := Query1.FieldByName('ProductName').Asstring;
NotDealUnit := NotDealUnit - UnitQuantity;
NotDealQuantity := QuantityPerUnit * NotDealUnit;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Update Products');
Query1.SQL.Add('SET NotDealUnit=:NotDealUnit,');
Query1.SQL.Add('NotDealQuantity=:NotDealQuantity');
Query1.SQL.Add('Where ProductName=:ProductName');
Query1.ParamByName('NotDealUnit').AsFloat := NotDealUnit;
Query1.ParamByName('NotDealQuantity').AsFloat := NotDealQuantity;
Query1.ParamByName('ProductName').AsString := ProductName;
Edit9.Text:= Query1.SQL.Text;
Query1.Active:=True;

应用系统生成以后运行,当要实现该功能时,系统发生如下错误:
Class ENoResultSet with message: 'Error Creating cursor handle'
请问该问题如何解决?
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chechy 2002-04-11
  • 打赏
  • 举报
回复
将下面这句
Query1.Active:=True
改为
Query1.ExecSQL
dreamfan 2002-04-11
  • 打赏
  • 举报
回复
Y
hjhhjh 2002-04-11
  • 打赏
  • 举报
回复
加一句
Query1.ExecSQL
DELETE、UPDATE、INSERT等用ExecSql
Select用Open
Michaelyfj 2002-04-11
  • 打赏
  • 举报
回复
把query.open 改成query.execsql;

如果是select .. from ..要用open
其他如update, delete..等要用execsql
wjohenw 2002-04-11
  • 打赏
  • 举报
回复
多谢楼上,我也是来问这个问题的哈哈
我的是query.sql.add('alter talbe tablename add age int')
query.open;
出现和你相同的错误
哈哈,多谢楼上
Liusp 2002-04-11
  • 打赏
  • 举报
回复
凡是有返回值的如 Select或一些存储过程,TQuery执行时用OPEN,而象DELETE、UPDATE、INSERT等没有返回的则用EXECSQL
zhenjie 2002-04-11
  • 打赏
  • 举报
回复
没有数据返回值的操作sql语句是不允许用open之类的操作动作的,只允许使用exesql方法。

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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