Merci ALWEBER,
Ca devient bon.
J'ai fait quelques essais et je pense pouvoir m'en sortir avec tes indications.
Voici ce que j'ai fait.
1) Je fais la requête par FDQuery.Open
2) Je copie la structure dans FDMemTable: Mais cette opération ne me copie pas les champs calculés !!! Pas grave, je vais les recréer.
FDMemTable1.CopyDataSet(FDQuery1, [coStructure]);
3) Je rajoute donc les champs supplémentaires (1 seul pour l'exemple)
1 2 3 4
|
FDMemTable1.Close;
FDMemTable1.FieldDefs.Add('C0', ftString, 30, false);
FDMemTable1.CreateDataSet; |
4) Je copie les données de FDQuery vers FDMemTable
1 2
|
FDMemTable1.CopyDataSet(FDQuery1, [coRestart, coAppend]); |
Cela me copie aussi le contenu de la colonne C0 !
5) J'applique ton code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Var
stCol : String;
begin
Datasource2.DataSet:=nil;
FDMemTable1.first ;
while not FDMemTable1.eof do
begin
if FDMemTable1.FieldByName ('C0').asString <> '' then stCOl := FDMemTable1.FieldByName ('C0').asString
else
begin
FDMemTable1.edit;
FDMemTable1.FieldByName ('C0').asString := stCol;
FDMemTable1.Post;
end;
FDMemTable1.next;
end;
FDMemTable1.first;
Datasource2.DataSet:=FDMemTable1;
end; |
Il me reste à faire ça dans mon appli pour voir le résultat en vrai grandeur sur des centaines de colonnes calculées..
Partager