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 :

Vérifier doublon avec une variable


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut Vérifier doublon avec une variable
    Bonjour

    j'aimerais vérifier un doublon dans un champs avec la valeur d'une variable.
    avec un retour Booléen.

    j'ai fait des recherche sur les doublons et je n'ai rien trouvé.

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 368
    Points
    34 368
    Par défaut
    salut
    un truc tout bête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     function doublonestula(valeur as integer) as boolean
    Dim RS as DAO.RecordSet
    dim StrSQL as String
     
    strSQL="SELECT COUNT(*) as total FROM MaTable Where Champ=" & valeur &";"
    Set RS= CurrentDb.Openrecordset(StrSQL)
    if RS!Total > 1 then
            doublonestula = true
    Else
            doublonestula = false
    End if

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut
    Merci Jpcheck

    Je travail sur ta fonction et je t'avoue que je ne la comprend pas trop.

    1-La variable que je veux vérifier est de type string et toi "valeur" est de type integer. j'imagine que je peut le modifier?

    2-Je vois pas comment la fonction sait dans quel table et quel champs chercher la valeur.

    merci

    j'ai modifier la fonction comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function doublonestula(valeur As String) As Boolean
     
    Dim RS As DAO.Recordset
    Dim StrSQL As String
     
    StrSQL = "SELECT COUNT(*) as total FROM Tbl_Produit Where Champ=" & valeur & ";"
    Set RS = CurrentDb.Openrecordset(StrSQL)
    If RS!Total > 1 Then
            doublonestula = True
    Else
            doublonestula = False
    End If
    End Function
    j'ai changé le Type de valeur en string
    et j'ai changé MaTable pour Tbl_Produit

    pour faire des essais j'ai créer un bouton qui va comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Doublon_Click()
    Dim valeur As String
     valeur = "a"
    MsgBox valeur
    doublonestula (valeur)
    merci de votre aides

    Bonjour,

    j'ai une erreur de compilation avec le ligne

    en bleu je sais pas pourquoi.

    j'essai plusieurs modifications dans le code et y a rien qui change

    Est-ce que je dois cocher une certaine référence ??

    merci

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Dim RS As DAO.Recordset
    Dans l'éditeur de code tu ouvre Outils > Référence...

    ...tu devrais avoir une référence commençant par MANQUANT..(il suffit de la décocher) Microsoft DAO x.x Object Library

    En espérant que cela règle ton problème....

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 368
    Points
    34 368
    Par défaut
    d'autre part, si ton champs est un texte, il faut des apostrophes (') dans ta requête SQL

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut Debog ??
    Merci à tous

    C'est la première fois que je travail avec la notion de recordset alors je suis un peu dur de la feuille

    Bon, j'ai un bog à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set RS = CurrentDb.Openrecordset(StrSQL)
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function doublonestula(valeur As String) As Boolean
     
    Dim RS As DAO.Recordset
    Dim StrSQL As String
     
    StrSQL = "SELECT COUNT(*) as total FROM nom Where Champ=" & valeur & ";"
    Set RS = CurrentDb.Openrecordset(StrSQL)
    If RS!Total > 1 Then
            doublonestula = True
    Else
            doublonestula = False
    End If
    End Function
    j'imagine que mon erreur ce situe sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSQL = "SELECT COUNT(*) as total FROM nom Where Champ=" & valeur
    Nom est le champs dans lequel je recherche un doublon

    Mon appel ce fait comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Doublon_Click()
    Dim valeur As String
     valeur = "a"
    MsgBox valeur
    doublonestula (valeur)
    End Sub
    Voici le message
    erreur d'execution 3078
    Le moteur de la base de donnée micosoft jet ne peut pas trouver la table ou la requète source 'nom'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 368
    Points
    34 368
    Par défaut
    salut,
    alors :
    - ta table s'appelle-t-elle bien "nom" ?
    - ton champs s'appelle-t-il bien "Champ" ?
    - si ton champs "Champs" est de type texte et non pas numérique, il faut ajouter avant et après la valeur un ' (simple apostrophe).

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut ok Je comprend ... que je comprend pas
    Je m'excuse pour la confusion
    donc, je reformule mon code car :

    Ma table se nomme: tbl_Produit
    Mon champ se nomme: Nom
    La variable se nomme: valeur

    Donc je recherche dans la table 'tbl_Produit', le champ Nom si la variable valeur existe. Dans mon code d'apprentissage la valeur de la variable est "a" et je désire savoir si elle existe dans le champs nom de la table tbl_produit. C'est ce que j'ai besoin.

    Voici mon nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function doublonestula(valeur As String) As Boolean
     
    Dim RS As DAO.Recordset
    Dim StrSQL As String
     
    StrSQL = "SELECT COUNT(*) as total FROM tbl_produit Where Champ=" & "'" & valeur & "'" & ";"
    Set RS = CurrentDb.Openrecordset(StrSQL)
    If RS!Total > 1 Then
            doublonestula = True
    Else
            doublonestula = False
    End If
    End Function
    erreur d'execution 3061
    Trop peu de paramètre, 1 attendu
    merci je continu à travailler

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as aussi les fonctions de domaines pour réaliser ceci, elle sont un peu moins performantes que les recordset (cela se voit surtout sur de très grosses tables), mais plus facile à mettre en oeuvre.

    Si tu es intéressé par ces fonctions, un peu de lecture : Les Fonctions de Domaine dans Access.

    Regardes du coté de DCount.

    Starec

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 368
    Points
    34 368
    Par défaut
    +1 par rapport à Stares, le modo qui ne dort jamais (4h du mat'...)
    comme ton champ s'appelle nom il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function doublonestula(valeur As String) As Boolean
     
    Dim RS As DAO.Recordset
    Dim StrSQL As String
     
    StrSQL = "SELECT COUNT(*) as total FROM tbl_produit Where Nom=" & "'" & valeur & "'" & ";"
    Set RS = CurrentDb.Openrecordset(StrSQL)
    If RS!Total > 1 Then
            doublonestula = True
    Else
            doublonestula = False
    End If
    End Function

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut Ah bien oui Merci
    Voila ...ça fonctionne en partis

    Je n'ai plus de message d'erreur, et je reçoit une réponse en forme booléen, mais elle est toujours à faux, même si la valeur exicte. Que la valeur exicte ou non je reçoit toujours un faux.

    Mon appel se fait comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Doublon_Click()
    Dim valeur As String
    Dim rep As Boolean
     
    valeur = "u"
    MsgBox valeur
    rep = doublonestula(valeur)
    MsgBox rep
    et la fonction comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function doublonestula(valeur As String) As Boolean
     
    Dim RS As DAO.Recordset
    Dim StrSQL As String
     
    StrSQL = "SELECT COUNT(*) as total FROM tbl_Produit Where Nom=" & "'" & valeur & "'" & ";"
    Set RS = CurrentDb.Openrecordset(StrSQL)
    If RS!Total > 1 Then
            doublonestula = True
    Else
            doublonestula = False
    End If
    End Function

    merci

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut Ok ça fonctionne
    j'ai changé cette partis

    pour
    et ça fonctionne

    merci infiniment pour votre patience, j'aprécis

    Bonne Journée

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

Discussions similaires

  1. Rafraichissement avec une variable
    Par niceday dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 10h08
  2. Réponses: 5
    Dernier message: 25/06/2005, 11h35
  3. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  4. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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