存储过程运行后为什么不能用close关闭form?
存储过程已经正常调用了,但我在运行后试着加addform.close;就关不掉,出现错误提示:
project project.exe raised exception class EAccessViolation with message 'Access violation at address 00450A5B in module 'project1.exe'.Read of address 00DE4320'.process stopped.Use step or Run to continue.
addform是添加页的form名.如果不运行存储过程,是可以关掉的,由于是动态加载的,所以在onclose事件中释放资源:
procedure TaddForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
addform.Free;
addform:=nil;
end;
bitbtn2的点击是将form关闭的事件
procedure TaddForm.BitBtn2Click(Sender: TObject);
begin
addform.Close;
end;
调用存储过程的代码如下:
u2_datamodule.DataModulesys.addSP.Close;
u2_datamodule.DataModulesys.addSP.ProcedureName:='dbo.st_addproduct1;1';
u2_datamodule.DataModulesys.addSP.Parameters.CreateParameter('@pro_code',ftstring,pdinput,50,'');
u2_datamodule.DataModulesys.addSP.Parameters.ParamByName('@pro_code').Value:=edit1.Text;
u2_datamodule.DataModulesys.addSP.Prepared;
u2_datamodule.DataModulesys.addSP.ExecProc;
u2_datamodule.DataModulesys.addSP.Parameters.Clear;
不调用存储过程的话,可以用close;将其关闭.
在调用存储过程后是也正常的,可以用form右上角的"X"关闭该form,但是就是不能用close;关闭,一用就出错.
我觉得是调用存储过程的代码有问题,但又看不出问题所在,谢谢大家,帮我看下!