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

VB 6 et antérieur Discussion :

VB/ACCESS erreur syntaxe dans expression


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 54
    Points
    54
    Par défaut VB/ACCESS erreur syntaxe dans expression
    Bonjour tout le monde!!!
    Je suis sous VB6 accedant à une bdd avec access. J'ai pas l'habitude d'access...
    Voila je ne trouve pas réponse à mon probleme, j'ouvre une requete dans mon recordset, la syntaxe me semble bien est pourtant...il me dit

    "erreur de syntaxe dans la date dans l'expression 'id_PDA=#IPHONE'.
    On dirait qu'il arrive pas à acceder aux données de mon champ id_PDA.
    Comprend pas trop c'est pourtant bien écrit.
    Voici le code :

    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
    Private Sub Form_Load()
     
    '-----connexion base de donnée ACCESS-----------
     Set c = New ADODB.Connection
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = M:\PERSO\bd1.mdb"
     
        c.Open
                '-----Instanciation recordset
                Set rspda = New Recordset
                Set rshelppda = New Recordset
     
     
                '----execute requete
                rspda.Open "select * from PDA ", c, adOpenStatic
     
                        '----si table pas vide afficher champ
                        If Not rspda.EOF Or Not rspda.BOF Then
     
                            '-----remplissage dataliste des pda par libelle et enregistrement par colonne
                            Datalistpda.ListField = "PDA_libelle"
                            Datalistpda.BoundColumn = "id_PDA"
     
                            Set Datalistpda.RowSource = rspda
                            rshelppda.Open "select Help_Libelle from Helpdesk where id_PDA=" + CStr(rspda!id_pda), c, adOpenStatic
                                If Not rshelppda.EOF Or Not rshelppda.BOF Then
     
                                    '----remplir la grille des erreurs
                                    Set Datagridpda.DataSource = rshelppda
     
                        Else
                        MsgBox "aucun pda dans la table"
     
            Unload Me
     
                                End If
     
                        End If
     
    End Sub
    Qu'en pensez vous?

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rshelppda.Open "select Help_Libelle from Helpdesk where id_PDA=" + CStr(rspda!id_pda), c, adOpenStatic

    je ne comprends pas trop cette ligne

    explique un peu mieux comment ça doit fonctionner
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 54
    Points
    54
    Par défaut
    Je remet mon code, je m'étais trompété, je n'avais pas mis au bon endroit mon recordset.
    General declaration

    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
    Dim rspda As Recordset
    Dim rshelppda As Recordset
    Dim c As ADODB.Connection
     
     
    Private Sub Datalistpda_Click()
     
        If rshelppda.State = adStateOpen Then
        rshelppda.Close
        End If
     
    rshelppda.Open "select*from Helpdesk where id_PDA=" + DataListauteurs.BoundText, c, adOpenStatic
     
     
    Set Datagridpda.DataSource = rshelppda
     
    End Sub
     
     
    Private Sub Form_Load()
     
    '-----connexion base de donnée ACCESS-----------
     Set c = New ADODB.Connection
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = M:\PERSO\bd1.mdb"
     
        c.Open
                '-----Instanciation recordset
                Set rspda = New Recordset
                Set rshelppda = New Recordset
     
     
                '----execute requete
                rspda.Open "select * from PDA ", c, adOpenStatic
     
                        '----si table pas vide afficher champ
                        If Not rspda.EOF Or Not rspda.BOF Then
     
                            '-----remplissage dataliste des pda par libelle et enregistrement par colonne
                            Datalistpda.ListField = "PDA_libelle"
                            Datalistpda.BoundColumn = "id_PDA"
     
                            Set Datalistpda.RowSource = rspda
     
     
     
                        Else
                        MsgBox "aucun pda dans la table"
     
            Unload Me
     
                                End If
     
                        End If
     
    End Sub
    j'ai une datalist qui recupere les données de la table PDA et affiche les libelles.
    Ensuite j'ai un datagrid qui me permet d'afficher les erreurs propres à ce champ qui sont dans une autre table (la table "erreur"). En selectionnant un type de PDA dans la datalist je veux faire apparaitre la table "erreur" propre au type de PDA.
    J'ai donc un recordset pour la datagrid qui va chercher dans la table les erreurs en fonction du type de pda.

    Il me dit maintenant Un objet et requis..
    quen pensez vous?

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par doudou57 Voir le message
    Il me dit maintenant Un objet et requis..
    quen pensez vous?
    ok, mais où ?
    ici je suppose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If rshelppda.State = adStateOpen Then
    si rshelppda n'a jamais été créé, il n'existe pas
    il faut gérer l'erreur

    de plus la concaténation en VB, c'est avec & et non pas +

    et pour finir prefixe tes déclarations avec ADO, même si c'est implicite, c'est plus correct (ADO.recordset) et evitera des confusions

    et ça fait 2 fois que je rajoute les balises de code, alors merci d'y penser la prochaine fois. c'est le bouton # au dessus du cadre de saisie
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 54
    Points
    54
    Par défaut
    ok merci du conseil, je vais reflechir a tout ça!
    Je ferais attention pour les balises de code, c ma premiere fois....

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Je n'arrive pas a faire afficher ma table dans mon datagrid pourriez vous me dire qu'est ce qu'il me manque?

    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
    Dim rspda As Recordset
    Dim rshelppda As ADODB.Recordset  '----RS de Helpdesk
    Dim rsidpda As ADODB.Recordset    '----RS de PDA
     
    Dim c As ADODB.Connection
     
    Private Sub Datalistpda_Click()
     
         '----instanciation recordset PDA recupération identifiant pour rechercher les erreurs
        Set rsidpda = New Recordset
        rsidpda.Open ("select * from PDA "), c, adOpenStatic
     
        '----instanciation recordset HELPDESK
        Set rshelppda = New Recordset
        rshelppda.Open ("select * from Helpdesk "), c, adOpenStatic
     
        '----boucle de recherche en fonction du type de pda
        rsidpda.MoveFirst
        Do While Datalistpda.BoundText <> rsidpda!id_PDA
        rsidpda.MoveNext
        Loop
     
        If Not rshelppda.EOF Or Not rshelppda.BOF Then
            Set Datagridpda.DataSource = rshelppda
            Else: MsgBox "erreur"
            End If
     
    End Sub
     
     
    Private Sub Form_Load()
     
    '-----connexion base de donnée ACCESS-----------
     Set c = New ADODB.Connection
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = M:\PERSO\bd1.mdb"
     
        c.Open
                '-----Instanciation recordset
                Set rspda = New Recordset
     
                '----execute requete
                rspda.Open "select * from PDA ", c, adOpenStatic
     
                        '----si table pas vide afficher champ
                        If Not rspda.EOF Or Not rspda.BOF Then
     
                            '-----remplissage dataliste des pda par libelle et enregistrement par colonne
                            Datalistpda.ListField = "PDA_libelle"
                            Datalistpda.BoundColumn = "id_PDA"
                            Set Datalistpda.RowSource = rspda
     
                        Else
                        MsgBox "aucun pda dans la table"
     
            Unload Me
     
                        End If
     
    End Sub
    Pourriez vous me dire si l'ecriture du select est correct?
    Je suis sous vb 6 et j'utilise une base de donnée access. Connexion ADODB.
    Merci!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rshelppda.Open ("select * from Helpdesk where [Helpdesk].id_PDA= '& rsidpda!id_PDA &'"), c, adOpenStatic

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Tout dépend du type de champs id_PDA
    S'il est de type numérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rshelppda.Open ("select * from Helpdesk where [Helpdesk].id_PDA= " & rsidpda!id_PDA ), c, adOpenStatic
    S'il est de type string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rshelppda.Open ("select * from Helpdesk where [Helpdesk].id_PDA= '" & rsidpda!id_PDA & "' "), c, adOpenStatic
    S'il est de type date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rshelppda.Open ("select * from Helpdesk where [Helpdesk].id_PDA= #'" & Format(rsidpda!id_PDA,"mm/dd/yyyy") & "# "), c, adOpenStatic
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 54
    Points
    54
    Par défaut
    Delbeke,

    Je tiens a te remercier de tout ma gratitude!Tu enlever une belle epine du pied!

    Mon code marche bien, je suis heureux! Si tu as le temps pourrais tu m'expliquer comment fonctionne la syntaxe?
    Merci!J'aime comprendre ce que je fais...
    Alex

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Il est d'usage, ici, lorsqu'on a obtenu ou trouvé réponse à son problème, de cliquer sur le bouton , en bas de discussion.

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [AC-2007] Erreur syntaxe dans concaténation de nom Access VBA
    Par Blado_sap dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2015, 12h39
  2. erreur syntaxe dans le code
    Par Daniela dans le forum Access
    Réponses: 3
    Dernier message: 18/12/2006, 12h43
  3. Access: Erreur syntaxe sur un bouton.
    Par cesar33 dans le forum IHM
    Réponses: 13
    Dernier message: 14/12/2006, 10h51
  4. Erreur syntaxe dans une recherche multicritère
    Par cigale13 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 09h58
  5. erreur syntaxe dans requete
    Par dom - ien moutiers dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 11h54

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