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

Access Discussion :

Problème avec la fonction: Caption = DCount


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut Problème avec la fonction: Caption = DCount
    Bonjour, je me suis appuyé sur un tutoriel de recherche multicritère afin de l'utiliser dans ma base de donnée, cependant une fonction me fait défaut(du moins le débogage m'y renvoie) :
    Me.lblStats.Caption = DCount("*", "T_Marseille", SQLWhere) & " / " & DCount("*", "T_Marseille", SQLWhere)
    Lorsque j'utilise un des boutons poussoirs un message d'erreur apparaît :
    • Erreur d'exécution '3464'
      Type de données incompatible dans l'expression du critère.


    Après plusieurs tentative et recherche sur le net je n'ai trouvé aucune solution, c'est pourquoi je me tourne vers vous

    Je rajoute en copie l'ensemble du code VBA et une screen de mon formulaire, je me suis peut être trompé sur une autre ligne de code.
    J’espère que vous pourrez m'aider sinon je vais devoir essayer une autre méthode pour réaliser ma recherche multicritère.
    Merci d'avance !
    Nom : bug.png
Affichages : 152
Taille : 23,6 Ko

    Option Compare Database
    Option Explicit
    Private Sub chkDate_Click()

    If Me.chkDate Then
    Me.cmbRechDate.Visible = False
    Else
    Me.cmbRechDate.Visible = True
    End If

    RefreshQuery

    End Sub



    Private Sub chkDic_Click()

    If Me.chkDic Then
    Me.txtRechDic.Visible = False
    Else
    Me.txtRechDic.Visible = True
    End If

    RefreshQuery

    End Sub



    Private Sub chkRef_Click()

    If Me.chkRef Then
    Me.txtRechRef.Visible = False
    Else
    Me.txtRechRef.Visible = True
    End If

    RefreshQuery

    End Sub



    Private Sub chkDest_Click()

    If Me.chkDest Then
    Me.txtRechDest.Visible = False
    Else
    Me.txtRechDest.Visible = True
    End If

    RefreshQuery

    End Sub



    Private Sub cmbRechDate_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub



    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String

    SQL = "SELECT Date_Dep, DIC, Ref, No_Dest, Quantité, REP_BON, Rep_CRPR, Pret, Coût_pret, Délai_annoncé, Prix_journalier, Date_arret, Economie FROM T_Marseille Where T_Marseille!DIC <> 0"

    If Not Me.chkDate Then
    SQL = SQL & "And T_Marseille!Date_Dep = '" & Me.cmbRechDate & "' "
    End If
    If Not Me.chkDic Then
    SQL = SQL & "And T_Marseille!DIC like '*" & Me.txtRechDic & "*' "
    End If
    If Not Me.chkRef Then
    SQL = SQL & "And T_Marseille!Ref like '*" & Me.txtRechRef & "*' "
    End If
    If Not Me.chkDest Then
    SQL = SQL & "And T_Marseille!No_Dest like '*" & Me.txtRechDest & "*' "
    End If

    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))

    SQL = SQL & ";"
    Me.lblStats.Caption = DCount("*", "T_Marseille", SQLWhere) & " / " & DCount("*", "T_Marseille", SQLWhere)
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery

    End Sub



    Private Sub Form_Load()

    Dim ctl As Control

    For Each ctl In Me.Controls
    Select Case Left(ctl.Name, 3)
    Case "chk"
    ctl.Value = -1

    Case "lbl"
    ctl.Caption = "-*-*-"

    Case "txt"
    ctl.Visible = False
    ctl.Value = ""

    Case "cmb"
    ctl.Visible = False

    End Select
    Next ctl
    Me.lstResults.RowSource = "SELECT Date_Dep, DIC, Ref, No_Dest, Quantité, REP_BON, Rep_CRPR, Pret, Coût_pret, Délai_annoncé, Prix_journalier, Date_arret, Economie FROM T_Marseille;"
    Me.lstResults.Requery

    End Sub

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour,
    C'est parce que label s'attend à avoir un résultat string donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblStats.Caption = DCount("*", "T_Marseille", SQLWhere) & " / " & DCount("*", "T_Marseille", SQLWhere)
    devrait se lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblStats.Caption = """ & DCount("*", "T_Marseille", SQLWhere) & " / " & DCount("*", "T_Marseille", SQLWhere) & """
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Encore Merci Robert !

    Le petit "hic" c'est que maintenant j'ai une erreur d'expression :/
    Nom : bug.png
Affichages : 168
Taille : 56,3 Ko

    J'ai beau chercher, je ne trouve là non plus pas moyen de résoudre ce problème

    Si quelque chose vous saute à l’œil faites le moi savoir !

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour jbsushi,
    Je vois quelques erreurs dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "T_Marseille", SQLWhere) & " / " & DCount("*", "T_Marseille", SQLWhere)
    devrait se lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*", "T_Marseille", SQLWhere) /  DCount("*", "T_Marseille", SQLWhere)
    de plus pour afficher dans ton label je passerais par une variable de type Variant sinon on a toujours le problème des "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maVariable = DCount("*", "T_Marseille", SQLWhere)/ DCount("*", "T_Marseille", SQLWhere)
    Me.lblStats.Caption = maVariable
    Je crois que c'est plus facile comme cela.
    Aussi dans le code de ta close Where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.chkDate Then
    SQL = SQL & "And T_Marseille!Date_Dep = '" & Me.cmbRechDate & "' "
    End If
    Insérer un espace iciJ'ai lu vite fait mais je crois que ça devrait aller mieux avec ces quelques modifications
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Super comme toujours , merci !

    Mais comme toujours ça me trouve une erreur ailleurs ...
    Nom : bug.png
Affichages : 172
Taille : 51,6 Ko

    Apparemment cela viendrait du Private Sub Form_Load(),
    mais il avait l'air de bien fonctionner avant de changer le DCount, je n'y comprends plus rien...

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Si tu mets un point d'arrêt sur Form_Load et avec F8 tu fais ton code pas à pas tu vas voir sur quoi tu bloques.
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    La partie qui bloque est :
    Select Case Left(ctl.Name, 3)
    Case "chk"
    ctl.Value = 1
    J'ai cherché les valeurs que peut prendre ctl.value apparemment il ne peut prendre que 3 valeurs:

    Tout d'abord un Checkbox ne peut pas avoir une valeur de -1 c'est
    0 : non cochée
    1 : cochée
    2 : non disponible
    Mais j'ai beau avoir essayé ces 3 valeurs, aucune ne résous ce problème...
    C'est peut être le "Value" qu'il faut changer, je n'en ais aucune idée :/

  8. #8
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour jbsushi,
    Je n'ai jamais affecté des valeurs avec la fonction "Controls". J'allais plutôt récupérer des valeurs donc c'est nouveau pour moi mais je pense que si tu faisais cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each ctl In Me.Controls
    strSQL = ctl.Name
    If Left(ctl.Name, 3) = "chk" Then
    Me(strSQL).Value = -1
    End If
    Next ctl
    strSQL étant une variable string, ça devrait fonctionner. Pour un check box -1 = vrai et 0 = faux.
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Bonjour et encore merci pour cette réponse
    mais j'ai toujours un problème avec le -1...
    Me(strSQL).Value = -1
    Je vais fermer cette discussion le premier problème étant résolu et ainsi mieux exposer celui auquel je suis confronté actuellement ^^

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

Discussions similaires

  1. Problème avec la fonction DCount
    Par pimst37 dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/02/2008, 20h37
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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