这是我的情况
我有一个名为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“
我设法在经过大量工作后修复此部分,但现在我遇到的问题是当我分配服务器实例时,它被指定为null,无法弄清楚原因,因为在上面的代码中那个,已经在这里待了一段时间但是无法超越这一部分。
答案 0 :(得分:0)
管理以解决此问题: 为了使用本地数据适配器连接到包含数据表的另一个服务,您要同意的服务必须是TDataAbstractService的后代,否则它将返回读取访问错误。
建立连接的代码实际上是正确的。