Bonjour
j'utilise un query avec une table name et un datasource et ma table est en access.
Quelqu'un pourrait-il me donner le code pour mettre correctement un affichage
Mrci à vousCode:Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme
Version imprimable
Bonjour
j'utilise un query avec une table name et un datasource et ma table est en access.
Quelqu'un pourrait-il me donner le code pour mettre correctement un affichage
Mrci à vousCode:Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme
je ne vois pas exactement ce que tu veux faire...
pourrais tu donner plus d'explications ?
en fait j'ai une table contenant plusieurs clients et chaque client a des montants en + et en négatifs.
J'aimerai créer une requête sql qui affiche le solde positif ou négatif de chaque client
la table s'appelle MVTS pour désigner un mouvement, le débit et le crédit.Code:
1
2
3
4
5
6 query1.Close; query1.SQL.Clear; query1.SQL.Add('SELECT MVTS.MVTCOMPTE ,Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme FROM MVTS;'); query1.Open;
Je veux confronter le total de ces deux colonnes par client pour obtenir son solde final.
mon code m'indique comme message d'erreur : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée mvtcompte comme une partie de la fonction d'agrégation"
Je ne pige pas trop ce qu'il veut dire. A mon avis, il ne manque quasi rien pour que ce code fonctionne mais bon je suis largué !
merci de m'aider[/code]
"Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée mvtcompte comme une partie de la fonction d'agrégation"
vien du fait que tu doit soit enlever,mvts.mvtcompte de ton select soit, la sommeraussi mais ne connaissant pas tes tables je peu pa te dire.
Sinon pour afficher le résultat, tu pren un datasource tu le lie a ton tquery,et ensuite tu pren a dbgrid et tu la lie au datasource.
J espere t avoir aider...
en fait la table est toute bête
mvts
-----
compte
debit
credit
nom
prenom
...
et je veux faire total debit (par exemple 10000 fr) - total credit (qui est par exemple à 8000 fr) et ainsi obtenir en créant un champ la différence de ces deux montants
si tu a
mvts
-----
compte
debit
credit
nom
prenom
alors debit represente pour un compte, le total des debits de ce compte,et credit represente le total des credit pour le meme compte.
SI c'est le cas essai de faire:
.Code:
1
2 SELECT MVTS.MVTCOMPTE ,(MVTS.MVTDEBIT)-(MVTS.MVTCREDIT) AS Somme FROM MVTS;
je pense que c'est la solution maintenant si j ai encore mal compris ta table...c'est un autre probleme
il manque un GROUPBY MVTS.MVTCOMPTECitation:
Envoyé par bertrand_declerck
Ok en fait j'ai été distrait
c'est une liaison entre deux tables
la première contient le nom du client et la seconde les données chiffrées. J'ai effectué la liaison en access nickel.
Maintenant le code qui ne marche pas est le suivant :
il n'y a pas moyen d'obtenir une somme.Code:
1
2
3
4
5 query1.Close; query1.SQL.Clear; query1.SQL.Add('SELECT DISTINCT CLIENTS.CLINOM1 as CLIENT, MVTS.MVTDATECH as ECHEANCE, MVTS.MVTCLETTR as LETTRE, Sum(MVTS.MVTDEBIT) - Sum(MVTS.MVTCREDIT) AS Somme '); query1.SQL.Add('FROM CLIENTS INNER JOIN MVTS ON CLIENTS.CLICODE = MVTS.MVTCOMPTE WHERE (((MVTS.MVTCLETTR)<>-1)) ORDER BY CLIENTS.CLINOM1, MVTS.MVTDATECH '); query1.Open;
cela plante à chaque fois
je dirai qu'il manque toujours un GROUP BY CLIENTS.CLINOM1, MVTS.MVTDATECH, MVTS.MVTCLETTR
(avant le order by) de tout ce que tu projetes sauf les calculs
si tu y arriver, oublie le sql générer par access car il est incompréhenssible , envoie donc plutot les structures des deux tables et le champ par lequel on peut les lier...
Apres ce sera plus facile pour t'aider
c'est sympa à vous
je vais d'abord essayer le group by : ce dernier est obligatoire lorsqu'on fait des sommes ?
merci à toi shashark et à toi Krusk.
[/img]
il manque :
avant ta clause order byCode:
1
2 GROUP BY CLIENTS.CLINOM1, MVTS.MVTDATECH, MVTS.MVTCLETTR
j'ai trouvé voilà le code solutionné c'est assez logique :
Merci à vousCode:
1
2
3
4
5
6
7
8
9 query1.Close; query1.SQL.Clear; query1.SQL.Add('SELECT DISTINCT CLIENTS.CLINOM1 as CLIENT, Sum(MVTS.MVTDEBIT) - Sum(MVTS.MVTCREDIT) as Somme '); query1.SQL.Add('FROM CLIENTS INNER JOIN MVTS ON CLIENTS.CLICODE = MVTS.MVTCOMPTE '); query1.SQL.Add('WHERE (((MVTS.MVTCLETTR)<>-1)) '); query1.SQL.Add('GROUP BY CLIENTS.CLINOM1 ORDER BY CLIENTS.CLINOM1 '); query1.Open;
de rien :wink:
(tu peux mettre en résolu maintenant :roll: )