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 :

Probleme pour implémenter un requete SQL Access dans VBA


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme pour implémenter un requete SQL Access dans VBA
    Bonjour,

    Je débute Access et j'aimerais inserer dans un un userform une requête SELECT, le prof pour implémenter une requete SQL nous a dit d'utiliser la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set bds = OpenDatabase(ThisWorkbook.Path & "\librairie.mdb") 'assignation lien bdd
    bds.Execute ("INSERT INTO `auteur` (`nom_auteur`, `prénom_auteur`) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "')")
    Ceci fonctionne parfaitement mais je n'arrive pas a rechercher un auteur ici Hugo dans ma table auteur via la requete SQL (qui fonctionne sous Acess)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur)="Hugo"));
    Dans VBA ceci me met une erreur : Attendu: séparateur de liste ou ) Avez vous la réponse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set bds = OpenDatabase(ThisWorkbook.Path & "\librairie.mdb") 
    bds.Execute ("SELECT `nom_auteur`, `prénom_auteur` FROM `auteur` WHERE (((`nom_auteur`)= "Hugo"));")
    Je ne trouve personne qui utilise la fonction bds.Execute. Est elle est dépassée ?
    Si vous avez un lien vers un tutoriel qui explique comment implémenter des requêtes SQL en VBA je suis preneur !

    Merci et bonne soirée !

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur)="Hugo"));
    essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur) Like "*Hugo*"));
    Pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bds.Execute ("SELECT `nom_auteur`, `prénom_auteur` FROM `auteur` WHERE (((`nom_auteur`)= "Hugo"));")
    essayez cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bds.Execute ("SELECT `nom_auteur`, `prénom_auteur` FROM `auteur` WHERE `nom_auteur` Like '*Hugo*';")

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Quand j'utilise le code ci dessous plus simple cela fonctionne mais quand j'utilise votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur) Like " * Hugo * "));"
    cela ne fonctionne pas, il y a une erreur d’incompatibilité de type.

    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
    Private Sub CommandButton1_Click()
     
    Dim RS As DAO.Recordset
    Dim Db As Database
    Dim reqSQL As String
     
    Set Db = OpenDatabase(ThisWorkbook.Path & "\librairie.mdb") 'assignation lien bdd
     
    reqSQL = "SELECT * FROM `auteur`"
     
    Set RS = Db.OpenRecordset(reqSQL)
     
    Do Until RS.EOF
     
    MsgBox RS.Fields(1)
     
    RS.MoveNext
    Loop
    RS.Close
     
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reqSQL = "SELECT * FROM `auteur`"
    l'apostrophe inversée: ` est inconnue dans Access, c'est ce caractère qu'il faut utiliser: '
    De plus il n'en faut pas autour du nom des tables (on utilise les crochets [ ] si le nom de la table contient des espaces, même si le caractère espace n'est pas recommandé dans le nom des objets).

    Quand j'utilise le code ci dessous plus simple cela fonctionne mais quand j'utilise votre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur) Like " * Hugo * "));"
    cela ne fonctionne pas, il y a une erreur d’incompatibilité de type.
    Les guillemets doivent être doublées lorsque qu'elles sont utilisées à l'intérieur d'autres guillemets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur) Like ""*Hugo*""));"
    et si Hugo est une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT auteur.nom_auteur, auteur.prénom_auteur FROM auteur WHERE (((auteur.nom_auteur) Like ""*" & Hugo & "*""));"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set bds = OpenDatabase(ThisWorkbook.Path & "\librairie.mdb") 'assignation lien bdd
    ThisWorkbook.Path c'est uniquement pour Excel, Userform également, dans Access c'est Formulaire (Form en anglais dans VBA).

    Je ne trouve personne qui utilise la fonction bds.Execute. Est elle est dépassée ?
    non, elle est même couramment utilisée, sauf que cela fonctionne uniquement pour les requêtes action (INSERT, UPDATE, DELETE, CREATE TABLE ...)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Probleme pour modifier cette requete SQL
    Par phcm971 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/03/2011, 19h46
  2. Probleme ADO adapter une requete sql pour l'utiliser dans mon code vb6
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/04/2009, 15h53
  3. Probleme pour rediger ma requete sql
    Par JYM34 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 22/09/2006, 12h58
  4. Réponses: 26
    Dernier message: 23/06/2006, 15h45

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