学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

delphi窗体调用过程中出现access violation,请高手帮忙

delphi窗体调用过程中出现access violation,请高手帮忙

procedure TForm1.Button1Click(Sender: TObject);
var user,temp:string;
begin
user:=Edit1.Text;
temp:='';
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear ;
DataModule1.ADOQuery1.SQL.Text:=('select 门诊编号 from 门诊挂号表 where 门诊编号='''+user+'''');
DataModule1.ADOQuery1.Open;
temp:=DataModule1.ADOQuery1.FieldByName('门诊编号').AsString ;
if temp<>''then
Form5.ShowModal
else
showmessage('输入错误,请重新输入!');
end;

TOP

这个错误是不是一启动就出现的?如果是,那么就是在Options中调整一下创建顺序就可以了.
我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]

TOP

不是的,顺序没问题,Button1的caption属性是正确,如果输入错误值可以正确判断,把调用窗体改为showmessage也能正常运行,就是一输入正确值,调用窗体就出错。

TOP

Application.createForm(TForm5,Form5);
Form5.ShowModal
试试
我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]

TOP

好了,问题解决了,太感谢你了,我已经研究好几天了。

TOP

其实窗体也最好把他看成一个类,
因为delphi提供了继承窗体这样的概念,
所以最好是在将form5.showmodal改为
if not Assigned(Form5) then
begin
  Form5 := TForm5.Create(Application);
  Form5.ShowModal;
end
else
  Form5.BringToFront;
大家都是朋友,有空就来坐坐!

TOP

这个访问违例的错误提示非常极其以及十分不友好

引用:
temp:=DataModule1.ADOQuery1.FieldByName('门诊编号').AsString ;
if temp<>''then
...
判断查询结果是否为空,最好不要用这种方法。

if DataModule1.ADOQuery1.RecordCount>0 then     // RecordCount 为数据集的记录数
...
else
...
爱我至爱,至死不渝!

TOP

谢谢大家的指点,收益匪浅

TOP

发新话题