Conditions simultanées sur code access

Résolu/Fermé
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013 - 17 déc. 2008 à 13:54
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 3 janv. 2009 à 13:35
Bonjour, les amis

je demande votre aide pour un code évènementiel VBA access

voilà , j'ai 3 champs :

- conditionnement (string) : liste déroulante (conventionnel; conteneurisé)
- vide (oui/non)
- plein (oui/non)
- num_plomb (string)

j'aimerais que si le conditionnement est "conteneurisé" et que l'utilisateur ne coche ni le champ "vide" ni le champ "plein", un message apparait pour lui dire de cocher l'une des cases (vide ou plein) et ce, lorqu'il passe au champ num_plomb.

exemple de message : "le conteneur est il vide ou plein ?"

j'espère avoir bien formulé ma requête mais si toutefois mon secoureur trouve que je peux faire plus simple je suis ouvert.

Merci de votre aide!
A voir également:

11 réponses

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
17 déc. 2008 à 15:30
Tu mets dans la zone "Sur réception focus" de la zone Num_plomb un code comme ça:

If me!Conditionnement.Value="Conteneurisé" and me!Plein=False and me!Vide=False then msgbox "Le conteneur est-il vide ou plein?"
0
Tu es un ange. ton code est simple et propre
je doutais du fait que l'on pouvait utiliser 2 fois le "and" moins encore sur reception focus

Anyway, cela me ferait plaisir d'avoir ton mail pour plus d'échange
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
17 déc. 2008 à 21:35
Actually, mon mail est dans mon profil....
0
Bonjour à nouveau LatelyGeek

j'ai encore des pépins, now avec des requetes

j'ai un table nommée "bordereau" comportant des champs :
- nom_chargeur
- date_bordereau
- import (oui/non)
- export (oui/non)
- poids_declare (numérique)

j'ai fait un regroupement sur chargeur et une somme sur poids_declare afin de déterminer d'une part le trafic import par chargeur et d'autre part le trafic global par chargeur. j'ai pris le soin de mettre le mois et l'année en critères car je fais un bilan mensuel.

j'aimerais maintenant avoir le trafic global (trafic import + trafic export) à partir de ces deux requetes toujours avec le critère " mois" et " année". j'avoue que j'ai des difficultés à le réussir et quand je le réussi il ya des doublons. Par exemple l'ordinateur me demande 2 fois l'année et le mois.

j'aimerais que tu me proposes quelque chose de simple ,si possible pas en sql.
je précise que le meme chargeur peut être aujourd'hui à l'import et demain à l'export

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
18 déc. 2008 à 19:03
Si tu ne veux pas de SQL, passe par deux requêtes. Une première avec les critères sur le mois et l'année, et une pour faire la somme. Sinon Access en quelque sorte réexécute la requête au moment de faire la somme.

Tu gardes ta requête initiale sans faire la somme, et ta deuxième requête doit être basée sur la première, tu n'as donc pas besoin de remettre les critères, tu totalises juste les valeurs.
0
Oui ce que tu me proposes marche mais j'ai omis de préciser que je veux que ma requête affiche à la fois : le total import ; le total export; le total global par chargeur et selon les critères mois et année. En voici une esquisse:

nom_chargeur total import total export total gobal [Mois] [Année]

Au fait, j'aurais pu le faire facilement si plutot que de privilegier des cases à cocher, je faisais deux champs(quantité importé, quantité exporté) mais mon problème est que la base est très avancé avec de petits codes çà et là . A défaut de pouvoir m'aider en mode création, je prendrais le sql que tu me proposeras.

Merci pour ton aide
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
19 déc. 2008 à 20:58
Toujours pas besoin de SQL, ce que je t'ai donné jusqu'ici marcherait.

Normalement, tu devrais obtenir dans la première requête:
NomChargeur - Import - Export - Mois - Année (Tu utilises les fonctions Mois et Année pour extraire la stae, et tu mets un critère dessus)

Et dans la deuxième, tu mets:
NomChargeur - Import - Export - Import+Export - Mois - Année, tu mets un regroupement sur le chargeur, le mois et l'année et tu fais la somme des autres champs.
0
Bonjour l'ami
je pense que "you got me wrong". Ce n'est pas qu'il ait deux champs pour le poids_declare non ! pas du tout.

j'ai un seul champ poids_declare. lorsqu'arrive le bordereau je mets le nom du chargeur, la date, je coche soit import ou export et je mets le poids. donc si je coche "import"c'est dire que la quantité inscrite dans "poids_declare" est un quantité importée par le chargeur. si je coche export c'est dire que la quantité inscrite dans "poids_declare" est un quantité exportée.
Maintenant, il arrive que dans le mois un même chargeur fasse des importations à des dates précises du mois et des exportations à d'autres dates indiquées du mois.

je voudrais faire un bilan mensuel:

Pour un chargeur prit dans le mois, je voudrais connaitre la quantité qu'il a importé, la quantité qu'il a exportée, et enfin la quantité totale.

je pense bien que ce qui t'échappe c'est que j'ai des cases à cocher qui déterminent la quantité.

