Pb avec Access

Salut à tous,

j'ai un petit problème dans la création d'une de mes bases :

j'ai créé une base "client" : dedans, j'ai ajouté les critères : Mademoiselle, Madame, Monsieur.

Lors de la création du formulaire, la personne pourra choisir entre l'un de ces 3 propositions. Mais lors du remplissage dans ma table, je peux sélectionner les 3 choix.

En fait, j'ai oublié un truc dans mes critères et surement dans la case "Valide si". j'ai :

Mademoiselle ---> OUI ou NON
Madame ----> OUI ou NON
Monsieur ---> OUI ou NON

je souhaiterais pouvoir cocher Mademoiselle si Madame et Monsieur sont à NON? j'ai tourné dans tout les sens mais je trouve pas la bonne syntaxe.

Pouvez-vous m'aider s'il vous plait.

merci d'avance.

Damien

33 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Le problème porte sur la gestion de la civilité dans une base: trois critères Oui/Non (Mademoiselle, Madame, Monsieur) peuvent être cochés simultanément, générant des incohérences. La solution préconisée consiste à modifier la structure: remplacer les 3 champs Oui/Non par un seul champ chaîne de caractères autorisant une liste de valeurs (monsieur, madame, mademoiselle). Cette approche évite les combinaisons multiples et empêche les saisies incohérentes, mais suppose de réviser la structure et les objets dépendants dès l'ajout de nouvelles valeurs. Pour renforcer la saisie, certains suggèrent aussi d'utiliser un groupe d'options (boutons radio) afin de limiter le choix à une seule civilité affichée.

