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 :

[VBA]Pb Dcount - Nom d'une table dans une variable


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut [VBA]Pb Dcount - Nom d'une table dans une variable
    Bonjour ou rebonjour,

    J'ai a nouveau un petit problème.
    J'utilise la fonction Dcount pour vérifier si un sujet existe deja dans ma base. Or, dans le code ci-dessous, je demande a access de verifier si mon individu existe dans la table TEdinburgh.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doublon = DCount("*", "TEdinburgh", "[NumSujet]=" & Num)
    Or, je voudrais passer par une variable et non directement par le nom de ma table, ce qui donnerait un truc du genre (sachant que variable à au préalable recu le nom de la table) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doublon = DCount("*", variable, "[NumSujet]=" & Num)
    Merci d'avance.

    @+

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Si variable contient une chaîne de caractères représentant le nom d'une table, alors j'essaierais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim db as DAO.Database
    ...
    set db = Application.CurrentDb
    ...
    doublon = DCount("*",db.Tabledefs(variable).Name, "[NumSujet]=" & Num)
    Bon courage,

    PGZ

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Tout d'abord merci de ta rapidité.
    Je viens de tester et il me met une erreur de compilation : Type défini par l'utilisateur non défini en me surlignant le declaration de varaible. Tu as une idée d'ou cela peut venir?

    @+

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re.

    cela pourrait être dû à l'absence d'une bibliothèque.
    Sous éditeur VBA, menu Outils/Référence vérifier que
    Microsoft DAO i.j Object library (i.j sont des entiers identifiant la version)
    soit bien coché.

    Si ce n'est pas cela ...

    PGZ

  5. #5
    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
    Texte ou nombre ?

    Une petite fonction
    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
     
     
    Sub UneFonction
     
     doublon = nb("TEdinburgh","NomSujet",Num)
     
    End Sub
     
    Function nb(NomTable As String, NomChamp As String, valeur As Variant) As Long
     Dim s As String
     On Error GoTo erreur
     If IsNumeric(v) Then s = "[" & NomChamp  & "]=" & valeur  Else s = "[" & NomChamp  & "]='" & valeur  & "'"
     nb = DCount("*", NomTable , s)
     Exit Function
    erreur:
     nb = 0
    End Function
    ou directement

    pour du texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doublon = DCount("*", "TEdinburgh", "[NumSujet]='" & Num & "'")
    pour un nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doublon = DCount("*", "TEdinburgh", "[NumSujet]=" & Num )

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Tout d'abord merci de vos reponses.
    Pour pgz, je n'ai pas cette librairie, par contre, j'en ai une dont le nom ressemble (Microsoft DAO 3.6 Object Library), j'ai bien essayer de la cocher, malheureusement, ca ne fonctionne pas.

    Pour helas, ce n'est pas au niveau de la valeur du champ que j'ai un soucis, mais au niveau de nom de la table, donc d'apres ce que j'ai compris de ta fonction, elle ne resoud pas mon soucis.

    J'espere cependant qu l'un d'entre vous arrivera a me trouver ce petit bout de code qui me permettra de finir ce petit projet et de passer a autre chose...

    @+

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    j'en ai une dont le nom ressemble (Microsoft DAO 3.6 Object Library), j'ai bien essayer de la cocher, malheureusement, ca ne fonctionne pas.
    C'est la bonne.
    Tu veux dire qu'après avoir coché cette bibli tu as toujours la même erreur, ou que tu n'es pas arrivé à la cocher?

    Tu peux aussi écrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doublon = DCount("*",CurrentDb.Tabledefs(variable).Name, "[NumSujet]=" & Num)
    mais ce n'est pas très bon car une instance de la base peut être créée à chaque passage.

    PGZ

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Salut,

    J'ai bien réussit a la cocher mais ca ne fonctionnait pas.
    Par contre cette autre méthode a l'air de passer. Mais si tu dis que ca n'est pas tres bon, tant pis, je rajouterai quelques lignes de code pour faire autrement...

    En tout cas merci de ton aide

    @+

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    J'ai bien réussit a la cocher mais ca ne fonctionnait pas.
    Pourrais-tu montrer le code en précisant où ça plante?

    PGZ

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Voici le code de mon bouton :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub Valider_Click()
        Dim stDocName As String
        Dim stLinkCriteria As String
        Dim doublon As Integer
        Dim k%
        Dim db As DAO.Database
        
        'on vérifie qu'un patient a ete choisi
        If IsNull(Me!IdentPatient) Then
            MsgBox "Veuillez choisir un numéro de patient", vbExclamation, "Attention"
            Exit Sub
        End If
        
        Select Case Me.Cadre8.Value
        Case 1
            Nom_formulaire = "FEdinburgh"
        Case 2
            Nom_formulaire = "FPDI"
        Case 3
            Nom_formulaire = "FFagerstrom"
        Case 4
            Nom_formulaire = "FCTQ"
        End Select
        
        Num = Me![IdentPatient]
        
        Set db = Application.CurrentDb
        doublon = DCount("*", db.Tabledefs(Nom_formulaire).Name, "[NumSujet]=" & Num) 
        If doublon = 0 Then
            stDocName = Nom_formulaire
            stLinkCriteria = "[numSujet]=" & Me![IdentPatient]
            DoCmd.OpenForm stDocName, , , stLinkCriteria
            Forms(Nom_formulaire).numSujet = Num
            Forms(Nom_formulaire).ident1 = ident_1
            Forms(Nom_formulaire).ident2 = ident_2
            Forms(Nom_formulaire).ident3 = ident_3
            DoCmd.Close acForm, "Recherche"
        Else
            stDocName = Nom_formulaire
            stLinkCriteria = "[numSujet]=" & Me![IdentPatient]
            DoCmd.OpenForm stDocName, , , stLinkCriteria
            Forms(Nom_formulaire).ident1 = ident_1
            Forms(Nom_formulaire).ident2 = ident_2
            Forms(Nom_formulaire).ident3 = ident_3
            DoCmd.OpenForm stDocName, , , stLinkCriteria
            DoCmd.Close acForm, "Recherche"
        End If
    End Sub
    Le code plantait sur la ligne en gras avec le message d'erreur que j'avais mis dans l'un de mes precedents posts.

    @+

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  5. Réponses: 2
    Dernier message: 02/06/2006, 11h26

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