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

Requêtes et SQL. Discussion :

Requete sql via vba


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de Echizen1
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 44
    Points
    44
    Par défaut Requete sql via vba
    Salut tout le monde,
    voilà, je souhaite faire une simple requete Selection via VBA sous Access. Le code a l'ai naturel mais, ça plante chez moi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Commande0_Click()
     
    Dim db As DAO.Database
    Dim SQL As String
     
    Set db = CurrentDb
     
     
    SQL = "Select * From TableA"
    DoCmd.RunSQL SQL
     
    End Sub

    Où est l'erreur SVP ?

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    RunSQL exécute une requête. Un select ne s'exécute pas.

    Pour récuperer des données en VBA, il faut utiliser les recordsets. Par exemple avec DAO :

    http://warin.developpez.com/access/dao

  3. #3
    Membre du Club Avatar de Echizen1
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    En fait, je m'y prends peut-être mal...
    J'ai un formulaire avec 1 champs qui contient le nom de ma table Access.
    En cliquant sur un bouton, je souhaite afficher le contenu de la table (j'ai pris la requete selection car c'est la plus simple à écrire).

    Le résultat de la "requete" sera exporté vers une feuille Excel.

    J'ai trouvé ça mais ça marche toujours pas :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("SELECT * FROM Table", dbOpenDynaset)
    Merci

  4. #4
    Membre du Club Avatar de Echizen1
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Bonjour,
    A cette heure, je n'ai toujours pas trouvé .
    Quelqu'un saurait comment faire SVP ?

    Merci bien

  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
    Hello,

    merci de chercher dans la FAQ :
    1- Créer la requête depuis ton SQL
    http://access.developpez.com/faq/?re...er+requete+VBA

    2- Ouvrir la requête
    DoCmd.OpenQuery ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Membre du Club Avatar de Echizen1
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Salut,
    J'ai pas mal avancé sur ce petit problème (Pas évident quand on touche pas à Sql).

    Voici mon code si cela peut en aider certain

    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
    'On vérifie si la requete existe déjà (Si oui, on la supprime)
    Dim qry As QueryDef
     
    For Each qry In CurrentDb.QueryDefs
        If qry.Name = "MyReq" Then
            'MsgBox "La requêtes existe déjà ! Elle va être supprimée !"
            CurrentDb.QueryDefs.Delete (qry.Name)
        End If
    Next qry
     
    'Création de la requête SQL
    Dim ReqSQL As String
    ReqSQL = "Select * From Table1"
     
    CurrentDb.CreateQueryDef "MyReq", ReqSQL
     
    'Ouverture/Exécution de la requête SQL
    DoCmd.OpenQuery "MyReq"
     
    'Fermeture de la requête SQL
    'DoCmd.Close acQuery, "MyReq"
     
    'Exportation vers Excel
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "MyReq", "c:\fichier.xls"

    Reste un petit problème à régler :
    Je souhaite que le nom de la table soit "dynamique". Autrement dit par l'intermédiaire d'un champs de Texte renseigné manuellement par l'utilisateur, la requête s'exécute sur la table en question.

    Il doit s'agir d'un paramètrage mais je vois pas comment faire. J'ai essayé de m'inspirer de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Parameters [Entrez une valeur numérique :] integer;
    Select * From LATABLE
    Where MONCHAMP =  [Entrez une valeur numérique :];
    Si vous pouviez m'aider encore

  7. #7
    Membre du Club Avatar de Echizen1
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Ça y est, j'ai réussi à l'aide d'un ancien post de cafeine
    http://http://www.developpez.net/forums/showthread.php?t=208632&highlight=table+access+param%E8tre

    Le "code" est donc le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim strSQL As String
    Dim strNomTable As String
     
    strNomTable = Me.Texte1
    strSQL = "SELECT * FROM [" & strNomTable & "]"
     
    CurrentDb.CreateQueryDef "testReq", strSQL

    Voilà,
    Merci bien tout le monde.
    Je passe en résolu

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

Discussions similaires

  1. [AC-2000] affichage requete SQL via vba
    Par jarod1990 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/05/2010, 19h20
  2. ouvrir une requete en mode sql via vba
    Par moimemessssssssss dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/09/2008, 11h43
  3. Requete SQL via macro vba changeant le format de la cellule
    Par laville dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2007, 10h26
  4. Doc pour créer requetes SQL via ODBC sous EXCEL
    Par satanas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/01/2005, 08h33
  5. [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

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