Bobot (l’IA à votre service)
  1. c'est-à-dire "ça marche pas"?

    kinder.surprise,
    le maton du matou
    1. voila kinder, je garde celui-la, tu peux enlever l'autre stp. Blux, je t'envoie un mail et on verra si toi tu comprend mon pb. En tout cas, merci à tous pour l'aide mais pour le moment, soit je suis débile,soit vos propositions sont fausses :op, mais ça marche pas :'(.
      1. Comme ça commençais à être le bazar dans ma base, j'en est refait une plus propre qui permet de montrer mon pb. Je veux bien te l'envoyé par mail si tu es partant, mais il me faudrait ton mail.

        merci :o)
        1. Modérateur
          denis.mail.list chez free.fr

          A+ Blux
           "Les cons, ça ose tout.
          C'est même à ça qu'on les reconnait"
      2. Modérateur
        forms.test.nom;
        forms.test.nom.value ?

        A+ Blux
         "Les cons, ça ose tout.
        C'est même à ça qu'on les reconnait"
        1. En fait, je veux juste obtenir les différents prénoms possibles que je pourrait avoir en tapant le nom.

          Pour cela, j'ai fait une zone de texte du nom mais après, pour avoir une liste des différents prénom, j'avais mis une zone de liste réagissant avec un requète SQL et me donner la liste des prénoms possibles. Cependant, j'arrivais à la faire que lors de la 1ere utilisation et une fois que je retapais le nom, je n'obtenais pas les différents prénoms possibles.

          C'est ça mon bug.

          kinder.surprise a voulu m'aider en me disant :
          "SELECT machin_truc FROM zigouigoui WHERE bidule = forms.ton_formulaire.ton_controle"
          ou encore
          "je te l'ai dit, la méthode Requery (par exemple sur l'AfterUpdate de ton champ)"

          donc si je résume je devrais avoir Select prenom from coordonnees where nom=forms.test.nom;

          et bien, ça foirouille :'(
          1. je t'ai répondu dans l'autre post.

            il faut en choisir un des deux, on ne peut poursuivre la conversation dans deux posts, choisis celui que tu veux garder et celui que je peux fermer stp

            kinder.surprise,
            le maton du matou
        2. Modérateur
          En fait, j'arrive à le faire une fois, mais quand je veux de nouveau, rentrer un nom, c'est la que ça bug vu qu'il ne veux plus me donner la liste des prénoms.
          C'est quoi le bug ?

          En regardant ton code, je m'aperçois qu'il y a une requète SQL, ne peux-t-on pas la taper directement?
          Si, mais quel est l'intérêt ?

          A+ Blux
           "Les cons, ça ose tout.
          C'est même à ça qu'on les reconnait"
          1. merci blux mais tu m'as encore plus embrouillé lol, enfin ça cogite dans ma tête.

            Peux-tu m'expliquer pourquoi créé un sous-formulaire et ne pas mettre tout simplement 2 champs : Nom et Prénom? et fait une recherche directe.

            Je m'en fou qu'il me sorte le client en "live", ce que j'aimerais avoir, c'est : je tape mon nom en entier et après, je voit apparaître les prénoms disponible, j'en sélectionne un et tout s'affiche.

            En fait, j'arrive à le faire une fois, mais quand je veux de nouveau, rentrer un nom, c'est la que ça bug vu qu'il ne veux plus me donner la liste des prénoms.

            En regardant ton code, je m'aperçois qu'il y a une requète SQL, ne peux-t-on pas la taper directement?

            merci
            1. Chez moi ça a marché...mais c'est vrai que ça n'a pas marché pour tous les champs désirés! Enfin bon, si y'a pas d'assistant, vérifie si ta baguette magique est active dans la barre d'outils. Sinon, c'est p't'être bien la zone de liste finalement, mais je crois pas.

              De mémoire par contre, le code qui a été créé automatiquement ressemble à peu près au code qu'à donner Blux! Quand j'aurai à nouveau accès à ma base de données je te donnerai le code créé automatiquement!

              Sur ce...bon travail! Et désolé si ça marche pas!
              1. Modérateur
                Salut,

                très simple :

                - tu crées un sous-formulaire dans ton formulaire principal nommé 'toto' avec au moins le champ nom
                - tu crées une zone de saisie texte nommée chx_nom
                - tu rajoutes du code sur l'évènement 'sur changement' de ta zone de texte
                - et tu mets :
                rech=chx_nom.value & "*"
                StrSQL = "SELECT Nom "
                StrSQL = StrSQL & " FROM table"
                StrSQL = StrSQL & " WHERE (((Nom) Like """ & rech & """)"
                StrSQL = StrSQL & " ORDER BY Nom;"
                me.toto.form.recordsource = strsql

                comme ça, lorsque tu saisis un car. dans la zone chx_nom, il te mets à jour le sous-formulaire.

                si tu veux plus de précisions, n'hésite pas !

                A+ Blux
                 "Les cons, ça ose tout.
                C'est même à ça qu'on les reconnait"
                1. En relisant et en testant 500000 fois ta solution, je ne trouve tjs pas :

                  déjà :

                  1) tu utilises une combox ou une zone de liste car j'ai pas l'impression que ce soit la même chose : enfin, quand je cliques sur combobox, j'obtiens un vulgaire champs texte avec une petit flèche au bout mais certainement pas d'assistant. Par contre, quand je sélectionne zone de liste, là j'ai bien l'assistant, et j'ai bien les 3 possibilités MAIS cette 3eme possibilité n'a rien à voir puisqu'il me parle de ce que je sélectionne dans la zone de liste. Et donc forcément j'ai pas ton truc qui permet aussi de taper juste un caractère et qu'il te sors tout.

                  donc peux-tu réexpliquer plus clairement s'il te plait.

                  merci
                  1. Bon, j'ai lu la discussion...pour les recherches d'une personne, essaie d'insérer une "ComboBox" (zone de liste modifiable), à la première étape de l'assistant, tu as 3 possibilités si je me souviens bien, la 3ème te permet de faire une recherche sur un champ sélectionné (le "nom" par exemple!), ensuite, tu peux choisir quels autres colonnes tu veux voir s'afficher dans ta zone de recherche (le "prénom" par exemple!). Tu suis l'assistant, et une fois créé, si tu testes le machin, tu tapes un caractère et il t'affiche la liste des personnes dont le nom commence par ce caractère, plus tu mets de lettre, moins il reste de noms! Si on a plusieurs DUPONT, ben t'auras plusieurs lignes qui vont te rester à la fin, mais comme tu affiches également les prénoms, tu pourras choisir le bon!

                    Si ta base est très grande, tu peux rajouter une 3ème colonne avec la date de naissance ou autre (on sait jamais...2 DUPONT Jacques ça pourrait arriver!!).

                    Pour l'âge...ça risque d'être plus compliqué, quoique...la solution de facilité, c'est de chercher sur le net, y'a certainement déjà des fonctions toutes faites qui calculent l'âge à partir de la date de naissance!
                    Sinon, ben faut un peu de logique, créer la fonction dans un module, et exécuter cette fonction quand tu auras entré la date de naissance...sur un "lost focus" par exemple avec une condition sur le contenu (pas que tu fasses un calcul alors qu'il y a rien dans la zone de texte!).

                    Voilà! Bon travail!
                    1. bonsoir, bonsoir c'est encore moi :o),

                      j'ai encore le même style de problème. Enfin, j'ai résolu mon problème avec le delta car c'était juste une petite opération, mais cette fois-ci, je rentre la date de naissance et il faut qu'il me rentre dans la case d'a côté, l'age directement. Avec une requète c'est jouable mais j'ai toujours l'éternel problème, c'est comment fusionné ma table ainsi que ma requète dans mon formulaire. Même cas avec la recherche du nom du client :'(.

                      merci d'avance
                      1. re,

                        je repose une petite question qui va dans la lignée de la précendente.

                        En fait, j'ai le poids actuel, et le poids désiré : c'est des valeurs qu'on rentre.

                        et je dois avoir le Delta qui est la différence des 2 autres.

                        Je pensais à ne pas rentrer le delta dans ma base et faire une requète, mais peux-t-on ajouter cette fameuse requète dans le questionnaire car j'avais testé mais je pouvais qu'utiliser, soit ma requète, soit pas table dans le formulaire, et pas les deux ensembles :'(.

                        Voili, voilou, j'espère que l'on pourra me répondre.
                        1. ;-)

                          Si tu veux que le delta se calcule en auto, tu peux, par ex, utiliser lostfocus du dernier poids à entrer pour calculer Me.PoidsDelta=Abs(Me.PoidsActuel-Me.PoidsDesire)

                          C'est juste une idée..

                          ;-)

                          Wild and Free
                      2. Bonjour à toi Blux et à tous :op,

                        je me rappelle que, dans un formulaire, il faut :

                        -soit ajouter un enregistrement.
                        -soit le modifier.

                        Pour ajouter un enregistrement, il suffit d'ouvrir le formulaire à une page vide (dernière page) mais pour le modifier, il faut retrouver le bon enregistrement; dans mon cas, il s'agit d'une personne, nom et prénom.

                        J'ai vu un médecin l'autre jour qui a tapé mon nom, ça lui a sorti 3 personnes avec mon nom et après il a cliqué sur mon prénom.

                        Je me demandais si Access était capable de le faire dans un formulaire, a savoir, je rentre le nom, il me sors la liste des personnes au même nom, je clique sur le prénom et là, j'obtiens tous mes renseignements?

                        voilou, merci
                        1. ;-)

                          En VB :
                          A coté de la zone de texte "nom", tu as le bouton "rechercher", lequel effectue une requête paramétrée récupérant le contenu de la zone de texte pour te l'afficher dans une zone de liste (par ex), idem avec le prénom (mais la requête devra récupérer les 2 zones de texte)

                          Access :
                          Sous formulaires...

                          ;-)

                          Wild and Free
                        2. Salut,

                          je reste toujours bloqué la-dessus. En fait, en créant une requète, ça peux aller, mais faudrait réussir à l'intégrer dans le formulaire...
                      3. lol, bonne nuit alors :op.

                        Pour la civilité, le l'ai rentrée en tant que Civilité et Texte et je l'ai ensuite mis dans "Groupe d'options" et comme possibilité : Mademoiselle, Madame et Monsieur donc pas d'autre choix.

                        Le problème, c'est que lorsque je regarde mais table, y'a écrit 1,2 ou 3 car il a pas voulu que je le rentre autrement.

                        donc en fait, je sais pas si c'est vraiment la meilleure solution.

                        voilou
                        1. ;-)

                          Dans ce cas, ne fais pas de groupe d'option : Dans ta table, tu crée un champ en "byte", auquel tu associe une "liste de choix", ce qui fait que, à la saisie, tu auras le choix "M., Mme, Mlle...", alors que dans la table, cela sera du numérique...

                          Ensuite, il te suffit de glisser le champ sur ton formulaire (si tu as affiché la liste des champs)...

                          ;-)

                          Wild and Free
                      4. Modérateur
                        je n'active jamais la messagerie, je reste en 'live'...
                        mais là, je vais dodo...

                        du coup, tu as supprimé tes 3 champs civilité pour les remplacer par un seul ?, ta réponse n'est pas précise...

                        A+ Blux
                         "Les cons, ça ose tout.
                        C'est même à ça qu'on les reconnait"
                        1. et bien ça à l'air de bien marché, y'a plus qu'a configurer et à tout faire tout bien jolie.

                          Je te remercie de ton aide :o)). mais surveille ta messagerie en cas de nouveaux problèmes :op.

                          @ bientôt
                          1. Modérateur
                            j'l'avions point vu...
                            c'est du vb pas du javac++ !

                            A+ Blux
                             "Les cons, ça ose tout.
                            C'est même à ça qu'on les reconnait"
                            1. arggghhhhhh, c'est bon. c'était le ; qui était fautif :((.

                              la bonne version est donc :

                              Private Sub glycemie_Click()
                              taux_glycemie.Visible = True
                              End Sub

                              par contre, ça m'affiche le taux que je dois rentrer mais j'ai pas mon pti label qui s'affiche mais je dois juste le rajouter, jvais testé
                              • 1
                              • 2