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

IHM Discussion :

Sous Rapport Dynamique [Toutes versions]


Sujet :

IHM

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut Sous Rapport Dynamique
    Bonjour,

    j'ai une table avec 2 champs
    - Titre (text)
    - NomDuRapport (text), faisant référence à un rapport existant dans la base access

    je souhaiterai lancer un rapport sur cette table affichant pour chaque détail
    - le titre
    - un objet SubForm/Subreport affichant le rapport appellé [NomDuRapport]

    une idée?

  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,

    Peut-être en plusieurs phases.

    - 1° On aurait un état modèle avec une série de paires zone de texte/container de subreport vierges. (Un peu plus de paires que la table contient de rapports.)
    - 2° On construit à la volée un nouvel état dans lequel on garnit les zones de texte avec les [Titre] de la table, les sources de subreport avec "État." & [NomDuRapport].
    - 3° On supprime les paires excédentaires.
    - 4° On sauve ce « nouveau » rapport.
    - 5° Et on l’ouvre.

    N.B. Beau challenge pour occuper un dimanche pluvieux !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    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
    Un premier jet

    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
    Option Compare Database
    Option Explicit
     
     
    Public Sub CreerEtatSub()
      On Error GoTo GestionErreur
      Dim oRst As DAO.Recordset
      Dim i As Integer
      DoCmd.DeleteObject acReport, "eEtatSub"
      DoCmd.CopyObject , "eEtatSub", acReport, "eModele"
      DoCmd.OpenReport "eEtatSub", acViewDesign
      Set oRst = CurrentDb.OpenRecordset("laTable")
      oRst.MoveFirst
      i = 1
      Do While Not oRst.EOF
        Reports!eEtatSub("Titre" & i).ControlSource = "=""" & oRst("Titre") & """"
        Reports!eEtatSub("CTNR" & i).SourceObject = "État." & oRst("NomDuRapport")
        i = i + 1
        oRst.MoveNext
      Loop
      DoCmd.OpenReport "eEtatSub", acViewPreview
      oRst.Close
      Set oRst = Nothing
    GestionErreur:
      Select Case Err.Number
        Case 0 'Pas d'erreur
        Case 29068, 7874
          Resume Next
        Case Else
          MsgBox "Erreur dans CreerEtatSub N° " & Err.Number & " " & Err.Description
      End Select
    End Sub
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Merci beaucoup, c'est vraiment LA solution!

    je vais créer plusieurs modèles avec 10, ou 20 ou 50 groupes en fonction du nombre de records du recordset

    et ton dimanche pluvieux est libre

  5. #5
    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,

    je vais créer plusieurs modèles avec 10, ou 20 ou 50 groupes en fonction du nombre de records du recordset
    Plus simple !
    Pour construire le modèle procède comme ceci :
    - Tu crées une paire :


    - Tu sélectionnes ces deux contrôles et tu copies/colles 49 fois. Tu as maintenant 50 paires, dont 49 « mal nommées » (Textexxx, Fillexxx).
    - Tu renommes Textexxx =>Titre2, … , Titre50 et Fillexxx => CTNR2, … , CTNR50.
    - Tu sélectionnes les 100 contrôles et tu leur attribues la plus petite hauteur possible <> 0 ( 0.002 cm ≈ 1 tip) :

    - Tu les colles tous vers le haut :

    -Tu réduis la taille de la section Détail.
    Sur l’état les paires qui ne sont pas utilisées sont imperceptibles.
    => un seul modèle quel que soit le nbre d’items dans la table.

    J’ai un peu modifié la procédure d’appel, pour offrir le choix de la table :


    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
    Option Compare Database
    Option Explicit
     
     
    Public Sub CreerEtatSub()
      On Error GoTo GestionErreur
      Dim oRst As DAO.Recordset
      Dim i As Integer
      Dim sLatable As String
      sLatable = Forms!fChoix!cboChoix
      DoCmd.DeleteObject acReport, "eEtatSub"
      DoCmd.CopyObject , "eEtatSub", acReport, "eModele"
      DoCmd.OpenReport "eEtatSub", acViewDesign
      Set oRst = CurrentDb.OpenRecordset(sLatable)
      oRst.MoveFirst
      i = 1
      Do While Not oRst.EOF
        Reports!eEtatSub("Titre" & i).ControlSource = "=""" & oRst("Titre") & """"
        Reports!eEtatSub("CTNR" & i).SourceObject = "État." & oRst("NomDuRapport")
        i = i + 1
        oRst.MoveNext
      Loop
      DoCmd.OpenReport "eEtatSub", acViewPreview
      oRst.Close
      Set oRst = Nothing
    GestionErreur:
      Select Case Err.Number
        Case 0 'Pas d'erreur
        Case 29068, 7874
          Resume Next
        Case Else
          MsgBox "Erreur dans CreerEtatSub N° " & Err.Number & " " & Err.Description
      End Select
    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 !

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Vraiment génial Claude!
    ça évite de gérer plusieurs template

    et j'en profite pour te poser une petite question très technique à propos de cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reports!eEtatSub("CTNR" & i).SourceObject = "État." & oRst("NomDuRapport")
    comme j'ai un access en anglais, j'ai remplacé le mot "État." par "Report" pour faire marcher ta maquette

    y a t'il une fonction interne access qui renvoie le mot "État." ou "Report" en fonction du contexte de la langue ?

  7. #7
    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
    Ah ! si la planète entière parlait français...

    En tout cas, si tu écris :Reports!eEtatSub("CTNR" & i).SourceObject = "Report." & oRst("NomDuRapport"), Access version francophone proteste


    Autre joyeuseté entre les deux versions : le format des dates !

    y a t'il une fonction interne access qui renvoie le mot "État." ou "Report" en fonction du contexte de la langue ?
    Pas à ma connaissance. Personnellement, j'essaie les différentes syntaxes jusqu'à trouver la bonne.

    Au plaisir de te recroiser.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. Rapport et sous rapport dynamique ?
    Par littlefish dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 20/08/2010, 16h00
  2. Sous rapport dynamique
    Par juliend09 dans le forum iReport
    Réponses: 2
    Dernier message: 22/04/2010, 09h11
  3. Repport et sous rapport dynamique (Drill-Down)
    Par skunkies dans le forum BIRT
    Réponses: 21
    Dernier message: 16/06/2009, 12h22
  4. [SQL Server 2005 - SSRS] - Sous Rapport dynamique
    Par sandF dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/01/2008, 17h39
  5. Réponses: 0
    Dernier message: 25/07/2007, 17h17

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