Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Vérification erreur ACCESS



  1. #1
    Tomlrt

    Vérification erreur ACCESS


    ------

    Bonjour,

    Suite à la création d'un formulaire et de l'utilisation de la fonction SELECT j'ai le message suivant:

    Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte
    Or je ne trouve pas mon erreur. Je vous met donc mon code pour que quelqu'un regarde rapidement et puisse m'aider.

    Code:
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQP As String
    Dim SQLWhere As String
    
    SQL = "SELECT Nom_de_famille, Prenom, Entreprise, Num_Tel, e_Mail, Groupe, Commentaire FROM Contacts WHERE Contacts.num <> 0 "
    
    '______________
    If Me.cNom Then
        If Me.chNom = "Tout" Then
            SQL = SQL & "And (Contacts.Nom_de_famille like '*" & Me.CmdNom & "*' Or Contacts.Prenom like '*" & Me.CmdNom & "*' Or Contacts.Entreprise like '*" & Me.CmdNom & "*') "
        End If
        
        If Me.chNom = "Nom" Then
            SQL = SQL & "And Contacts.Nom_de_famille like '*" & Me.CmdNom & "*' "
        End If
        
        If Me.chNom = "Prenom" Then
            SQL = SQL & "And Contacts.Prenom like '*" & Me.CmdNom & "*' "
        End If
        
        If Me.chNom = "Entreprise" Then
            SQL = SQL & "And Contacts.Entreprise like '*" & Me.CmdNom & "*' "
        End If
            
    '   * inseré avant et après le nom permet de trouver des morceaux de mot
    
    End If
    
    '______________
    If Me.cCategorie Then
        SQL = SQL & "And Contacts.Groupe = '" & Me.chCategorie & "' "
    End If
    
    '______________
    If Me.cTel Then
        SQL = SQL & "And Contacts.Num_Tel= '" & Me.CmdTel & "' "
    End If
    
    '______________
    If Me.cVille Then
        If Me.chVille = "Ville" Then
            SQL = SQL & "And Contacts.Ville like '*" & Me.CmdVille & "*' "
        End If
        
        If Me.chVille = "Code postal" Then
            SQL = SQL & "And Contacts.Code_postal like '*" & Me.CmdVille & "*' "
        End If
        
    End If
    
    '______________
    If Me.cMail Then
        SQL = SQL & "And Contacts.e_Mail = '" & Me.CmdMail & "' "
    End If
    
    '______________
    
    ' affichage du nombre de contacts
    
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    
    ' rangement dans l'ordre croissant
        
        If Me.rg = "Nom" Then
        SQP = "ORDER BY Contacts.Nom_de_famille"
        Requery
        End If
        
        If Me.rg = "Prenom" Then
        SQP = "ORDER BY Contacts.Prenom"
        Requery
        End If
        
        If Me.rg = "Entreprise" Then
        SQP = "ORDER BY Contacts.Entreprise"
        Requery
        End If
        
        If Me.rg = "Categorie" Then
        SQP = "ORDER BY Contacts.Groupe"
        Requery
        End If
        
        If Me.rg = "Numero de telephone" Then
        SQP = "ORDER BY Contacts.Num_Tel"
        Requery
        End If
        
        If Me.rg = "Mail" Then
        SQP = "ORDER BY Contacts.e_Mail"
        Requery
        End If
    
    SQL = SQL & SQP & ";"
    
    
    'affichage liste contacts voulus
    
    Me.lblStats.Caption = DCount("*", "Contacts", SQLWhere) & " / " & DCount("*", "Contacts")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
    
    End Sub

    -----
    Dernière modification par JPL ; 28/05/2014 à 16h15. Motif: Ajout de la balise Code (#) pour garder l'indentation
    Cordialement TomLrt

  2. Publicité
  3. #2
    Tomlrt

    Re : Vérification erreur ACCESS

    Personne pour m'aider? Je ne vois toujours pas mon erreur
    Cordialement TomLrt

  4. #3
    Bluedeep

    Re : Vérification erreur ACCESS

    Bonjour

    Poste le contenu de la variable SQL juste avant l'exécution de la requête, on y verra plus clair.

    Sinon dans la mesure où Access utilise un SQL pas exactement standard, c'est un peu difficile de se prononcer.

  5. #4
    Tomlrt

    Re : Vérification erreur ACCESS

    Je suis débutant en access...
    Ma variable SQL est déterminer au début par cette ligne de commande si je ne me trompe pas
    Code:
    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 All FROM Contacts;"
    Me.lstResults.Requery
    
    End Sub
    Le truc, c'est que tout fonctionne comme je veux mais j'ai ce message qui s'affiche et ça m'enerve un peu
    Cordialement TomLrt

  6. A voir en vidéo sur Futura
  7. #5
    bisou10

    Re : Vérification erreur ACCESS

    Select All ? Select * mais je ne connais pas assez JET pour savoir si c'est valide (et je te laisse googler !)

  8. #6
    Tomlrt

    Re : Vérification erreur ACCESS

    Bonjour,

    Le select all je l'avais déjà utilisé dans un autre access donc je ne pense pas que ce soit ça qui pose problème. J'ai quand même essayé de remplacer all par * mais rien n'y change malheureusement...
    Je ne vois pas où pourrais être cette erreur!
    Cordialement TomLrt

  9. Publicité
  10. #7
    Chanur

    Re : Vérification erreur ACCESS

    Bonjour,

    Il me semble que BlueDeep voulait parler de la variable SQL de ton progamme, et pas de la façon dont tu la définit, mais de ce qu'elle contient à la fin.
    Tu devrais ajouter une ligne pour l'afficher et nous montrer ce que tu obtiens.

    A moins que la requête "SELECT All FROM Contacts;" ne te donne la même erreur ?
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  11. #8
    Bluedeep

    Re : Vérification erreur ACCESS

    Bonjour,

    Citation Envoyé par Chanur Voir le message
    Il me semble que BlueDeep voulait parler de la variable SQL de ton progamme,
    Merci.
    Du fait justement de son absence de réponse, je ne me suis pas penché plus sur la question.

  12. #9
    Tomlrt

    Re : Vérification erreur ACCESS

    Bonjour,
    Cela viens en effet de la requête "SELECT All FROM Contacts;" car la seconde requête fonctionne correctement sans erreurs. Cela dis j'ai remplacé le "All" par "*" qui est plus correct mais cela ne change le fait que le message s'affiche toujours et pourtant j'ai bien "SELECT * FROM Contacts;" qui sort
    Cordialement TomLrt

  13. #10
    Chanur

    Re : Vérification erreur ACCESS

    Dans ce cas là, ça me laisse perplexe ...
    Tu as essayé de supprimer le point-virgule à la fin de la requête ? (c'est la seule suggestion qui me vienne ... )
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  14. #11
    Tomlrt

    Re : Vérification erreur ACCESS

    Non je n'est pas essayé d'enlevé le point virgule mais ce que je trouve bizarre c'est cette requête je l'ai utilisé dans un autre fichier en ayant la même construction mais avec des noms différents ( même avec un plus grand nombre de données) et le message ne s'affiche pas. De plus quand je met la requête en commentaire cela s'affiche encore. Je n'y comprend plus rien.
    Cordialement TomLrt

  15. #12
    Bluedeep

    Re : Vérification erreur ACCESS

    Citation Envoyé par Chanur Voir le message
    Dans ce cas là, ça me laisse perplexe ...
    Tu as essayé de supprimer le point-virgule à la fin de la requête ? (c'est la seule suggestion qui me vienne ... )
    Le ";" est tout à fait normal - et standardisé - quand on doit séparer deux requêtes dans une unique exécution transactionnelle. MAIS, Access est tellement hors standard qu'il est possible qu'il n'aime pas.

  16. Publicité
  17. #13
    Chanur

    Re : Vérification erreur ACCESS

    Citation Envoyé par Tomlrt Voir le message
    Non je n'est pas essayé d'enlevé le point virgule mais ce que je trouve bizarre c'est cette requête je l'ai utilisé dans un autre fichier en ayant la même construction mais avec des noms différents ( même avec un plus grand nombre de données) et le message ne s'affiche pas. De plus quand je met la requête en commentaire cela s'affiche encore. Je n'y comprend plus rien.
    Euh ... Moi non plus ...
    J'ai des doutes sur la syntaxe :
    Code:
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
            
            Case "lbl"
                ctl.Caption = "- * - * -"
    (...)
    Dans le "Select Case Left(ctl.Name, 3)", y a pas un "Case" en trop ?
    Mais ça ne suffit pas à expliquer le problème : ça ne figure que dans ton deuxième bout de code, et le problème existait déjà dans le premier ...
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  18. #14
    Bluedeep

    Re : Vérification erreur ACCESS

    Citation Envoyé par Chanur Voir le message
    y a pas un "Case" en trop ?
    Non; le premier case est juste facultatif (peut être d'ailleurs pas facultatif en VBA) : http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx

Discussions similaires

  1. arduino leonardo:erreur du sketch en vérification
    Par pithut dans le forum Électronique
    Réponses: 7
    Dernier message: 31/10/2012, 14h52
  2. Picaxe erreur de vérification EEprom à échoué
    Par hubin dans le forum Électronique
    Réponses: 5
    Dernier message: 19/09/2012, 21h26
  3. erreur: access violation
    Par f.i.wwog dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 22/07/2010, 15h55
  4. Erreur mysql 1044 : Access denied
    Par luxtin dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 01/10/2007, 20h12
  5. Access 2003 sous Windows Vista, [2003]Message d'erreur : composant ne fonctionne plus
    Par Jeebee 59 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/09/2007, 14h10