Hi,
I’m stuck with this problem…
I am trying to streamer a IDataReader to a Delphi client but something is wrong with table schema.
.NET Server:
method DataService.test: RemObjects.SDK.Types.Binary;
var Connection : IAbstractConnection;
lReader : IDataReader;
Cmd : IDbCommand;
SchemaTable : SchemaDataTable;
begin
result := new Binary;
self.ServiceSchemaName := “RODAServerDataset”;
Connection := Engine.obj.connectionManager.AcquireConnection(“MySQL Conn”, true);
//
Cmd := Connection.NewCommand(‘SELECT * FROM VERSAO’);
lReader := Cmd.ExecuteReader;
SchemaTable := Schema.DeriveDataReaderSchema(lReader,‘SQL’);
DataStreamer.InitializeStreamer(result,StreamerInitialization.Write);
DataStreamer.WriteDataReader(lReader,SchemaTable);
DataStreamer.FinalizeStreamer;
end;
Delphi Client:
cds := TDAMemDataTable.Create(nil);
cds.LogicalName := 'SQL';
dataStreamer := TDABin2DataStreamer.Create(nil);
rda := TDARemoteDataAdapter.Create(nil);
rda.DataStreamer := dataStreamer;
rda.RemoteService := RORemoteService;
RORemoteService.ServiceName := ‘DataService’;
// data
rda.GetDataCall.MethodName := ‘test’;
rda.GetDataCall.Default := False;
rda.GetDataCall.Params.Clear;
rda.GetDataCall.Params.Add(‘Result’,rtBinary,fResult);
rda.GetDataCall.IncomingDataParameter := ‘Result’;
rda.Fill([cds], true, true);
But I got the error:
Format of the data in the stream doesn’'t match the destination table format.
The field1 field isn’t found
The field2 field isn’t found
Strange that the errors reports all fields of data comming from .NET server.
It only work with I add manually field definition to TDAMemDataTable before execute RemoteDataAdapter.Fill.
If I use Delphi Server it works perfectly… So I think that something is missing from server side because I don’t have much experience with .NET platform …
Thanks,
Willian.