这是我的处境
我有一个名为BaseDataService
的服务,在这里我创建了一个LocalDataAdapter
,我将使用它来连接到一个称为DataBaseLayer
的特定服务。我尝试连接的服务包含具有所有需要使用的数据表的模式。
然后,我创建了另一个从BaseDataService
派生的服务,因此它包含前面提到的LocalDataAdapter
。问题是,在配置本地数据适配器后,我无法打开DataBaseLayer
服务中的数据表。张贴代码:
Procedure TBaseDataService.ConnectDatabaseLayerToAdapter
begin
DataBaseLayerAdapter.ServiceInstance := DatabaseLayerService as IDataAbstractLocalServiceAccess
end
Procedure TBaseDataService.DataAbstractServiceCreate(Sender: TObject);
begin
DataBaseLayerAdapter.ServiceName := ' ';
end
function TBaseDataService.GetDataBaseLayerService: IDataBaseLayerService;
begin
if not Assigned(FDatabaseLayerService) then
FDataBaseLayerService := (CreateAndConnectService('DataBaseLayerService') as IDataBaseLayerService);
Result := FDataBaseLayerService;
end
ConnectDataBaseLayerToAdapter;
tbl_SA_Receipts.Open;
注意:最后一部分是我尝试连接到DataBaseLayerService
的地方。
起初我得到了这个错误:
"服务器上引发异常:Acces Violation ad Adress模块中的014FD9C0。。。。读取地址0000098"
经过大量工作,我设法修复了这一部分,但现在我遇到的问题是,当我分配服务器实例时,它被分配为null,无法找出原因,因为在上面的代码中,我已经在这里呆了一段时间,但无法通过这一部分。
设法解决此问题:为了使用本地数据适配器连接到另一个包含数据表的服务,您要连接的服务必须是TDataAbstractService的后代,否则它将返回读取访问错误。
建立连接的代码实际上是正确的。