[阅读: 506] 2007-02-26 03:09:06
项目里共用一个DATA Module,通过ADO连接Access数据库。Data Modul在主程序启动时自动创建,在FRAME里引用(通过调用参数),FRAME是根据需要创建的。编译可以通过但实际运行时在动态创建的FRAME里出错(根据提示是DataModul没有实例)。到底该如何共用才是科学合理的呢?
主程序:
implementation
uses PublicDBCon;
调用FRAME:
//实例化Frame
if FCableStatus = nil then
begin
FCableStatus := TFmeCableStatus.Create( Application );
FCableStatus.Parent := TabSheetTXXLJK;
FCableStatus.Align := alClient;
FCableStatus.Init(FSysMessage,PublicDBCon.DataModulePublic);//这里传参数
end;
FRAME:
procedure TFmeCableStatus.Init(sysMessage:TFmeMessage;sysDBCon:TDataModulePublic);里
.
.
.
PubDBCon := sysDBCon;
.
.
.
//注释掉的是不用参数传时的代码,正常,可是操作第二个Table时DAO36.DLL出错
//建立数据库连接
//if PubDBCon = nil then begin
//PubDBCon := TDataModulePublic.Create(Application );
//PubDBCon := PublicDBCon.DataModulePublic;
//end;
//下面这句运行时出错
if not PubDBCon.ConnectLocalDB then begin
Application.MessageBox('连接本地数据库出错!', '错误', MB_OK + MB_ICONSTOP);
Exit;
end;
.
.
.
第一个Table操作正常,第二个Table操作(主要是添加记录)老是出错:DAO36.dll错误,提示指针指向了一个非法地址。