Mon idée à moi c'est de faire :
- first, une requete: nom_chargeur - import (=oui) - IMPORT:poids_declare *je détermine la quantité importée ***
- second, une requete: nom_chargeur - export (=oui) - EXPORT:poids_declare ***je détermine qtité exportée**
- thrid, une requete avec les deux précédentes:
nom_chargeur (table ou requete) - IMPORT - EXPORT - IMPORT + EXPORT- MOIS- ANNEE et je fais un regroupement.

j'avoue que j'y réfléchis encore....tu as, je pense tous les détails now. Help me please.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
23 déc. 2008 à 20:06
Tu peux faire une seule requête à la place des deux premières:
Import:VraiFaux(Import=Oui;PoidsDéclaré;0)
Export:VraiFaux(Export=Oui;PoidsDéclaré;0)

Les deux dans la même requête.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
24 déc. 2008 à 10:05
Merci, l'ami ça marche
Désolé te t'avoir tant importuné. je t'informes de l'évolution de ma base
Merci pour tout.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
24 déc. 2008 à 18:39
Bonsoir latelyGeek
juste une petite curiosité. j'ai crée une liste déroulante qui contient une liste de valeur. dans les propriétés ,j'ai déjà fait des spécifications. (se limiter à la liste =non et auto étendre=oui).

j'aimerais savoir s'il ya une astuce qui permet d'ajouter automatiquement mes nouvelles valeurs dans ma liste déroulante.je veux dire les faire apparaitre dans l'ascenceur.

Si oui, montre moi l'astuce l'ami.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
25 déc. 2008 à 18:37
Si cette liste alimente un champ de ta table, tu peux en fait alimenter la liste à l'aide d'une requête basée sur la table, c'est ce que je fais généralement.

Par exemple si je veux rentrer des clients dans une base et pouvoir utiliser les noms des villes de clients déjà existants, je base la liste déroulante du champ Ville de la table Clients sur une requête et non pas une liste de valeurs.
Cette requête ira lire le champ Ville de la table elle-même, en faisant un regroupement pour ne pas retrouver 20 fois le même nom de ville.

Tu me suis?
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
26 déc. 2008 à 09:26
Bonjour LatelyGeek

je te suis, c'est cool et ça marche.

un autre question:

Comme je te l'avais dit dans ma base, j'ai deux champs à cocher (import, export)

j'ai écrit un code sur l'évènement after_update de sorte qu'on ne puisse cocher les deux cases à la fois.

code import: if import.value =true then export.locked=true else export.locked=false end if
code export: if export.value=true then import.locked=true...

j'ai pas vérrouillé au préalable les champs "import" et "export" du fait des possibilités de modifications.

le code marche sans problème lorsque je fais un nouveau enregistrement. mais lorsque je consulte les enregistrements précédents, je constate qu'il est possible de cocher les deux cases et cela me pertube énormement.

est ce l'emplacement du code qui est problématique ou as tu une meilleure solution?

ailleurs j'ai fait un code ce meme type (ie after_update) :
if conditionnement ="conteneur" then type_iso.locked=true
je constate que là encore pour faire des modifications sur les enregistrements passés. il me faut toujours venir mettre à jour le champ conditionnement avant de modifier le type_iso.

Merci de m'aider à résoudre mon problème.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
2 janv. 2009 à 22:20
Ca ne suffirait pas de faire:

code import: if import.value =true then export.value=false et vice versa?
(Tu peux tout mettre sur la même ligne sans end if puisqu'il n'y a pas de else)

Ca marcherait pour les anciens comme pour les nouveaux.

0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
3 janv. 2009 à 10:46
Bonne et heureuse année à toi LatelyGeek, merci pour des nombreuses aides de 2008

Encore une aide en 2009, si tu me le permets :

j'ai mon champ "conditionnement" en liste déroulante qui contient: (conteneurisé;conventionnel)

selon le conditionnement j'ai des champs qui doivent se verrouillés pour éviter les saisies

j'ai écrit un code after_update :

if conditionnement = "conteneurisé" then

num_conteneur.locked=false
num_plomb.locked =false
else
num_conteneur.locked=true
num_plomb.locked =true
end if

le code marche lorsque je fais un nouveau enregistrement mais lors d'une modification il me faut toujours dérouler et sélectionner "conteneurisé" avant de changer les données et cela quand bien même le champ conditionnement contiendrait le texte "conteneurisé".la réaction de l'ordi est normal car les champs "num_conteneur" et "num_plomb" sont vérrouillés à l'avance.

moi je voudrais pouvoir modifier directement mes données une fois que le champ contient le libellé "conteneurisé"

j'aimerais savoir si c'est le code qui est mal écrit. si oui propose moi une solution.
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427 > unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
3 janv. 2009 à 12:56
Bonjour,
Excusez-moi, je me retire.
Bonne chance.
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
2 janv. 2009 à 22:48
Bonsoir,
Ne serait-il pas plus simple de faire comme proposé ici :http://www.commentcamarche.net/forum/affich 10213381 aide pour evenements access?#1
Au passage, Bonne Année, LatelyGeek
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
3 janv. 2009 à 13:35
A ce moment là, il faut que tu mettes ce code dans la propriété Sur Activation du formulaire. Ca évaluera le contenu u champ Conditionnement à chaque changement d'enregistrement.

Ca ralentit un tout petit peu le fonctionnement, mais ça se justifie.
0