VCL控件的ADOConnection传递出错!!!(100分)

  • 主题发起人 主题发起人 lbmjy
  • 开始时间 开始时间
L

lbmjy

Unregistered / Unconfirmed
GUEST, unregistred user!
VCL包中创建Property ADOConnection,在程序运行后返回开发界面,关闭Form出错:
Access Violation at address 4031BE6E in module 'dbrtl60'.Read of address 0000000
 
在设置完连接条件后测试通过吗?
 
我已查出问题的出处,是在控件里创建DataModal,在把ADOConnection赋值给ADODataSet的
Connection后,在调试运行正常,但在返回IDE环境后,再创建新的Apllication或关闭当前
的Application时出此错误。
请教如何解决???[:(]
 
DataModule 何时释放?最好给点代码,象 DataModule 的创建、释放和对Connection 进行
操作的代码。要不很难帮忙。
 
1.Ado有问题
2.可能有的玩意你释放了两次.
3.重开你的Delphi,看看能不能解决.
 
bbkxjy、NoSwing两位说的对,确实是资源释放的问题。在解决此问题的同时发现新
问题:
VCL内的Form上的DataSource控件的DataSet不能引用DataModal内的ADODataSet。是否
是D6的问题?
 
to lbmjy:
不会啊,请确认你的 Form 所在的单元 uses 了 DataModule 所在的单元。手工在 Form
的单元 Implementataion 部分的 uses 子句中加上 datamodule 对应的单元,或在设计
Form 时,按 Alt + F11 引用 DataModule 所在的单元。
 
在正常的Application没问题。但如果在VCl中,DataModal没有TADOConnction控件(连接想由主程序传入),即使
在Form中uses,但赋值就会出错。
 
to lbmjy:
不太明白你的意思,你是将 DataModule 放在 bpl 中,用 LoadPackage 动态加载?还是
放在 dll 中?ADOConnection 在主程序中,而 ADODataSet 在 bpl 里的 DataModule 上?
注意在 Application 中会自动帮你生成创建 DataModule 的代码,而在 Package 中则没有
了,必须自己写代码创建的。
 
我以前见过类似的问题.

destructor destroy;override;

implementation


destructor youcontrol.destroy;
begin
datamodel.free;
inherited destroy;
end;
 
我也遇到了这样的问题,感觉是如果在先创建datamodule
而没有创建主form的话就不行。
比如在.dpr中这样写:
Application.CreateForm(TDM1, DM1);
if LoginValue=1 then
begin
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end
else if LoginValue=2 then
Application.Terminate;

然后在datamodule.oncreate中使loginvalue=2,
其中loginvalue是一个datamodule中的整型全局变量。
运行的时候就会出错。
 
多谢各位。
 

Similar threads

后退
顶部