IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Vérifer dans un formulaire, plusieurs champs d'une table simultanément


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut Vérifer dans un formulaire, plusieurs champs d'une table simultanément
    Bonjour

    J’ai créé un formulaire afin de saisir une nouvelle composition définissant une référence, ce formulaire est lié à la table qui contient les chams suivant :

    Connecteur A Connecteur B Câble Numéro

    Connecteur 1 Connecteur 5 AA 0100
    Connecteur 2 Connecteur 3 AC 0101
    Connecteur 3 Connecteur 1 AB 0102
    Connecteur 4 Connecteur 2 AA 0103
    Connecteur 5 Connecteur 4 AD 0104

    Le connecteur A ainsi que le connecteur B et le câble définisse une combinaison et donc un numéro.
    J’ai en tout plus de 100 références dans cette table, voici mon problème

    Lors de la saisie d’une nouvelle référence, j’ai réussi à faire vérifier le champ numéro, donc quand l’utilisateur saisie un numéro déjà présente dans la table un message d’erreur apparaît, en effet il ne faut pas qu’une référence corresponde à deux combinaisons différentes.

    Il y a deux problèmes possibles : le numéro est déjà dans la table et correspond à une combinaison (ce problème est déjà réglé).
    Une combinaison est déjà présente dans la table.
    Le deuxième problème me pose problème lol, en effet il est possible que l’utilisateur entre par exemple :

    Connecteur 1 Connecteur 5 AA 0200

    Et dans ce cas une combinaison qui est déjà dans la table sera de nouveau saisie mais avec un numéro différent.

    Or je souhaite qu’une fois le connecteur A, le connecteur B et le câble choisis, Access regarde dans la table, avant la saisie du numéro, afin de vérifier si cette combinaison n’existe pas, et si elle existe renvoyer un message d’erreur.

    C’est un peu long désolé mais j’espère avoir été précis

    Merci

  2. #2
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Salut
    Ce que je ferais (les dieux de ce forum feraient peut etre mieux), j'ouvre un recordset avec ta table, je cherche un enregistrement qui correspond aux criteres et je vérifie s'il a trouvé qqc.

    En supposant que ta table s'appelle combinaison et tes criteres a chercher dans la table se trouvent dans les textbox connecteur_A, connecteur_B et cable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim str_requete as String
    Dim db as dao.Database
    Dim rec as dao. recordset
    set db=currentdb
    set rec = db.openrecordset("combinaison",dbOpenSnapshot)
    rec.findfirst "[Connecteur A]='" & Me.connecteur_A & "' AND [Connecteur B]='" & Me.connecteur_B & "' AND [cable]='" & Me.cable & "'"
    If R.NoMatch Then
    MsgBox "pas trouvé"
    Else
    MsgBox "trouvé"
    End If
    Bien a toi
    puis et puis et encore . Sinon sans oublier et

  3. #3
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    dans ta table en créant un index multiple sans doublons sur connecteur A, connecteur B et câble, tu ne pourras pas avoir de doublons
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Timoth :

    J'ai essayer avec exactement le même code que ce que tu m'as donné mais cela ne fonctionne pas, Access affiche l'erreur 494.

    Il y a un problème au niveau

    J'ai essayé de solutionner le problème et voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Cable_AfterUpdate()
     
    Dim str_requete As String
    Dim db As dao.Database
    Dim rec As dao.Recordset
    Set db = CurrentDb
    Set rec = db.OpenRecordset("Harnais", dbOpenSnapshot)
    rec.FindFirst "[Termini1]='" & Me.Termini1 & "' AND [Termini2]='" & Me.Termini2 & "' AND [Cable]='" & Me.Cable & "'"
     
    If rec.NoMatch Then
     
    MsgBox "A"
     
    Else
     
    MsgBox "B"
     
    End If
    Mon problème est qu'à chaque fois, même si je fait une combinaison qui n'existe pas, j'ai le message A qui apparaît, je n'ai jamais le message B, Access ne fait pas la distinction entre une combinaison qui existe et une autre qui n'existe pas.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    jeanpaul-lepetit:

    Peut-on avec cette solution introduire un message d'erreur personnalisé?

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    oui, je pense en interceptant l'erreur et en la traitant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    on Error Goto Erreur
    'code
    '
    '
    Erreur:
    If err.number= "valeur de l'erreur" then
    msgbox "xxxx"
    endif
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  7. #7
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Non, c'est Rec.NoMatch et non pas R.NoMatch (j'ai mal recopié le code !) Mais tu l'as bien corrigé dans le code suivant.

    Qu'est-ce que l'erreur 494??

    Ca marche bien chez moi pourtant.
    As-tu bien activé la bibliotheque DAO? Dans l'éditeur VBA: Tools/Reference et tu coches la référence Microsoft DAO 3.x

    S'il te met systématiquement le message A, c'est qu'il ne trouve jamais le bon enregistrement. Peut-etre que les informations se ressemblent mais ne sont pas exactement les memes (accents, espace...)
    puis et puis et encore . Sinon sans oublier et

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Bonjour

    J’ai vérifié les espaces de chaque enregistrement et il n’y aucun problème.

    J’ai vérifié aussi dans tool/reference et j’ai bien la case Microsoft DAO 3.6 Object library qui est cochée.

    Je ne vois pas d’où cela peut provenir.

  9. #9
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    et ton erreur, quelle est sa description ??
    puis et puis et encore . Sinon sans oublier et

  10. #10
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    En fait maintenant je n'ai plus d'erreur, j'avais une erreur lorsque qu'il y avait le problème sur la ligne IF

    Mon seul problème est que, maintenant, j'ai toujours le message d'erreur A qui apparaît même en ayant vérifié les 2 choses que tu m'as dit, à savoir, les espaces etc dans la table et la case cocher dans outil/reference.

  11. #11
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Il faut qu'on arrive a localiser l'erreur qui fait qu'il ne trouve pas le bon enregistrement.

    Vérifie que tu n'as pas aucune ligne de code du genre:
    On a besoin de tous les messages d'erreurs pour comprndre.

    Essaye d'y aller pas a pas (avec un seul critere d'abord, puis deux, puis trois)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rec.FindFirst "[Termini1]='" & Me.Termini1 "'"
    La méthode est correcte mais je vois pas ou est le pb !
    puis et puis et encore . Sinon sans oublier et

  12. #12
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    J'ai fait étape par étape comme tu me l'a conseillé, et je ne comprend pas cela semble fonctionné, j'ai vérifier rapidement, je vais reprendre cela plus calmement afin de voir si cela fonctionne réellement.

    En tout cas merci pour ton aide précieuse

  13. #13
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Ok ça fonctionne, merci

  14. #14
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Ouf ! A +
    puis et puis et encore . Sinon sans oublier et

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Extraire plusieurs champs d'une table dans une même requête
    Par la_chouette dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/11/2012, 11h11
  2. [AC-2007] Concaténer plusieurs champs d'une table dans une requête avec format date
    Par MelaAllIn dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/08/2011, 10h05
  3. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37
  4. fusion de plusieurs champs d'une table à une autre
    Par reolik dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/02/2006, 08h39
  5. [select dans case] reconnaitre un champ d une table liée
    Par the_edge dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 22/10/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo