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 :

[AC-2010]Comment automatiser la sortie de requetes dans un rapport activité avec parametre commun ?


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Médecin
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut [AC-2010]Comment automatiser la sortie de requetes dans un rapport activité avec parametre commun ?
    Bonjour,

    Depuis maintenant 1 an je développe sur un temps additionnel à mon temps de travail une base de donnée dont le but est de produire un rapport d'activité d'une équipe de soin transversale. Je parcours avec intéret ce forum qui ma énormément aidé à avancer dans mon travail.

    Après 6 mois de saisie effective, je suis en mesure de produire des "indicateurs d'activité", environ 50 sont définis et necessaires pour juger de l'activité de cette équipe transversale. J'ai créé et vérifié les requetes permettant de produire ces indicateurs. Toutes les requetes (ou presque) possèdent un parametre variable : l'année. J'ai contruit les requetes de manière à ce que ce parametre soit saisi systématique en utilisant =[Entrez la date :] (cf exemple ci dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Count(PRISE_EN_CHARGE.IddossierEMSP) AS ["Nombre de patients uniques par période (année)"]
    FROM (SELECT DISTINCT (PRISE_EN_CHARGE.IddossierEMSP) FROM PRISE_EN_CHARGE WHERE ((YEAR(PRISE_EN_CHARGE.Datedebutpench)=[Entrez l'année :]) OR (Year(PRISE_EN_CHARGE.Datefinpench)=[Entrez l'année :] )))
    Ce que je souhaiterais à présent c'est une utilisation et une mise en forme de ces requètes. J'ai trouvé le moyen d'assigner une commande VBA à une requète, de manière à ce que son résultat soit exporté dans un fichier. L'exemple suivant me permet de sortir dans un fichier XLS les tranches d'age des patients suivis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Sub Commande429_Click()
    Static qd As QueryDef
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Tranches d'age pour une année", "c:\fichier.xls"
    End Sub
    Ce qui me chagrine c'est que j'ai 50 requètes différentes et que je ne souhaites pas taper 50 fois l'année, ni me retrouver avec 50 fichiers différents. Celà est utile (les 50 fichiers), mais je cherche à "automatiser celà". J'ai actuellement plusieurs pistes dans lesquelles je me perd.

    Le but serait de créer un formulaire au sein duquel je place de commandes (boutons) qui exécutent les requètes, le résultat serait alors exporté soit dans des fichiers différents, soit dans les feuilles d'un classeur excel. Je préfère les fichiers différents car l'export dans un classeur nécessiterait des compléments d'installation (si je me suis bien renseigné) auquel je n'aurais pas accès. Après recherche j'en suis arrivé à la solution suivante qui ne fonctionne pas : J'ai modifié le code VBA pour déclarer une variable et vérifier qu'elle est correctement enregistrée avant l'éxécution de la requète, puis j'ai essayé d'utiliser cette variable au sein de ma requete, sans succès.

    Le code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Compare Database
    Dim annee As String
    Public Sub Commande429_Click()
    Static qd As QueryDef
    annee = "2014"
    MsgBox annee
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Age moyen des patients", "c:\fichier.xls"
    End Sub
    Le code de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT (Avg(age)*1.0) AS ["Age moyen des patients"]
    FROM (SELECT int((Date()-[Datedenaissance])/365) AS Age
    FROM DOSSIER_EMSP
    WHERE ((Year(DOSSIER_EMSP.[Date de création])='" & annee & "'))
    ORDER BY int((Date()-[Datedenaissance])/365)
    )  AS [BDD_Alias];
    Le message qui précède l'exécution de la requete me donne bien l'année 2014, mais le fichier créé ne contient pas de donnée, juste l'intitulé de de la colonne. J'ai essayé en modifiant '" & annee & "' dans tous les sens, sans succès. J'ai tenté de déclarer une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function getvalue() As String
    getvalue = annee
    End Function
    ET de remplacer '" & annee & "' par getvalue() sans succès non plus.

    Je dois avouer que je ne suis pas du tout au clair avec la déclaration des variables, et que le VBA me fait peur.

    Ensuite une autre piste serait de créer un formulaire qui offrirait une vue des résultats de l'ensemble des requètes/indicateurs. La encore, si c'est facile à mettre en place, l'ouverture du formulaire demande la saisie répétées (50 fois) de l'année. Une variable commune permettrait, idéalement de définir l'année dans un champ du formulaire, puis de récuperer cette valeur lors de l'éxécution des requètes.

    J'espère avoir été assez clair, et je vous remercie d'avoir pris le temps ne serait-ce que de me lire.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Bonjour,

    La méthode la plus simple pour passer un paramètre est le mettre dans un formulaire puis de se référer à ce formulaire en mettant un truc du genre [Forms]![NomTonForm]![NomTonChamp] dans ta requête. Si le formulaire est ouvert, Access se débrouille pour trouver la valeur de lui-même.

    Dans ton cas cela devrait ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Count(PRISE_EN_CHARGE.IddossierEMSP) AS ["Nombre de patients uniques par période (année)"]
    FROM (SELECT DISTINCT (PRISE_EN_CHARGE.IddossierEMSP) FROM PRISE_EN_CHARGE WHERE ((YEAR(PRISE_EN_CHARGE.Datedebutpench)=[Forms]![NomTonForm]![NomTonChamp]) OR (Year(PRISE_EN_CHARGE.Datefinpench)=[Forms]![NomTonForm]![NomTonChamp])))
    Note que ce truc marche aussi pour les formulaires et les rapport en mettant comme =[Forms]![NomTonForm]![NomTonChamp] dans la source du contrôle.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Médecin
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci, je n'avais pas pensé à cette solution.

    Celà fonctionne impec' !

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

Discussions similaires

  1. Comment envoyer la sortie de simulink dans un GUI
    Par trajik dans le forum Simulink
    Réponses: 1
    Dernier message: 25/08/2011, 11h00
  2. Réponses: 12
    Dernier message: 23/03/2009, 19h48
  3. Comment automatiser l'utilisation du solveur dans EXCEL
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2008, 07h20
  4. comment effacer les sorties ods output dans sas
    Par nostress dans le forum ODS et reporting
    Réponses: 9
    Dernier message: 13/06/2008, 10h23
  5. Réponses: 0
    Dernier message: 15/03/2008, 09h59

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