如何使用字段文本而不是字段值导出TADODataSet [英] how to export TADODataSet with Fields Texts not Fields Values
问题描述
我有一个与存储过程相连的TADODataSet,该存储过程产生40列* 800行
,TADODataSet有一个AfterOpen事件,为该事件分配一个OnGetText就是字段
,如:
I have a TADODataSet connected with a stored procedure which produce 40 Columns * 800 Row the TADODataSet has an AfterOpen event which assign an OnGetText for it is Fields like :
procedure TForm1.ADODataSet1AfterOpen(DataSet: TDataSet);
begin
with DataSet do
begin
Fields[4].DisplayLabel:=TR(AS2); //RefId
Fields[4].DisplayWidth:=8;
Fields[4].Tag:=1;
Fields[4].OnGetText:=RefGetText;
Fields[5].DisplayLabel:=TR(AS3); //ClientId
Fields[5].DisplayWidth:=8;
Fields[5].Tag:=1;
Fields[5].OnGetText:=ClientGetText;
end;
end;
procedure TForm1.RefGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if Sender.DataSet.FieldByName('RelStoreId').AsString='' then
Text:='NO REF ID'
else
KHDM.RefGetText(Sender,Text,DisplayText);
end;
procedure TForm1.ClientGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if Sender.DataSet.FieldByName('ClientId').AsString='' then
Text:='Client ID is not Assigned'
else
KHDM.ClientGetText(Sender,Text,DisplayText);
end;
我想将数据导出为带有文本
的XML在域和记录上循环,因为它非常慢
我想要诸如大容量复制之类的东西流式传输或类似的东西
I want to export the data to an XML with the texts I don't want to make a loop on fields and records because it is very slow I want something like bulk copy to stream or something like that
我无法更改我的方式正在工作,因为大约有800个模块使用相同的方式...
I cannot change the way I'm working because there are around 800 module which using the same way...
请帮助。
推荐答案
我以前使用过这种技术-对您有帮助吗?
我可以看到输出的长度是个问题,但是您可能可以通过某种方式来简化它。也许看看ClientDataset.SavetoFile()方法
I have used this kind of technique before - Any Help to you ? I can see the length of the output is a problem but you might be able to fettle it somehow. Perhaps look at the ClientDataset.SavetoFile() Method
function DataSetToXml(const ADataSet : TOraQuery) : String;
var
Provider : TDataSetProvider;
ClientDataSet : TClientDataset;
begin
Provider := TDataSetProvider.Create(nil);
try
Provider.Name := 'tmpProvider';
Provider.DataSet := ADataSet;
ClientDataSet := TClientDataSet.Create(nil);
try
ClientDataSet.Data := Provider.Data;
Result := ClientDataSet.XMLData;
finally
FreeAndNil(ClientDataSet);
end;
finally
FreeAndNil(Provider);
end;
end;
这篇关于如何使用字段文本而不是字段值导出TADODataSet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!