En Français c'est quoi la question ?
Pourquoi ne pas utiliser un SQL, si tu as une table par mois, un UNION te permettrait de récupérer, SUM MT d'un seul coup
1 2 3 4 5 6 7 8
| SELECT SUM(MT) as Mtot
FROM
(SELECT MT FROM TJan
UNION
SELECT MT FROM TFev
UNION
SELECT MT FROM TMar
) |
si ABSOLUTE DATABASE ne supporte par la requête imbriqué, on peut espérer que cela supporte des tables temporaires
1 2 3 4 5 6
| CREATE TEMPORARY TABLE __CumulMT (MT Integer);
INSERT INTO SumMT SELECT MT FROM TJan;
INSERT INTO SumMT SELECT MT FROM TFev;
INSERT INTO SumMT SELECT MT FROM TMar;
SELECT SUM(MT) as Mtot From __CumulMT;
DROP TEMPORARY TABLE __CumulMT; |
a tenter aussi
INSERT INTO SumMT (SELECT ... UNION SELECT ...);
tu as regarde le TDataSet et ses fonctions de bases comme IsEmpty() ?
RecordCount c'est un Integer, pourquoi comparer à Null ? faut lire la documentation avant de pondre n'importe quoi !
Es-tu un étudiant qui débute ? utilise la Touche F1 pour obtenir l'aide de Delphi 7, elle est de très bonne qualité !
Tu gagneras du temps et de l'expérience à chercher par toi même qu'a venir posé des questions sur le forum, tu ne progresses pas avec cette démarche !
Enfin, c'est pourtant simple !
Voilà un sushi prêt à être gober !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var
Cumul: Integer;
begin
Cumul := 0;
if not DMArch.TJan.IsEmpty then
Inc(Cumul, DMArch.TJan.fieldByName('Mt').AsInteger);
if not DMArch.TFev.IsEmpty then
Inc(Cumul, DMArch.TFev.fieldByName('Mt').AsInteger);
if not DMArch.TMar.IsEmpty then
Inc(Cumul, DMArch.TMar.fieldByName('Mt').AsInteger);
if DM.TCumule.fieldvalues['Mtot'] <> Cumul then
begin
DM.TCumule.edit;
DM.TCumule.fieldvalues['Mtot'] := Cumul ;
DM.TCumule.Post;
end;
end; |
C'est la même chose avec des Double, Inc(c, d) devient c := c + d;
Evite le FieldValues, l'utilisation de variant pour des calculs ce n'est pas malin !
Partager