Datareport

Résolu
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006 - 19 août 2006 à 22:19
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006 - 22 août 2006 à 20:45
Bonjour le forum,

J'essaye de faire une application de facturation (en VB6 et utilisation dune base access) et je suis confronté à un probleme concernant le datareport.
J'ai une facture avec plusieurs ligne de produits, le probleme est que si j'insere des txtbox dans le detail du datareport avec les données qui concernent les produits ET egalement le nom du client par exemple, j'aurais pour chaque ligne de produit le nom du client qui apparait dans le rapport.

Ce que je souhaiterais c'est d'avoir le client en header du report mais impossible d'insérer des textbox dans le header du report.

Comment contourner ce probleme ?

Merci d'avance.
A voir également:

19 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
21 août 2006 à 14:08
Bonjour,


Ca ne servira à rien de t' envoyer un exemple.
Tu ne comprendras pas comment configurer un DataReport juste en le regardant
Le mieux ça serait de t' expliquer comment procéder
J' ai un exemple sous les yeux et je vais te montrer quoi faire
On va y aller étape par étape.


 1° Ouvre ton DataReport et met le sur ta gauche.
 2° Ouvre ton DataEnvironnement et glisse le sur ta droite.
 
 */  Si tu n' as pas encore créer ta Section <Entete de groupe >
      Clique avec le bouton droit. Dans ton DataReport,
      Dans le menu contextuel, clique sur "Insert un entête/Pied de page.
      Une section va être insérer entre <Details section> et  < En-tête de page>
      Elle aura pour nom : "En-tête de groupe (section )"


  */Va vers ton Data Environnement qui se presente ainsi :
     
     + Data Environnement
         +Connection ... (ou le nom que tuas donné à celle ci)
            + Adodc    ...(ou le nom que tu as donnée à ton control Ado)
               Puis la liste de tes champs
                 Client
                 Produit
                 Réf
                   
   
       Sélectionne Client et glisse le vers ton DataReport dans la section <En-tête de groupe>
       Tu peux insérer une Etiquette sur la quelle tu vas écrire
      "Nom du client :" et la placer devant le  < champ client >.
        et c' est tout.
      
       Tu insère ensuite Produit  Ref  mais cette fois dans la section Détails.
       Et sur celle ci TU N' INSERT RIEN D' AUTRE  NI ETIQUETTE NI TEXT  NI RIEN DU TOUT.
       Juste les champs relatifs aux produits.(ET PAS DE CHAMP CLIENT S' IL TE PLAIT !)


      Maintenant tu peux executer. Ton Etat se présentera comme je te l' ai montré sur
      Dessin 1. et non comme Dessin 2.
      Avec DataReport tu n' as pas cette possibilité. Tu dois faire avec.
      Cette possibilité est possible avec CrystalReport mais pas avec DataReport.
      J' ai bien regardé, il n' y a pas de propriété "Supprimer si en double" .
      Si tu travaillais avec Crystal Report je t' aurais montré des "TRUCS".


      Allez ! Bon courage. Fais ce que je t' ai dit et tout ira bien.


chaibat
    
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 août 2006 à 01:45
Bonsoir,
>"...le probleme est que si j'insere des txtbox dans le detail du datareport...".
tu sais déjà d' ou vient le problème, c' est bien !
ça t' éviteras au moins de chercher la cause.
et donc deux solutions :
1° SOLUTION / inseres des txtbox dans l' entête de la page .
2° SOLUTION / crée un groupe client.
    Menu/Insére/Groupe
    et choisis le champ client .

chaibat05
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 août 2006 à 01:47
Plutôt
1° SOLUTION / inseres TitleReport si tu connais déjà le nom du client.
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
20 août 2006 à 12:46
merci pour la reponse mais j'ai pas bien compris ni la 1ere ni la 2eme reponse
merci de donner plus de detaills sur les deux possibilités

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 août 2006 à 14:26
Bonjour,
Ce que je voulais dire c' est qu' il ne faut rien mettre dans la section détail.
Cette dernière est strictement reservée aux champs qui vont être alimentés
par les données de ta base ligne par ligne .Chaque ligne correspondant à un
enregistrement.Si tu insére une etiquette sur la première ligne elle va être réécrite
autant de fois qu' il y' aura de lignes.
Les etiquettes doivent être insérer dans les sections ou les données ne vont être
écrite qu' une seule fois par page.
Exemple: Si tu met dans l' entête de page une zone de texte sur laquelle
tu écrit "Nom du client" : devant celle-ci tu vas faire glisser le champ <client> dont le contenu va être remplit à partir de ta table.
Or tu n' a pas qu' un seul client.Et pour chaque client tu as plusieurs factures.Alors pour que le datareport regroupe tes factures pour chaque client il faut que tu crée une
 section entête de groupe qui vas être placée juste au dessus de la section détail qui represente elle le contenu de ta facture (avec la liste des produits).
Tu paramèteras par la suite ton datareport pour que chaque facture tient dans une page avec l' entête du client comme entête.

Regardes dans le menu du datareport, tu trouveras tout ce qu' il faut.

Clair maintenant ?

chaibat
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
20 août 2006 à 17:36
oui je vois bien ce que tu ve dire mais c pas le cas pr moi!t'as donner une solution pr imprimer les detaille de chaque "facture" pour chaque client dans un feuille separer,c pas le cas pr moi ! moi je ve imprimer  les clients avec les produit consomés dans  dans la meme table ! sans que le nom du client soit repeté voila un simple exemple :

Client   |   Produit   |   Ref   |         
----------------------------
   C1    |    P1         | 123    |
            |    P2         | 124    |
            |    P5         | 1223  |
------------------------------
C2       |    P1         | 123    |
            |    P3         | 122    |
-----------------------------
C3       |    P6         | 155    |
   
voila je crois que c assez clair mnt et merci      
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 août 2006 à 20:56
Bonsoir,
Le principe est le même.Et la solution que je te propse reste valable.
Je t' explique et je te fais un dessin.

Client   |   Produit   |   Ref   |         
-------------------------------------------------
SECTION: Entête de groupe Client
<champ client>
  C1
-----------------------------------------------
            |    P1         | 123    |
            |    P2         | 124    |
            |    P5         | 1223  |
------------------------------
SECTION: Entête de groupe Client
<champ client>
  C2
-----------------------------------------------
            |    P1         | 123    |
            |    P3         | 122    |
-----------------------------
 SECTION: Entête de groupe Client
<champ client>
  C3
-----------------------------------------------
           |    P6         | 155    |

Maintenant si tu veux que C1, C2, C3 apparaissent au niveau de la première ligne
dans la section Detail, procède ainsi :

 1° Reduit la hauteur de la section groupe client à 0 .Ou bien dans la paramètre de cette secion choisit "Explorer sans Supprime"
 
2°Fais glisser  un autre champ client (à partir de la liste des champs de ta table)
et place le sur la première ligne de Detail.Choisit ensuite comme paramètre :"Supprimer si en double.

Ton état ressemblera à ton premier dessin.
Mais il faut dans tout les cas créer une Section Entête de groupe.pour que les
produits soient groupés pour chaque client.Si tu l' a déjà fais c' est parfait.

J' espère cette fois avoir répondu à ta question.

chaibat
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
20 août 2006 à 21:11
Allez je vais être gentil avec toi !
2 iéme dessin :

Client        |   Produit   |   Ref   |         
-------------------------------------------------
SECTION: Entête de groupe Client hauteur=0
-----------------------------------------------
<chp C1>  |    P1         | 123    |
                  |    P2         | 124    |
                  |    P5         | 1223  |
------------------------------------------------------
SECTION: Entête de groupe Client hauteur=0
-----------------------------------------------
<chp C2>  |    P1        | 123    |
                  |     P6        | 122   |
------------------------------------------------------
SECTION: Entête de groupe Client hauteur=0
-----------------------------------------------
<chp C3> |    P6        | 155    |
 ------------------------------------------------------

chaibat
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
20 août 2006 à 23:38
merci infiniment je vais tester ça et je te repondrai demain
merci encore une fois
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
21 août 2006 à 12:42
bonjour Mr chaibat j'ai bien essayer de tester tes propositions mais apparament ça ne marche pas j'ai tt essayer !
en effet je trouve pas ce champ dans les parametres dont tu as parlé : ":"Supprimer si en double"
et quand j'ajout une nouvelle section ou j'insert le rptText associé au client il me donne l'erreur suivante "Report section do not much data Source"
donc si t'as un exemple sur n'import quelle base de données dont il y a le meme astuce que t'as expliqué deja je serai tres ravissant que tu me l'envois et merci infiniment
voila mon mail    [mailto:phebus709@yahoo.com phebus709@yahoo.com]
et merci
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
21 août 2006 à 14:47
merci infiniment pour ta passion, j'ai fait exactement ce que tu m'avais demandé de faire mais sa donne  l'erreur suivante lors de l'affichage de mon etat:
"Relate, Compute By and Sort operation cannot be performed on colum(s) whose defined size is unknown or too large "
et merci
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
21 août 2006 à 16:10
Re-bonjour,
Désolé de ne pas pouvoir t' aider d' avantage.
A vrai dire je n' ai aucune idée sur la cause de cette erreur.
Peut être que celà vient tout simplement de la mise en page
de ton état.(dimensions des colonnes) mais je n' en suis pas sûr.

Travailles dessus encore un peu, mais ne changes rien à ce que
 je t' ai dit auparavent.

Bon courage et peut être qu' une autre fois je pourrais t' aider
d' avantage.

A+

chaibat
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
21 août 2006 à 22:55
bonsoir
merci bq pour votre aide
j'ai trouvé la cause de cette erreur, ça vient du fait que les attribus sous acces sont definit comme etant des "memo" j'ai changé en type "texte" et ça marche impecaple
mon probleme mnt reside sur le fait que je ve fair deux commandes filles herite de la meme commande mere pour les insérer ensuite dans ma datareport mais ça marche pas apparament c impossible avec deux filles de meme niveau
si t'as une idée comment je peux resoudre ce probleme et merci d'avance
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 août 2006 à 09:42
Bonsoir,
tu vois que ça marche quand on insiste !

Maintenat expliques-moi en détail  le probléme de la "mère" et ses deux "filles".
et fais moi un dessin si c' est possible.

chaibat 
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
22 août 2006 à 13:30
dans mon data envernement j'ai la possibilité de creer des commandes filles pour pour chauque commande mere cette commande fille herite de  sa mere le champ en commun ou un champ qu'on dois specifier
exp:


cmdMere (nous donne la liste des clients)
       |____cmdFille1 ( nous donne la liste des produits pour chaque client)
       |____CmdFille2.. .. . 
                        |____Cmd    Fille12 ....

on specifie la relation entre la commande mere et fille  dans la tablette "Relation" apres avoir creer cette dernier.
apres on peut formatter notre datareport qui est deja lier a la cmdMere selon le nombre des cmd filles.chaque section est liée a une cmd fille
le probleme c qu'on ne pe pas attacher une section a des cmd filles de meme niveau.
est ce que tu sais comment faire?

>en faite j'une 2eme question: est ce que tu connais comment faire une reorientation des sections , normalement elles sont horizontal moi je veux les faire vertical et merci d'avance


 
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 août 2006 à 14:35
Salut,
D' après ce que j' ai compris, tu peux appliquer le même principe
de Groupe :
  +SECTION: Entête de groupe champ client>
      +SECTION: Entête de groupe <champ cmdMere>
         +SECTION: Entête de groupe <champ cmdFille>
      
         -DETAILS SECTION    

ton etat se présenterait  alors ainsi :
( Exemple pour un seul client) 

-------------------------------------------------
  C1
-------------------------------------------------
-------------------------------------------------
  CmdMere1
-------------------------------------------------
-------------------------------------------------
    CmdFille1
-----------------------------------------------
            |             |       |
            |             |       |
 -------------------------------------------------
    CmdFille2
-----------------------------------------------
            |             |       |
            |             |       |
            |             |       |
------------------------------
Ilpasse ensuite à cmdMere2
-------------------------------------------------
  CmdMere2
-------------------------------------------------
    CmdFille1
-----------------------------------------------
            |             |       |
            |             |       |
 -------------------------------------------------
    CmdFille2
-----------------------------------------------
            |             |       |
            |             |       |
            |             |       |
------------------------------
Et ainsi de suite...

Pour ce qui est du Format "Portrait" et "Paysage" .Désolé !. je ne sais
pas comment on le configure.En fait moi je ne travaille pas avec
DataReport mais avec Crystal Report.

A+
chaibat
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
22 août 2006 à 16:49
en fait ce que je cherche moi c cette forme

+SECTION: Entête de groupe champ client>
      +SECTION: Entête de groupe <champ cmdMere>
          +SECTION: Entête de groupe <champ cmdFille1>
          +SECTION: Entête de groupe <champ cmdFille2>
donc deux commande filles dans la meme section !

>Mr chaibat je m'excuse vraiment pr le derangement et merci d'aller avec moi jusqu'au bout, en fait j'ai un petit prob, je m'explique :
lorsque j'affecte une source de donnée a mon datareport, que ça soit par dataenverinement ou par une requete, ce dernier parcour automatiquement le resultat du requete et affiche le resultat ,moi je ve le forcer a ce deplacer d'une ligne a l'autre selon mon choix dans le code, ça ve dire je ve le "movenext" apres avoir faire un traitement donnée.
ou bien je ve prendre la valeur qui s'affiche dans une zone text apres chaque itteration.
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 août 2006 à 18:57
Salut,

^^+SECTION: Entête de groupe champ client>
      +SECTION: Entête de groupe <champ cmdMere>
          +SECTION: Entête de groupe <champ cmdFille1>
          +SECTION: Entête de groupe <champ cmdFille2>
donc deux commande filles dans la meme section

réponse :
Tu ne crée que deux Sections
Les cmdFilles seront incluses dans <SECTION Détails>
pour celà il faut que les enregistrements soient triées sur
   client, cmdMere,cmdFille.

    +SECTION: Entête de groupe champ client>
      +SECTION: Entête de groupe <champ cmdMere>
           Produits (cmdFille1)  Ref  (cmdFille1) 
            ...................................................................
            ...................................................................
           ...................................................................
          Produits (cmdFille2)  Ref  (cmdFille2) 
            ...................................................................
            ...................................................................
           ...................................................................

^^lorsque j'affecte une source de donnée a mon datareport, que ça soit par dataenverinement ou par une requete, ce dernier parcour automatiquement le resultat du requete et affiche le resultat ,moi je ve le forcer a ce deplacer d'une ligne a l'autre selon mon choix dans le code, ça ve dire je ve le "movenext" apres avoir faire un traitement donnée.
ou bien je ve prendre la valeur qui s'affiche dans une zone text apres chaque itteration.

Même réponse:
il faut que tes enregistrements soient triées sur
   client, cmdMere,cmdFille.

Mais le traitement que tu envisages , il faut le faire avant le lancement de l' état.
Dès que tu executes ton etat tu ne peux plus intervenir.
Si tu veux que le datareport tiens compte de ce traitement il faut :
  
*//Dans Acces
 -^^ Créer une table résultat

*//Avec ton DataEnvironnement et DataReport
 -^^ Lier ton Etat à cette table (refais la même chose que ce que tu as fais avant)
 
*//Dans ton programme
 -^^ Faire une liaison vers ta source principale
 -^^ Faire ton traitement
 -^^ Sauvegarder ton traitement¨dans ta table résultat
 -^^ Lancer ton etat.
  
   Lorsque ton etat sera exécuté il t' affichera le résultat de ton traitement.
¨
  A chaque fois que tu veux un nouvel etat
  Tu vides ta table resultat
  tu recommences la même chose avec les nouvelles données que tu veux afficher.

  C' est une question de méthode.
 
   ça ira comme ça ?

CHAIBAT
cs_phebus709 Messages postés 58 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 23 septembre 2006
22 août 2006 à 20:45
merci pour la reponse j ai deja pensé a faire ça mais je me demander si il y avait une methode optimisée sans faire ce grand tour
merci en tt cas je vais essayer qd meme merci mille fois :)
Rejoignez-nous