aliilyas
Messages postés31Date d'inscriptionlundi 29 juin 2009StatutMembreDernière intervention 5 février 2014 2 mai 2013 à 17:32
procedure ConvertTable(ds : TDataset);
var i : integer;
RecordBuffer : string;
begin
ds.Open;
while not ds.EOF do begin
RecordBuffer := '';
for i := 0 to ds.FieldCount - 1 do
case ds.Fields[i].DataType of
ftString : RecordBuffer := RecordBuffer + ds.Fields[i].AsString + #9; //you should add some kind of delimiter between fields unless you decide to pad everything
ftInteger : RecordBuffer := RecordBuffer + IntToStr(ds.Fields[i].AsInteger) + #9;
ftDateTime : RecordBuffer := RecordBuffer + FormatDateTime('YYYY-MM-DD', ds.Fields[i].AsDateTime) + #9;
ftBoolean : if ds.Fields[i].AsBoolean then RecordBuffer := RecordBuffer + 'Y' + #9 else RecordBuffer := RecordBuffer + 'N' = #9;
//add any type you need. Memos are tricky because they can be huge. As a suggestion, you may want to convert them in separate text files and add the name of the file in RecordBuffer.
end; //case
RecordBuffer := RecordBuffer + #13; //Using a CR as a record delimiter is better than using the vertical separator since text fields may never contain CR but you will be the judge of that.
//here you write recordbuffer into your text file and you are ready to process the next record.
ds.Next;
end; //while
1)Merci d'utiliser la balise code
2)Merci d'indenter le code (La c'est indéchiffrable)
3)Merci de donner le nom de l'auteur de ce code ou de donner le lien