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

VBA Access Discussion :

rechercher si une valeur existe dans une table


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 304
    Points : 130
    Points
    130
    Par défaut rechercher si une valeur existe dans une table
    Bonjour

    Je souhaiterais connaitre la fonction qui me permettrait de voir si une valeur que je rentre dans une zone de texte existe dans une table avant de l'ajouter. je sais que c'est une fonction connue mais je ne m'en suis jamais servie.
    merci de votre aide

  2. #2
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    serait-ce DLookup ?

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 304
    Points : 130
    Points
    130
    Par défaut
    si c'est bien ça, entre temps j'ai trouvé. mais j'ai quand meme un probleme car une fois sur 2, j'ai un retour comme quoi la valeur n'existe pas dans la table et donc je la fait ajouter mais en fait elle y était déjà. Est-ce que cela peut être dû au fait que mes tables sont dissociées de l'appli ou pas rien à voir?

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Non, le fait que ton application soit scindée ne joue aucun rôle...

    Peux-tu poster ton code, et expliquer un peu le contexte ?

    Domi2

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 304
    Points : 130
    Points
    130
    Par défaut
    merci de te pencher sur le pb.
    j'ai une appli pour faire une réservation d'un appareil pour un créneau horaire sur la journée de son choix.
    j'ai donc 2 tables: la première stocke les jours, la 2 eme en relation stocke les créneaux pour le jour désiré.
    mon problème est le suivant: j'utilise un controle activex calendrier pour choisir le jour. Lorsqu'on clique sur le jour de son choix, voila le code que j'ai mis derriere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    t = DLookup("[heure0]", "chjour")
     
    If Not IsNull(t) Or t <> "" Then
    DoCmd.OpenForm "jour", , , "[heure0] = " & t
    Else
    DoCmd.GoToRecord , , acNewRec
    Me.jour = s
    End If
    mon Dlookup sert à regarder si ce jour a déjà été rentré dans la table 1: si oui alors je fais afficher dans un sous formulaire les creneaux dejà pris, si non alors je lui fait ajouter ce nouveau jour dans la table. le problème est qu'une fois sur 2, il ne voit pas le jour et donc l'ajoute en le remplaçant avec un autre existant si d'autres créneaux d'un autre jour avaient dajà été affichés auparavant. Resultat: toutes les reservations se mélangent.
    merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 134
    Points : 52
    Points
    52
    Par défaut
    ne faut-il pas une condition dans ta fonction DLookup?

    sinon il y a cette méthode par les recordset pour rechercher les doublons :

    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
    Dim db As Database
    Dim Rct_Dbl As Recordset
    Dim Str_Dbl As String
    Dim Cpt_Dbl As Integer
    
    Set db = CurrentDb
    Str_Dbl = " ta requête SLQ qui affiche les enregistrements relatifs aux contrôles en cours et pour lesquels tu souhaites trouver des doublons"
    
    Set Rct_Dbl = db.OpenRecordset(Str_Dbl)
    Cpt_Dbl = 0
    While Not Rct_Dbl.EOF
        Cpt_Dbl = Cpt_Dbl + 1
        Rct_Dbl.MoveNext
    Wend
    
    If Cpt_Dbl <> 0 Then
        MsgBox "doublon!", vbCritical, "Erreur de saisie"
    End If

  7. #7
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Sans avoir testé, voici une première piste : il te faut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(t) And t <> "" Then
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not (IsNull(t) Or t = "") Then
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(t) Or t <> "" Then
    voire uniquement
    car si la valeur est absente, le DLookup renvoie Null, et donc ta variable est différente de "". Ta condition sera donc toujours vraie.

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 304
    Points : 130
    Points
    130
    Par défaut
    merci spaiku mais j'avais déjà essayé et c'est pour ça que j'ai rajouté <>"".
    stagolee: mon dlookup est déjà basé sur une requete en fait. mais je vais essayer ton code et vous tiens au courant
    en tout cas merci

  9. #9
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Si tu veux appliquer la solution de stagolee, il te faudra l'adapter, car tu ne veux pas chercher des doublons, mais tester l'existence d'une valeur. Ce sera donc quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim db As Database
    Dim Rct_Dbl As Recordset
    Dim Str_Dbl As String
     
    Set db = CurrentDb
    Str_Dbl = "ta requête qui teste la valeur saisie par l'utilisateur"
     
    Set Rct_Dbl = db.OpenRecordset(Str_Dbl)
    if not (Rct_Dbl.BOF And Rct_Dbl.EOF) Then
        MsgBox "Valeur inexistante dans la table"
    End If
    Mais je me permets d'insister sur les solutions que je te propose dans mon dernier post, parce que je pense que le code que tu as déjà écrit peut suffire si tu réécris la condition

  10. #10
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    en considérant qu'il n'y a qu'un jour dans la table

  11. #11
    Membre habitué
    Inscrit en
    Octobre 2003
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 304
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par helas Voir le message
    en considérant qu'il n'y a qu'un jour dans la table
    que veux-tu dire par là?

Discussions similaires

  1. Réponses: 14
    Dernier message: 10/10/2013, 06h39
  2. Impossible d'afficher une valeur existe dans une autre table
    Par mcharmat dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/02/2013, 06h38
  3. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  4. Fonction de contrôle si une valeur existe dans une Array
    Par DMadzar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2007, 11h35
  5. Tester qu'une valeur existe dans une "liste"
    Par Oluha dans le forum Langage
    Réponses: 12
    Dernier message: 04/08/2005, 23h01

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