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 :

Exécution de Requête stockée dans le champ d'une table [Toutes versions]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Exécution de Requête stockée dans le champ d'une table
    Bonjour chers Amis,
    Désolé de vous déranger malgré vos multiples occupations. C'est avec un grand plaisir que je suis les discussions sur le Forum et ceci m'aide beaucoup dans mes tâches quotidiennes. En effet, j'ai un peu plus de 100 requêtes sql que j'ai consigné dans une table tbl_req avec les champs suivants:

    id=identifiant de la requêtes
    des= description de la requête
    sql= le code sql de la requête
    act=Activer
    Ma question est de savoir si c'est possible à partir de cette table d'exécuter les codes sql selon un format bien précis (ligne par ligne) quand act est coché.
    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Veux-tu faire ceci :

    - 1re étape : mettre ta table à jour en cochant les requêtes à exécuter ;
    - 2e étape : cliquer un bouton pour déclencher l'exécution du sql contenu dans les enregistrements pour lesquels la case est cochée ?

    Bizarre comme manière de faire... mais c'est évidemment faisable en VBA.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    c'est exactement ce que je veux faire

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Je suppose que tes requêtes sont de type : Suppression ou Ajout ou Modification.
    Donc pas de requête de type sélection.
    Tu dois ajouter la référence :




    Code associé au bouton qui déclenche l’exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Compare Database
    Option Explicit
     
     
    Private Sub BtExecuter_Click()
      Dim oRst As DAO.Recordset
      Set oRst = CurrentDb.OpenRecordset("SELECT sql FROM LaTable WHERE act =Yes;", dbOpenDynaset)
      Do While Not oRst.EOF
        DoCmd.RunSQL oRst("sql")
        oRst.movenext
      Loop
    End Sub
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci pour la réponse malheureusement, je n'exécute que des requêtes selection.

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Dans ce cas, je n'ai pas de solution !

    Une solution serait envisageable si :

    - les requêtes en question étaient enregistrées,

    - que la table contienne le nom des requêtes (pas le SQL).

    Le code devient alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
    Option Explicit
     
     
    Private Sub BtExecuter_Click()
      Dim oRst As DAO.Recordset
      Set oRst = CurrentDb.OpenRecordset("SELECT NomRequete FROM LaTable WHERE act =Yes;", dbOpenDynaset)
      DoCmd.SetWarnings False
      Do While Not oRst.EOF
        DoCmd.OpenQuery oRst("NomRequete")
        oRst.movenext
      Loop
      DoCmd.SetWarnings True
    End Sub
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    merci beaucoup, je constate qu'il est pas possible d’exécuter des codes sql sélection de cette manière.
    J'avais écris le code ci dessous. mais il ressort une erreur de type 2342, une action exécutersql nécessite un argument consistant en une instruction sql
    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
    Function ParcourirPourExecution()
        Dim Rs As Recordset: Dim EstCoche As Boolean
        Dim rSQL As Variant
     
     
        rSQL = "SELECT * FROM ADM_REQ WHERE REQ_SQL IS NOT NULL"
        Set Rs = CurrentDb.OpenRecordset(rSQL)
     
        DoCmd.SetWarnings False
     
        Do While Not Rs.EOF
            EstCoche = Rs!REQ_ACT: rSQL = Rs!REQ_SQL
     
            If EstCoche Then DoCmd.RunSQL rSQL
            Rs.MoveNext
        Loop
     
        DoCmd.SetWarnings True
        Rs.Close: Set Rs = Nothing
    End Function

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Qu'est-ce qui t'empêche d'enregistrer les requêtes, quitte à cacher ces objets ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    je pense que je vais explorer cette option pour aller plus vite.
    Merci beaucoup pour Claude pour ta disponibilité

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2016, 15h00
  2. Réponses: 4
    Dernier message: 18/10/2013, 13h30
  3. Réponses: 4
    Dernier message: 28/08/2011, 16h03
  4. Réponses: 1
    Dernier message: 04/08/2011, 10h48
  5. Réponses: 5
    Dernier message: 12/09/2008, 19h53

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