Requete simple de mise à jour
Le
Txl
Bonjour,
Je voudrais faire une requete de mise à jour qui me permette de
calculer un solde en fonction des enregistrements.
Donc j'ai ma table qui contient les champs
montant
solde
et je voudrais faire une requete qui me sorte le resultat suivant et
mette la table à jour
Montant Solde
3 3
2 5
-4 1
5 6
Etc
Si dans le form de la table je mets un champ =somme([montant]) il me
calcule le total FINAL et pas les "intermédiaires" (ce que je veux) et
donc j'ai crée un champ solde dans la table pour aller y stocker le
solde après chaque nouvel enregistrement, ma requete de base est super
simple
UPDATE tbloperations SET tbloperations.Solde = Sum([montant]);
Et il m'envoie péter sur le thème que l'exression solde n'est pas une
partie de la fonction d'agrégat
Merci de votre aide
Je voudrais faire une requete de mise à jour qui me permette de
calculer un solde en fonction des enregistrements.
Donc j'ai ma table qui contient les champs
montant
solde
et je voudrais faire une requete qui me sorte le resultat suivant et
mette la table à jour
Montant Solde
3 3
2 5
-4 1
5 6
Etc
Si dans le form de la table je mets un champ =somme([montant]) il me
calcule le total FINAL et pas les "intermédiaires" (ce que je veux) et
donc j'ai crée un champ solde dans la table pour aller y stocker le
solde après chaque nouvel enregistrement, ma requete de base est super
simple
UPDATE tbloperations SET tbloperations.Solde = Sum([montant]);
Et il m'envoie péter sur le thème que l'exression solde n'est pas une
partie de la fonction d'agrégat
Merci de votre aide

Poser une question


Bonsoir,
Pour faire ce genre de choses, il vaut mieux utiliser Excel qu'Access :
la notion de ligne précédente y a un sens, alors qu'avec Access, ça n'en
a que si on a une information précise (date, clé, ...). Et même dans ce
cas-là, le fait de stocker une information calculée va à l'encontre des
règles "normales" de bases de données.
Si vous avez une clé incrémentée dans votre table, on peut
éventuellement s'en sortir en faisant quelque chose du genre :
update tbloperations t1 set t1.solde=(select sum(t2.montant) from
tbloperations t2 where t2.cle
mais c'est bien lourdingue...
Franchement, Excel, ce serait mieux :-)
db
Bonjour,
Merci du tuyau mlais je ne veux pas utiliser excel pour ca, j'ai une
autre base qui fonctionne et me donne les infos de facturation et
d'achat qu'il ne faut pour remplir celle la qui va me servir à faire
un prévisionnel de trésorerie et j'ai vraiment pas envie de me
palucher excel pour devoir rerentrer les données...
J'ai un champ "ref" avec incrémentation auto et je peux envisager de
strocker les valeurs dans une table tampon meme si au fur et à mesure
de la croissance de la table ca va ralentir le traitement.
Ca parait incroyable qu'on puisse pas lui dire en gros
"stocke dans le champ solde la valeur du champ solde de
l'enregistrement n-1 additionné à la valeur du champ montant de
l'enregistrement n"....peut etre en vba ?
Merci d'avance
bien sur :)
UPDATE tbloperations SET tbloperations.Solde =
DLookUp("[solde]","tbloperations","[id]=[id]-1")+[montant];
J'ai pas d'erreurs mais ca ne met rien dans le champ solde alors que
les valeurs dans montant sont bien rentrées dans la table operations
J'ai même tenté avec un &nz pour éviter le problème de
l'enregistrement 1 ou il à des problèmes à aller a l'enregistrement
précédent mais ca marche pas mieux
UPDATE tbloperations SET tbloperations.Solde =
DLookUp("[solde]","tbloperations","[id]=" & nz([id]-1))+[montant];
Pareil, pas d'erreur mais pas de résultat
Merci de votre aide
J'ai vu une requête basée sur ce principe il y a quelques mois. J'ai un
peu oublié.
Il me semble que l'idée de l'index est à creuser.
En mettant un "WHERE INDEX<" & INDEX
ou quelque chose du genre, ça peut donner des idées.
Ah oui, c'est normal que ça ne fasse rien...
Et ça :
update tbloperations t1 set t1.solde=(select sum(t2.montant) from
tbloperations t2 where t2.id
ça donne quoi ?
db