Calcul automatique dans le champ d'une table ? [Access] - Logiciels - Windows & Software
Marsh Posté le 05-07-2006 à 12:01:10
Bonjour
Euh si j'ai bien compris je ne vois pas l'interet...
Une requete calculant le nombre de reference identique pour un meme media devrait suffire...
Donnes moi un peu plus d'explication stp
Cordialement
Marsh Posté le 05-07-2006 à 20:51:49
En fait ms base au départ contenant un champ Qté que je remplissai à la main. C'est pas l'idéal!
Voilà pourquoi je veux faire ça.
Le probléme de calculer le nombre de référence identique est : ma base marche sous le principe d'un code barre qui est le référent des références (donc un code barre peut avoir plusieurs références différentes)...
Mon autre probléme est que lorsque je fais un sous-formulaire pour lister en tableau mes médias, je peux pas calculer les qtés totales de chaques médias.
Je vous remercie pour les réponses rapides...
Marsh Posté le 06-07-2006 à 12:33:38
Bonjour
Désolé, je ne comprends vraiment pas le probleme... Pourquoi ne pas passer par une requete de mise a jour de ta table qui calcul le total en fonction du média... au lieu de saisir a la main...
Si tu as la possibilité de la mettre en DL ca serait pas mal...
Cordialement
Marsh Posté le 06-07-2006 à 19:00:20
Bonjours,
Désolé mais je comprend pas ce que tu veux me dire :
* Comment fais-t-on une requete permettant une mise à jour de la table comme tu le suggére ?
* Que veut dire mettre en DL ?
Je débute avec Access, donc je suis un peu perdu !
Salutations...
Marsh Posté le 06-07-2006 à 19:46:36
Salut, je ne sais pas si les trigger existent sous Access, mais si c'est possible :
- tu créés un trigger auquel tu associes une requete qui met à jour le champ qteentempreel
- tu déclenches ton trigger quand, par exemple, un nouveau média rst inséré dans ta table.
a+
Marsh Posté le 06-07-2006 à 20:47:09
On va dire que je suis bête, mais bon ... c'est quoi un trigger ?
merci!
Marsh Posté le 06-07-2006 à 22:43:50
Excuses moi pour la typographie... DL veut dire downloader, en telechargement en fait, que je zieute ta base.
Marsh Posté le 07-07-2006 à 00:09:30
Adrienm a écrit : On va dire que je suis bête, mais bon ... c'est quoi un trigger ? |
Un événement qui se déclenche automatiquement à toute insertion/suppression/mise-à-jour de la base.
Malheureusement non géré sous Access il me semble.
Marsh Posté le 07-07-2006 à 07:00:18
Bonjour,
les évènements sont gérables à tous les niveaux (ou presque) dans vba
Cordialement
Marsh Posté le 07-07-2006 à 09:43:41
ReplyMarsh Posté le 07-07-2006 à 10:26:09
Bonjour, dje69r,
en fait je n'ai pas compris le pb d'Adrienm un peu plus de détails sur le fonctionnement de la base seraient les bienvenus. le "DL" par exemple
Cordialement
Marsh Posté le 07-07-2006 à 10:41:43
Re
Il veut tout simplement mettre a jour un champs "total" de sa table Media. Ce champs est calculé. C'est le total des références pour un media concerné.
Le problème c'est qu'il ne sait pas faire une requête Maj, donc faire un regroupement se doit etre la meme chose. D'où ma proposition qu'il mette sa base en DL (DL = downloader), en telechargement pour que l'on puisse regarder cela de plus pret.
Cordialement
Marsh Posté le 08-07-2006 à 14:07:36
Bonjours,
Excusez moi pour le retard mais j'ai pas reussi à accéder au forum hier...!
Je vous met en DL ma base ici, c'est un fichier ZIP avec tout ce qui est nécessaire.
Merci à tous ...!
Marsh Posté le 10-07-2006 à 20:54:59
Salut à tous !
Si vous avez télécharger ma base, dite moi ce que vous en pensez, j'attend vos réactions et surtout la résolution de mon problème si possible !
Merci à tous, bonne soirée...
Marsh Posté le 10-07-2006 à 22:47:53
1 ) Pourquoi ne crées tu pas une table associative entre ta reference et ton media ?
2) je ne trouve pas ton champs qteentempreel
3) Aucune liaison entre les tables, pas franchement evident de s'y retrouver...
4) Rééxplique moi, si tu le peux, un peu mieux ce que tu souhaites.
Cordialement
Marsh Posté le 11-07-2006 à 00:06:20
Merci déjà d'avoir répondu si vite et aussi d'avoir regardé mon problème.
Je vais essayer de répondre à chaqu'une de tes questions :
1/ Je sais pas ce que tu entend par "table associative".
2/ En fait, je me suis trompé dans la table "média", c'est le champ nommé "quantité total".
3/ J'avais déjà entendu parler de ce système de liaison entre tables, mais sans vraiment comprendre et vu que j'ai pas été confronté à ce problème, je n'en suis pas soucié... C'est peut-être là qu'est mon problème ?
4/ Pour la rééxplication de ce que je souhaite faire :
Le champ "quantité total" (dit "qteentempreel" précédément) de la table "média" doit calculer en temps réel la quantité disponible pour ce média.
A savoir qu'un média a forcement une ou plusieurs références associées (mais une référence est unique et n'appartient qu'à un seul média).
Pour identifier un média, on se référe à son code barre commercial, qui est un peu l'ID du média. Ainsi l'utilisateur enregistre un média par son code barre puis sa référence.
Ensuite le champ "quantité total" calcule tout seul le nombre d'exemplaire(s) disponible(s) en temps réel, soit la somme du champ "qté en temps réel" de la table "codebarreind/ref" relié au média grâce au champ "code barre" (identique entre les deux tables).
Actuellement le champ "qté en temps réel" de la table "codebarreind/ref" est modifié manuellement par l'utilisateur, il convient par la suite de faire un calcul automatique en fonction des inventaires et mouvements réalisés sur ce média. Ce projet est pour plus tard (quelques semaines voir quelques jours) si je réussi déjà régler ce problème...
J'espere que mes explications sont claires, si cela n'est pas le cas, n'hésitez pas à me demander des informations supplémentaires...
Je remercie vivement dje69r qui s'implique et qui m'aide à avancer... merci à toi !
Marsh Posté le 11-07-2006 à 11:26:26
Bonjour
1 ) Pourquoi ne crées tu pas une table associative entre ta reference et ton media ? <(--- Donc si tu as un média qui a plusieurs références (si j'ai mal compris reprends moi) dans ta table média, tu auras combien d'occurence de ce dit média ? En gros, est-ce que si ton média à deux références, tu auras deux enregistrements dans ta table média ?
Cordialement
PS : de rien pour l'aide, c'est justement fait pour ce forum Mais là je me trouve un peu lent a la comprenette ! lol
Marsh Posté le 11-07-2006 à 12:21:03
Bonjour,
J'ai compris qu'il y avait plusieurs occurences dans la table codebarreind/ref liées à un occurence de la table média par le codebarre. (mais dans la table donnée en exemple il n'y a qu'une occurence et le codebarreind/ref à la même valeur que le code barre, ce qui n'est pas vraiment explicite) et que dans son total il veut le cumul des quantités de chacunes des codebarreind/ref ayant le même code barre.
Cordialement
Marsh Posté le 11-07-2006 à 12:37:15
Je vois que mon histoire n'est pas très clair, je l'avoue...
seniorpapou a raison c'est comme ça que cela marche.
Dans la base donnée en exemple j'ai mis le code barre et la référence égales... C'est vrai que c'est pas très clair!
Si mon média a deux références, ce média aura alors deux enregistrements de la table "codebarreind/ref" associé. Ce média restera unique (ne sera qu'une seule fois dans la table "média" ) grâce au code barre qui ne doit pas avoir de doublon dans cette table...
Voici un autre exemple :
J'ai deux paquets de 500 feuilles simples perforées de même code barre (donc implicitement de même marque, mêmes caractéristiques). Voilà comme la base et l'utilisateur va ou doit traiter cette information :
J'espere qu'avec un nouveau exemple cela est plus comprehensible !!!???
Salutations
Marsh Posté le 11-07-2006 à 21:04:39
Hum j'avoue que ton exemple m'a plus largué qu'autre chose...
Tu veux en fait le nombre d'occurence de la table codebarreind/ref associé a chaque média pour un média donné ?
Donc a chaque fois qu'un nouveau code barre apparait dans la table codebarreind/ref et qu'il est associé a un média, le champs QuantitéTotal doit se mettre à jour pour le média concerné ?
Marsh Posté le 11-07-2006 à 21:32:07
Désolé pour l'exemple, je pensais qu'il allait t'aider...
Voilà c'est ça... chaques occurences de la table codebarreind/ref est obligatoirement associées à un média par l'intermédiaire du code barre. Ce que je souhaite faire c'est la mise à jour du champ Quantitétotal qui sera égale à la somme des champs qtéentempréel de la table codebarreind/ref pour les occurences associées à un média en question...
Salutations et bonne soirée!
Marsh Posté le 11-07-2006 à 21:36:12
Mais... ton champs qtéentempréel n'est il pas le reflet de Quantitétotal ? Car logiquement la quantité en temps réelle est = a la quantité totale non ? EDIT Enfin moi j'ai fait comme ca, mais c'est modifiable hein
Essaies ca et dis moi : Ici
EDIT2 : apres chaques nouvelle saisie d'un code barre, je met a jour les champs de la table media ET de la table codebarre
Macro : macro2 (oui je me suis forcé pour le nom)
requete : bah t'en avais qu'une donc trouver les nouvelles devrait etre aisé... lol
Marsh Posté le 11-07-2006 à 23:38:47
J'ai regardé ce que tu as fait, je découvre de nouvelles fonctions grâce à ce que tu m'a donné! merci...
Je vais aussi t'avouer que je comprend pas tous dans les requetes!
En fait c'est le contraire c'est le champ quantitétotal de la table média qui est le reflet du champ qtéentempréel. Et effectivement la somme des toutes les qtéentempréel est égale à la quantitétotal, c'est que je cherche à faire en tout cas.
Pour illustrer : quand tu va dans le formulaire nommé {ad}modifiermédia, sélectionne le code barre 1324564534534 (Le monde de Narnia), puis va dans "codes et quantités". En bas à gauche, il y a une ligne "quantité total". Le nombre qui s'affiche est le nombre que je souhaite qui soit automatiquement calculé dans la table "média" puis dans le champ "quantitétotal". Regarde le calcul je pense que tu comprendras mieux après ce que je souhaite faire... Cela est peut-être mieux que de longues explications ...
Je viens de remarquer une petite erreur : toujours dans le même formulaire et même onglet : dans le sous-formulaire où il y a la liste des références... Le champ qtéentempréel est verrouillé... il ne devrait pas!
Tchao! Je vais dormir maintenant aprés toute une aprés-midi sur ma base ...
Marsh Posté le 11-07-2006 à 23:50:10
Bonsoir
Pour moi ton champs en bas a gauche de ton formulaire n'est pas bon. Car il prend la somme de tes quantitétotal ou qtéentempréel je ne sais plus, mais peu importe. Si a chaque fois tu réactualises ce champ, forcement ton total calculé à partir de ce champ ne sera pas bon vu que le vrai total est deja dans le champs qtéentempréel ou quantitétotale.
Ex : si tu as 3 occurences de code barre pour un média, tu as forcement 3 dans qtéentempréel et quantitétotal (ceci apres les modifs que j'ai apporté). Donc si tu fais le total de ce champs tu obtiens 9 (3+3+3 vu que dans chaque enregistrement tu as 3 dans le champs), ca ne reflete donc pas la réalité vu que tu n'as que 3 occurences et pas 9.
Si tu regardes dans ton forumlaire en liste ou tu as tous les code barre saisis, tu verras que le champs se met a jour et compte combien de code barre identique sont affectés au média.
Apres je n'ai peut etre toujours pas compris ce que tu souhaitais, ce qui est fort possible... lol
Cordialement
PS : si tu as besoin de plus amples explications, notament sur les requetes, je t'ai laissé mon mail
Marsh Posté le 12-07-2006 à 13:01:35
Bonjour,
on y arrivera: Adriem tu veux qu'à chaque fois que tu modifies la valeur dans codebarreind/ref , tu retrouves l'équivalent du fille199.formulaire!somme dans la table media zone :quantité totale.
si la réponse est non, je n'ai rein compris.
si la réponse est oui, dans chaque formulaire où tu modifies la quantitétemps réel, piques l'évènement after update du controle quantitéentemps réel, dans le vba fais un find du record de latable media qui a le même code barre, puis edit modification avec la valeur somme update close
avec les macros standart je ne sais pas faire
en vba dje69r et moi pouvons t'aider
Cordialement
Marsh Posté le 12-07-2006 à 14:22:04
Bonjours,
seniorpapou a écrit : tu veux qu'à chaque fois que tu modifies la valeur dans codebarreind/ref , tu retrouves l'équivalent du fille199.formulaire!somme dans la table media zone :quantité totale. |
C'est ça, oui seniorpapou, on va y arriver ...
Après j'ai rien compris à ce que tu m'as dit : VBA, évènement after update ... !
Avant d'avoir vu ton message, j'avais refait un fichier .zip avec des fichiers pour vous comprenniez ce que j'attend, avec une image jpeg, le même base mais avec un autre enregistrement et un PDF ... Téléchargement-ici !
Merci, salutations
Marsh Posté le 12-07-2006 à 14:39:19
hum, ce qui veut dire, dites moi si je me trompe, que la somme en bas a gauche du formulaire est égale à quantitéentempsreelle de la table média ?
Donc vu que je mets deja a jour ce champs, quantitéentempsreelle (qui est la somme des code barres pour un media) il suffit juste de dire que Champs en bas a gauche = quantitéentempsreelle soit un definirvaleur en macro standard soit en vba (visual basic pour application)
Tu ne m'as pas repondu Adrienm "apres chaques nouvelle saisie d'un code barre, je met a jour les champs de la table media ET de la table codebarre" <(--- est-ce que c'est cela que tu veux ? Plus le total en bas a gauche correspondant ?
As tu regardé les modifications que j'ai apporté apres mise a jour du champs ou tu saisis le code barre ? (dsl je n'ai pas ta base au bureau)
Ne desespere pas Adrienm, on va s'en sortir
EDIT : je regarderais tes fichiers ce soir
Marsh Posté le 12-07-2006 à 15:46:24
C'est pas grave on regardera ça dans la soirée !
SuppotDeSaTante a écrit : la somme en bas a gauche du formulaire est égale à quantitéentempsreelle de la table média ? |
>>> C'est pas de la table "média" mais que la table "codebarreind/ref".
SuppotDeSaTante a écrit : Donc vu que je mets deja a jour ce champs, quantitéentempsreelle (qui est la somme des code barres pour un media) il suffit juste de dire que Champs en bas a gauche = quantitéentempsreelle |
>>> quantitéentempsréel est un champ rempli par l'utilisateur dans la table "codebarreind/ref". C'est la somme des quantitéentempsreel = quantitétotal = fille199.formulaire!somme (fille199 en italique car je sais pas vraiment si c'est ça!), pour un média donné!
Oui, j'ai regardé ce que tu avais fait, j'ai pas tout compris... malgrés ton effort, cela ne fait pas l'effet souhaité!
Bonne après-midi!
Marsh Posté le 12-07-2006 à 15:50:29
Okiiii
J'ai compris. Le 1er qui dit "alleluia" je lui fait manger de la tatane d'été
Je te fais ca ce soir (avec explications bien entendu)
Marsh Posté le 12-07-2006 à 16:02:35
Vraiment merci beaucoup ...
Je suis content qu'on ai réussi déjà ce comprendre, on se reparle ce soir ...
Marsh Posté le 13-07-2006 à 09:48:10
Bonjour
Alors après avoir fait de petits tests, relu les posts, il s'avère que l'explication de Seniorpapou est la bonne
Citation : si la réponse est oui, dans chaque formulaire où tu modifies la quantitétemps réel, piques l'évènement after update du contrôle quantitéentemps réel, dans le vba fais un find du record de latable media qui a le même code barre, puis edit modification avec la valeur somme update close |
Pour expliquer en clair : (dis moi si je me trompe)
A chaque fois que tu modifies la valeur de codebarreind/ref tu veux que ton champs QuantitéTotale soit égale a ton champs en bas à gauche de ton formulaire qui calcul le total ?
Pour t'expliquer plus simplement ce qu'a voulu dire Seniorpapou :
Citation : piques l'évènement after update du controle quantitéentemps réel |
Il faut que tu regardes les événements de ton contrôle quantitéentempsreelle --> En mode création, click droit sur le contrôle quantitéentempsréelle, propriété, onglet événement, ligne Apres Mise a jour.
Citation : dans le vba fais un find du record de latable media qui a le même code barre |
Il faut que tu trouves dans la table media l'enregistrement qui a le même code barre que l'enregistrement sur lequel tu te trouves dans ton formulaire de saisie. Pour cela tu peux utiliser un "find du record", méthode utilisée dans vba (visual basic pour application, du code de programmation grosso modo) soit faire une requête pour trouver ce dit enregistrement (une des deux requêtes que j'ai fait doit correspondre, celle dont le nom à "media" à la fin)
Citation : puis edit modification avec la valeur somme update close |
Puis tu mets à jour le champs de l'enregistrement trouvé, soit par la méthode find, soit par le biais de la requête (qui deviendra en fait une requête mise a jour... logique non ? ). Il doit être égale à la valeur qu'il y a dans ton champ en bas a gauche (ton total)
Voila maintenant que tu as l'explication, dis nous si tu veux qu'on le fasse et que tu vérifies, ou si tu veux essayer de piger tout seul comme un grand... La seconde méthode n'est pas male, parce qu'à mon avis, tu vas tomber sur des os obligatoirement dans la suite de ton développement.
Tu as des tutos ici et là sur le net pour assimiler le fonctionnement des requêtes. Jette un oeil, c'est toujours intéressant.
Cordialement.
Marsh Posté le 13-07-2006 à 10:26:22
Bonjour,
j'ai survolé le mdb que tu (dje69r) as envoyé le 11/7 à 21h36
je n'ai jamais pratiqué les "macro" mais ta requète mise a jour (macro1 ?) me laisse suppposer, que placée dans la case après maj de "quantité en temps réelle", et avec les bonnes instructions: mettre dans média.quantité totale = somme(du s/s formulaire ) cela devrait fonctionner?? si tu la génères, tu me fais un tut pour ma curiosité personnelle je n'ai pas envie de mourir trop idiot
Merci
Cordialement
Marsh Posté le 13-07-2006 à 11:30:20
Oui ca devrait... lol
Oui oui pas de souci je la mettrais ici en DL (telelechargement :þ)
Quand j'ai commencé sur la suite Office on faisait tout en macro (Access et surtout Excel) donc j'ai gardé ce vieux reflexe. Puis je trouve dans Access que c'est mieux d'avoir le nom de la macro, plutot que [procedure evenementielle] ca me parle mieux... Apres avec les machines d'aujourd'hui la rapidité d'execution d'une macro ou d'une fonction...
EDIT : j'insiste sur les requetes et macro (et peu sur le vb) car notre ami n'a pas l'air d'un programmeur. Et c'est quand meme plus facil a piger qu'une requete SQL ou du code...
Cordialement
Marsh Posté le 13-07-2006 à 12:01:36
Essaies ca : Ici
Cordialement
Marsh Posté le 13-07-2006 à 12:24:06
Merci, je viens de tester ce que m'a donné...
Ca marche comme je le souhaite et ça c'est bien... un grand merci !
Il y a encore un hic, en regardant ce que tu as fait, j'ai remarqué que cela ne marchais que lorsque l'on modifie l'enregistrement mais pas quand on crée un nouveau média...! Il suffit de faire pareil j'imagine ?
Salutations...
Marsh Posté le 13-07-2006 à 14:03:46
Ca ne marche que quand tu mets a jour le champ QtéEnTempReelle
Citation : Il faut que tu regardes les événements de ton contrôle quantitéentempsreelle --> En mode création, click droit sur le contrôle quantitéentempsréelle, propriété, onglet événement, ligne Apres Mise a jour. |
Si tu créés un nouveau média, le total ne devrait il pas etre à 1...?
Pour seniorpapou, on aurait aussi pu faire un Dsum avec une close where... Mais je ne voulais pas qu'il soit "trop largué" alors j'ai fait au plus simple.
Cordialement.
PS : si je peux me permettre un petit conseil. Laisse tes controles onglets avec les onglets et ajoute une macro qui sur ouverture, masque les onglet. Beaucoup plus simple a gerer qd tu passes en mode creation sur un formulaire.
Marsh Posté le 13-07-2006 à 18:43:50
Bonsoir,
rassures-toi, moi je suis complètement largué avec les macros, mais je crois que j'avais renoncé à leur utilisation parce que je les trouvais plus contraignantes que vba, du coup, je me plongerai peut-être un jour dedans.
Et la tatane d'été, je n'y ai pas goûté, pourtant j'ai dit alleluia
Cordialement
Marsh Posté le 05-07-2006 à 11:39:07
Salut à tous !
Voilà j'ai une base de donnée où je répertorie tout genre de média (CD, DVD, Livres, ...)...
Mon probléme c'est que je voudrai que la quantité soit calculé automatiquement et insérer dans le champ "qteentempreel" de ma table "media". Es-possible ?
Pourquoi faire ça ? Mes médias sont classés par leur code barre mais comme un média peut avoir plusieurs références, je souhaite donc que le champ "qteentempreel" calcule automatique la quantité totale des référence disponible pour le média concerné...
J'espere que vous avez compris !!!
J'attend vos réponses ...
Message édité par Adrienm le 05-07-2006 à 20:45:11
---------------
Adrien