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 :

Recherche multicritère erreur '3464' DCount()


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut Recherche multicritère erreur '3464' DCount()
    Bonjour,
    J'ai essayé d'appliquer le tuto de Cafeine à ma table mais sans succès, ma recherche s'effectue en fonction de 6 critères.

    Lorsque je veux sélectionner un critère et que je coche une checkBox le message d'erreur suivant apparaît. Erreur d'exécution '3464': Type de donnée incompatible dans l'expression du critère.
    Ou encore pour mon critère Operateur_name Erreur d'exécution '2001': Opération annulée.

    l'erreur renvoyée dans le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.lblStats.Caption = DCount("*", "HELICOPTER", SQLWhere) & " / " & DCount("*", "HELICOPTER")


    pour information je vous donnes mon code complet:
    merci de votre aide.


    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    Option Compare Database
    Private Sub chkFLotation_Status_Click()
    If Me.chkFlotation_Status Then
        Me.cmbRechFlotation_Status.Visible = False
    Else
        Me.cmbRechFlotation_Status.Visible = True
    End If
    RefreshQuery
    End Sub
    Private Sub chkCountry_Click()
    If Me.chkCountry Then
        Me.cmbRechCountry.Visible = False
    Else
        Me.cmbRechCountry.Visible = True
    End If
    RefreshQuery
    End Sub
    Private Sub chkHelicopter_Family_Click()
    If Me.chkHelicopter_Family Then
        Me.cmbRechHelicopter_Family.Visible = False
    Else
        Me.cmbRechHelicopter_Family.Visible = True
    End If
    RefreshQuery
    End Sub
    Private Sub chkAircraft_Register_Click()
    If Me.chkAircraft_Register Then
        Me.txtRechAircraft_Register.Visible = False
    Else
        Me.txtRechAircraft_Register.Visible = True
    End If
        RefreshQuery
    End Sub
    Private Sub chkSN_Click()
    If Me.chkSN Then
        Me.txtRechSN.Visible = False
    Else
        Me.txtRechSN.Visible = True
    End If
        RefreshQuery
    End Sub
    Private Sub chkOperator_name_Click()
    If Me.chkOperator_name Then
        Me.txtRechOperator_name.Visible = False
    Else
        Me.txtRechOperator_name.Visible = True
    End If
        RefreshQuery
    End Sub
    Private Sub cmbRechCountry_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub cmbRechHelicopter_Family_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub cmbRechFlotation_Status_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    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 Aircraft_Register,SN,Helicopter_Family,FLotation_Status,Country,Operator_name FROM HELICOPTER;"
    Me.lstResults.Requery
    End Sub
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
    SQL = "SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,Country,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 "
    If Not Me.chkFlotation_Status Then
        SQL = SQL & "And HELICOPTER!FLotation_Status = '" & Me.cmbRechFlotation_Status & "' "
    End If
    If Not Me.chkCountry Then
        SQL = SQL & "And HELICOPTER!Country = '" & Me.cmbRechCountry & "' "
    End If
    If Not Me.chkHelicopter_Family Then
        SQL = SQL & "And HELICOPTER!Helicopter_Family = '" & Me.cmbRechHelicopter_Family & "' "
    End If
    If Not Me.chkAircraft_Register Then
        SQL = SQL & "And HELICOPTER!Aircraft_Register like '*" & Me.txtRechAircraft_Register & "*' "
    End If
    If Not Me.chkSN Then
        SQL = SQL & "And HELICOPTER!SN like '*" & Me.txtRechSN & "*' "
    End If
    If Not Me.chkOperator_name Then
        SQL = SQL & "And HELICOPTER!Operator_name like '*" & Me.txtRechOperator_name & "*' "
    End If
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
    Debug.Print SQL
    Me.lblStats.Caption = DCount("*", "HELICOPTER", SQLWhere) & " / " & DCount("*", "HELICOPTER")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
    End Sub
    Private Sub lstResults_DblClick(Cancel As Integer)
    DoCmd.OpenForm "helicopter", acNormal, "[Aircraft_Register] = " & Me.lstResults
     
    End Sub
    Private Sub txtRechAircraft_Register_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub txtRechSN_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub txtRechOperator_name_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut
    Salut !
    Erreur d'exécution '3464': Type de donnée incompatible dans l'expression du critère
    J'ai pas pris le temps de regarder ton code.
    Mais visiblement tu essaye de comparer un entier avec une chaine de caractere ou un truc dans ce genre la.

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    puisque tu prends la peine de faire un Debug.Print autant nous montrer ce que donne ton expression SQL ... attention aux types de données ...

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Mon Debug.Print me renvoit quelque chose d'assez effrayant:
    j'en ai mis qu'une partie...
    je retrouve ici Country_of_operator une variable que j'ai changée en Country, Aircraft_Register est ma clé primaire de type texte

    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
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = '' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = 'AS 332' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = 'AS 332' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = 'AS 332' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = '' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!COUNTRY_of_Operator = '' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = '' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = 'AS 330' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!Helicopter_Family = '' ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 ;
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER;  Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!COUNTRY_of_Operator = '' ;
    ;

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    SELECT Aircraft_Register,SN,Helicopter_Family,Flotation_Status,COUNTRY_of_Operator,Operator_name FROM HELICOPTER; Where HELICOPTER!Aircraft_Register <> 0 And HELICOPTER!COUNTRY_of_Operator = '' ;
    Ce n'est pas effrayant, il écrit ta requête à chaque sélection ...

    tu ne peux pas mettre une VARIABLE VBA dans un SQL, il faut l'évaluer et donc la sortir de la chaîne ...

    Il faut débugger ta requête, voir le tuto pour ça :
    Deboguer une requête écrite en VBA

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Merci j'ai regardé ton tuto, mais j'ai du mal a analyser les sorties des fenêtres de débugage
    tu ne peux pas mettre une VARIABLE VBA dans un SQL
    une variable VBA ?
    J'ai changé mon code SQL à partir d'une requête SQL, dans l'espoir de ne plus avoir avoir cette variable, mais ça ne marche toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SQL = "SELECT [HELICOPTER].Aircraft_Register, [HELICOPTER].SN, [HELICOPTER].Helicopter_Family, [HELICOPTER].Flotation_Status, [HELICOPTER].Country_Helicopter, [HELICOPTER].Helicopter_Model, [HELICOPTER].Registration_History, [HELICOPTER].Last_Update_Date, [HELICOPTER].Last_Update_Person FROM HELICOPTER Where HELICOPTER!Aircraft_Register <> 0 "
    Ca me renvoi à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.lblStats.Caption = DCount("*", "[HELICOPTER]", SQLWhere) & " / " & DCount("*", "[HELICOPTER]")
    Le fait que ma clé primaire soit de type texte pose t-il un problème pour le DCount()?
    Merci pour votre aide

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Nom : Sans.jpg
Affichages : 126
Taille : 9,5 Ko

    Voilà ce qu'il me met lorsque je clic sur un checkbox.

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    J'ai effectué un Debug.Print SQL, le code renvoyé est celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_Family = ''
    [HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_F[HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_Family = 'AS 332L'
    amily = 'AS 332L'
    SELECT Aircraft_Register, SN, Helicopter_Family, Flotation_Status, Country_Helicopter, Helicopter_Model, Registration_History, Last_Update_Date, Last_Update_Person FROM HELICOPTER Where HELICOPTER!Aircraft_Register <> 0  And HELICOPTER!Aircraft_Register = 'F-GYDF' ;
    et un Debug.print WhereSQL, le code renvoyé est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_Family = ''
    [HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_F[HELICOPTER]![Aircraft_Register] <> 0  And HELICOPTER!Helicopter_Family = 'AS 332L'
    amily = 'AS 332L'
    Avez vous des conseils? je suis bloqué

  9. #9
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/09/2011, 15h48
  2. Réponses: 1
    Dernier message: 14/09/2007, 16h50
  3. Erreur syntaxe dans une recherche multicritère
    Par cigale13 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 09h58
  4. Réponses: 2
    Dernier message: 01/10/2005, 18h42
  5. recherche multicritères
    Par onlineduel dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2004, 16h15

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