-1

这是我的情况

我有一个名为 的服务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.

起初我得到这个错误:

“服务器上引发异常:模块中的访问违规地址 014FD9C0 .... 读取地址 0000098”

经过大量工作后,我设法修复了这部分,但现在我遇到的问题是,当我分配服务器实例时,它被分配为空,无法弄清楚原因,因为在上面的代码中这样做了在这里待了一段时间,但无法通过这部分。

4

1 回答 1

0

设法解决这个问题:为了使用本地数据适配器连接到另一个包含数据表的服务,您要连接的服务必须是 TDataAbstractService 的后代,否则它将返回读取访问错误。

建立连接的代码实际上是正确的。

于 2016-01-11T16:15:29.253 回答