delphi离奇报错

李冬宝 2012-02-23 05:01:04
qry.Close;//此处不报错
qry.SQL.Text:= 'xxx';
qry.ExecSQL;

if Application.MessageBox('xxx','',MB_YESNO) = IDYES then
begin
qry.Close;//此处报错
qry.SQL.Text:= 'xxx';
qry.ExecSQL;
end;

跟踪了一下,发现在Application.MessageBox 时,qry被清掉了。。。
这些代码以前都是正常运行的,请教一下,是何种问题?
...全文
340 21 打赏 收藏 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码跳动 2012-02-24
  • 打赏
  • 举报
回复
看不出为什么错,应该有其它原因。
我看见佛 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 s11ss 的回复:]
是application.messagebox报错吧?是被with语句包起来的吧?

引用 10 楼 tangsong78 的回复:
事实上在application.messagebox后,调用任何控件都报错!
但是,在qry前加上 form.qry.close; 就不报错了。
怀疑delphi7或者第三方控件有问题。
[/Quote]这确实是不注意最容易引起错误的地方
s11ss 2012-02-24
  • 打赏
  • 举报
回复
是application.messagebox报错吧?是被with语句包起来的吧?[Quote=引用 10 楼 tangsong78 的回复:]
事实上在application.messagebox后,调用任何控件都报错!
但是,在qry前加上 form.qry.close; 就不报错了。
怀疑delphi7或者第三方控件有问题。
[/Quote]
kaikai_kk 2012-02-24
  • 打赏
  • 举报
回复
是你代码有问题,不是D有bug

这段代码看不出错误,是不是还有其它的代码...
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
问题解决了,是工程指定的search path不对。
谢谢各位参与。
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
在工程里面新建一个页面,只放一个BUTTON和一个ADOQUERY,同样有这个错误。
而在新工程中同样的页面,是没有错误的。
lzg827 2012-02-24
  • 打赏
  • 举报
回复
一点点的删除代码试试,找到出问题的那一行。
“跳到vcl\forms.pas”帮助不大。
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
汇报一点情况。
自己建的工程,在application.messagebox 时f7,直接跳确认框。
出错的老工程,在application.messagebox 时f7,跳到vcl\forms.pas,可以跟踪。

这是啥原因??
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
现在就是不清楚,为什么application.messagebox时,使用qry不能访问控件,而要用form2.qry才能访问?是继承有问题吗?

谁能给点debug的头绪??
我看见佛 2012-02-24
  • 打赏
  • 举报
回复
F7一点点看看
s11ss 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 tangsong78 的回复:]
引用 12 楼 s11ss 的回复:
是application.messagebox报错吧?是被with语句包起来的吧?

引用 10 楼 tangsong78 的回复:
事实上在application.messagebox后,调用任何控件都报错!
但是,在qry前加上 form.qry.close; 就不报错了。
怀疑delphi7或者第三方控件有问题。


没有包什么代码,就……
[/Quote]问题描述得不完整啊,是不是还有时钟、线程什么的操作了那个qry?
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 s11ss 的回复:]
是application.messagebox报错吧?是被with语句包起来的吧?

引用 10 楼 tangsong78 的回复:
事实上在application.messagebox后,调用任何控件都报错!
但是,在qry前加上 form.qry.close; 就不报错了。
怀疑delphi7或者第三方控件有问题。
[/Quote]

没有包什么代码,就是简单的一个click事件:

procedure TForm.btnClick(Sender: TObject);
begin
inherited;
if Application.MessageBox(PChar(' xxxx '),'',MB_YESNO) = IDYES then
begin
qry.Close;
qry.SQL.Text:= 'xxx';
qry.ExecSQL;
end;
end;

我新建一个工程,模仿这些写法,不会报错。。。
李冬宝 2012-02-24
  • 打赏
  • 举报
回复
事实上在application.messagebox后,调用任何控件都报错!
但是,在qry前加上 form.qry.close; 就不报错了。
怀疑delphi7或者第三方控件有问题。
superlixiao78 2012-02-23
  • 打赏
  • 举报
回复
加上一个if qry.active then qry.close;呢
我看见佛 2012-02-23
  • 打赏
  • 举报
回复
qry.Close;这个语句应该是没有问题的,一个QRY是可以调用多次CLOSE的

不过qry.ExecSQL;确实没执行打开数据集,所以执行qry.ExecSQL;
状态应该还是CLOSE的

erhan 2012-02-23
  • 打赏
  • 举报
回复
没有结果集返回的sql,不用close
babydog01 2012-02-23
  • 打赏
  • 举报
回复
如果只是执行SQL语句,只要这样做:
qry.sql.clear;
qry.sql.text:='';
qry.execsql;

如果打开是表
qry.sql.close;
qry.sql.clear;
qry.sql.text:='';
qry.open;
我看见佛 2012-02-23
  • 打赏
  • 举报
回复
或许是AfterEdit那类代码导致SQL语句消失的
lzg827 2012-02-23
  • 打赏
  • 举报
回复
在代码里面铺天盖地的搜索qry,
目的是检测是否有其他地方也在用这个qry,然后不小心清掉了SQL.Text。
神秘的消失了,一定是有原因的。。。嘿嘿
我看见佛 2012-02-23
  • 打赏
  • 举报
回复
qry.Close;//此处不报错
qry.SQL.Text:= 'xxx';
qry.ExecSQL;

if Application.MessageBox('xxx','',MB_YESNO) = IDYES then
begin
qry.Close;//此处报错
qry.SQL.Text:= 'xxx';
qry.ExecSQL;
end;

这两个代码是相连的?还是不是完整代码?
加载更多回复(1)
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

16,741

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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