datasnap clientdataset missing dataprovider
本帖最后由 thumb0422 于 2013-01-12 23:29:55 编辑
function GetDir(aSql:string;var cds:TClientDataSet):Boolean;
var aTempSqlDataSet:TSQLDataSet;
aTempProvider:TDataSetProvider;
aTempCds:TClientDataSet;
aStream:TStream;
begin
try
aTempSqlDataSet:=TSQLDataSet.Create(nil);
aTempProvider:=TProvider.Create(nil);
aTempCds:=TClientDataSet.Create(nil);
aTempSqlDataSet.SQLConnection:=DM.FBCON;
aTempProvider.DataSet:=aTempSqlDataSet;
aTempCds.Data:=aTempProvider.Data;//missing query....
aTempSqlDataSet.Active:=False;
aTempCds.Active:=False;
aTempSqlDataSet.CommandText:=aSql;
aTempSqlDataSet.Open;
aTempCds.Open;
aTempCds.SaveToStream(aStream);
cds.LoadFromStream(aStream);
finally
FreeAndNil(aTempSqlDataSet);
FreeAndNil(aTempProvider);
FreeAndNil(aTempCds);
end;
end;
即是 动态创建SQLDATASET,CLIENTDATASET 获取数据.
CLIENTDATASET 关联的DATASETPIOVIDER 怎么关联??
[解决办法]
function GetDir(aSql:string;var cds:TClientDataSet):Boolean;
var aTempSqlDataSet:TSQLDataSet;
aTempProvider:TDataSetProvider;
aTempCds:TClientDataSet;
begin
try
aTempSqlDataSet:=TSQLDataSet.Create(nil);
aTempProvider:=TProvider.Create(nil);
aTempCds:=TClientDataSet.Create(nil);
aTempSqlDataSet.SQLConnection:=DM.FBCON;
aTempProvider.DataSet:=aTempSqlDataSet;
aTempProvider.Name:='aTempProvider';
aTempCds.SetProvider(aTempProvider);
aTempSqlDataSet.Active:=False;
aTempCds.Active:=False;
aTempSqlDataSet.CommandText:=aSql;
aTempSqlDataSet.Open;
aTempCds.Open;
cds.CloneCursor(aTempCds,True,False);
finally
FreeAndNil(aTempSqlDataSet);
FreeAndNil(aTempProvider);
FreeAndNil(aTempCds);
end;