我有一个与存储过程相连的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
发布评论