Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Rave
Rave Forum d'entraide sur Rave Reports
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 18h23   #1
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Par défaut [D2007 / Rave 7.5.2] Impression sans fin !

Bonjour,

Après avoir bien galéré pour imprimer des fiches objets je dois maintenant imprimer la totalité de ces fiches ; c'est là que j'ai un souci et sollicite toute idée bienvenue

Chaque fiche ne tient pas sur une page mais en moyenne sur 3.

Pour en imprimer une seule aucun pb : le DataSet Delphi étant déjà positionné sur le bon enregistrement, toutes les données des champs du DataView sont les bonnes et toutes mes Bands Rave sont "autonomes" (pas besoin de "ControllerBand").
Pour imprimer toutes les fiches : le rapport débute par une DataBand (affichant le nom de l'objet en question), dont dans l'idée toutes les Band/DataBand suivantes sont dépendantes (cela se traduit respectivement dans le BandStyle Editor par "Row Header" pour la 1ère et "Detail" pour les autres, plus "ControllerBand" qui est définie). Jusque là tout va bien, le problème vient de la longueur du contenu : dès que le texte dépasse une page l'impression s'emballe et ne s'arrête jamais !

Au début j'ai placé toutes les Bands/DataBands sur une page (non sans difficulté mais en jouant avec "DesignerHide" et "Always show Band headers" pour les réduire lors de la conception ça rentre). En mode preview sous Rave ça marche, mais en exécution sous Delphi : boucle infinie.
Si je supprime des Bands : ça marche dès lors que rien ne dépasse de la 1ère page !!

J'ai donc déplacé qques Bands sur les pages suivantes mais là surprise : impossible de leur assigner comme maitre la DataBand de la 1ère page ! Qu'à cela ne tienne je la duplique en haut de 2nde page : à ce moment là OK mais l'ordre d'impression est totalement (et logiquement) modifié, je me retrouve avec la page 1 (p1) de l'objet 1 (o1) suivie de p1o2, p1o3.. p1oN et ensuite p2o1, p2o2 etc. Ce qui ne me satisfait guère.

J'aimerais donc de préférence faire tenir toutes mes DataBands sur une page (en mode édition) et supprimer ce bug d'impression infinie ! Des idées svp ?
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 18h26   #2
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Je précise que j'ai testé les différents modes GotoMode, GotoPage... sans succès.

J'ai aussi trouvé qques liens sur internet, par exemple :
http://efreedom.com/Question/1-68929...g-Nevrona-Rave

mais tous proposent la même solution de bricolage... que j'aurais du mal à appliquer car "rows within the page" n'est absolument pas quantifiable dans mon cas
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 09h46   #3
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 611
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 611
Points : 4 508
Points : 4 508
je nage . Tu peux faire un shéma de ton état voulu avec si possible le shema des tables qui s'y rattachent
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h25   #4
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Bonjour,
Oui je comprends que cela paraisse fouillis par écrit

Voici déjà une capture de la 1ère page :


En haut la DataBand maitre suivie de toutes les Bands/DataBands détail, sachant qu'il en manque les 2/3 car dès que le contenu des données de ces bandes dépasse la hauteur d'une page --> impression infinie.
Avec ces seules bandes là tout tient sur cette 1ère page ; le reste des données est donc placé en 2nde page, identique à la page 1 mais avec sa propre DataBand maitre (exactement la même que celle-ci aussi).
Cela fonctionne mais le rapport imprime N fois la page 1 et ensuite N fois la page 2. Et moi je voudrais p1p2 de l'objet 1, puis p1p2 de l'objet 2 etc...

Suis-je plus clair ?
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h27   #5
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Quant au schéma des tables il est simple : toutes les données proviennent de la même table !! (description de l'objet)
Excepté pour les DataBands, que je gère justement avec des RvCustomConnection et du OnGetRow pour récupérér les données de requêtes annexes.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 12h00   #6
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
En repartant de zéro :
1. je place ma DataBand en haut
2. je rajoute les Bandes une par une

Dès que le contenu dépasse la heuteur de la page :
> sous l'IDE Rave en preview pas de souci
> sous Delphi = impression infinie

Et je n'arrive pas à identifier la cause de tout ça.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h00   #7
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Bon j'ai réussi à faire fonctionner une fois (!!!) comme je voulais en supprimant la seule DataBand détail présente sur la capture.
Maintenant même en réduisant au plus simple (cad la seule DataBand du haut) impossible de faire fonctionner sous Delphi
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h07   #8
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
C'est vraiment un truc de fou : si j'implémente sous Delphi l'évènement OnNext de mon RvDataSetConnection "principal" ça provoque une boucle infinie ! Même si l'évènement est "vide" (aucune action) !!!

En le supprimant ça remarche, mais mon pb initial ne vient pas de là car j'ai justement rajouté le OnNext pour tester une sorte de compteur... sans grand succès à l'évidence.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 19h30   #9
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
En gros maintenant j'ai ça :



Tant que la DataBand est positionnée en dernier c'est OK, si je la remonte seulement en avant-dernier paf ! Boucle d'impression sans fin.

Cela pourrait provenir :
> du paramétrage de la bande elle même dans l'inspecteur d'objet Rave, mais tout est par défaut et fonctionne par ailleurs
> plus probable : de la communication TRvDataSetConnection (Delphi) / DataView (Rave) et surtout de sa terminaison.

Je m'étonne de ne rien trouver à ce sujet sur le net, vu que je ne fais rien de violent ni de particulier...

Autre expérimentations : ne jamais implémenter les évènements OnGetCols et OnNext d'un TRvDataSetConnection --> violations d'accès !
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 18h51   #10
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Après une journée entière (!!) de tests j'en suis là :



Impossible de monter n'importe quelle DataBand (dans ce cas la 2) au dessus de sa position en cours sinon ça plante (toujours l'impression infinie).
Là elle n'est plus reliée à un DataSet mais à un simple RvCustomConnection (pour tests), à part ça j'ai un peu tout essayé : suppression de bandes, de contrôles dans les bandes, modifs de propriétés, etc etc mais rien n'y fait et je suis à court d'inspiration

Du coup je pense générer 1 fiche / objet (ça ça marche !) et concaténer tout ça, je ne vois pas d'autre solution...
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 19h30   #11
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
J'ai une nouvelle piste, enfin une observation plutôt ! En effet le rapport fonctionne si :
> les données imprimées tiennent sur une page
> les données imprimées font plus d'une page et aucun DataBand n'est en 1ère page !!

Cela proviendrait donc peut être de l'enchainement des pages...

Tout espoir n'est pas perdu
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 08h55   #12
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 611
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 611
Points : 4 508
Points : 4 508
ne me connectant qu'une fois par jour au forum , je ne peux que constater l'état d'avancement

- concernant les données il y aurait certainement moyen de faire plus simple à coup de Jointures (quoique ,il y ait un paquet impressionnant de tables)
Citation:
Excepté pour les DataBands, que je gère justement avec des RvCustomConnection et du OnGetRow pour récupérér les données de requêtes annexes.
là , il y a du travail à faire pour éviter ces customconnections , cela me semble bien compliqué et surtout trop 'RAVE' à mon goût (moins j'utilise les 'fonctionnalités' rave , mieux mes états se portent)

- le type d'état maitre détail(s) serait (est) le plus approprié mais uniquement en cas de relations 1-n entre maitre et détail . Utiliser aussi des Entetes de Bande et bas de Bande si nécessaire (par exemple pour la bande Sciage , j'aurais mis le titre 'SCIAGE ET USINAGE' et le trait dans la Bande 'Entete' plutôt que dans la bande détail , bien que cela n'ai pas d'importance puisque une seule 'ligne')

Citation:
ne jamais implémenter les évènements OnGetCols et OnNext d'un TRvDataSetConnection
Faux , c'est parfaitemet possible , cependant voir ma première intervention.

Cependant j'ai encore du mal a visualiser le truc .
Questions :
le rapport entre la Bande Maitre (ce que tu appelles Objet) et chaque détails est t-il de 1-1 ?
tu indiques que chaque fiche tient sur 3 pages (en moyenne) as tu pensé a faire un état sur plusieurs pages avec enchainement de page ? (oui , c'est possible) .
Peux tu joindre un PDF d'une Fiche Objet pour essayer de visualiser l'etat final d'une fiche ?
un Shema de(s) tables et de leur(s) relation(s) serait quand même bienvenue
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 17h01   #13
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Bonjour,
Citation:
Envoyé par SergioMaster Voir le message
ne me connectant qu'une fois par jour au forum , je ne peux que constater l'état d'avancement
Pas de souci, j'apprécie grandement ton aide

Alors avant tout je mets une capture plus complète :



Citation:
Envoyé par SergioMaster Voir le message
concernant les données il y aurait certainement moyen de faire plus simple à coup de Jointures (quoique ,il y ait un paquet impressionnant de tables)
le type d'état maitre détail(s) serait (est) le plus approprié mais uniquement en cas de relations 1-n entre maitre et détail
Pas du tout, comme je te l'ai dit il n'y a "presque" qu'une seule table regroupant 95% des données.
Je suis obligé (je crois) de procéder en Maitre/Détail uniquement pour imprimer tous les enregistrements de ma table principale !
D'où :
> une seule DataBand maitre contenant un champ de ma table (le plus commun : le nom de l'entité)
> toutes les Bands (en bleu) contenant des champs de la table principale (données numériques et scientifiques de toute sorte, relation 1-1 forcément) dépendants de la 1ère DataBand
> les 5% de données qui sont en relation 1-n se retrouvent dans les 3 DataBands visibles sur la capture (rouge/vert/violet)

Citation:
Envoyé par SergioMaster Voir le message
cela me semble bien compliqué et surtout trop 'RAVE' à mon goût (moins j'utilise les 'fonctionnalités' rave , mieux mes états se portent)
Mon bug d'impression sans fin se produit à l'identique avec des DataBands reliées à des TRvCustomConnection (mode manuel avec GetCols) ou TRvDataSetConnection (mode auto).
Mais j'ai déjà tiré un enseignement de tes réponses : je n'utilise plus aucun évènement Rave

Citation:
Envoyé par SergioMaster Voir le message
Utiliser aussi des Entetes de Bande et bas de Bande si nécessaire (par exemple pour la bande Sciage , j'aurais mis le titre 'SCIAGE ET USINAGE' et le trait dans la Bande 'Entete' plutôt que dans la bande détail , bien que cela n'ai pas d'importance puisque une seule 'ligne')
Je le fais pour les mémos (suffixe "Notes" dans les titres de bandes) histoire de les cacher facilement si leur contenu est vide, n'arrivant pas à diminuer une hauteur de bande dynamiquement (cf autre post ces derniers jours lol). Pour les headers/footers pourquoi pas mais ça ne changerait pas grand chose au pb je pense, je le fais seulement pour les DataBands (il est vrai absentes sur les captures précédentes).
D'ailleurs en parlant de structure je pourrais mettre toutes les bandes bleues dans une seule, c'est uniquement par souci pratique/cosmétique qu'il y en a autant.

Citation:
Envoyé par SergioMaster Voir le message
Faux , c'est parfaitemet possible , cependant voir ma première intervention.
Celle ou tu parles de "DoGetCols" ? En effet j'avais oublié, mea culpa
Alors après tests, si j'implémente l'évènement OnGetCols de mon DataSet principal :
> et que je le laisse "vide" = violation d'accès !
> et que je mets la seule ligne "Connection.DoGetCols", OK pas d'erreur

Cependant, si je rajoute un "Connection.DoGetCols" à tous mes OnGetCols qui fonctionnent (cad avec des TRvCustomConnection et non des TRvDataSetConnection), il me sort des résultats entièrement fantaisistes ! (voire vides) Et différents selon si je le mets au début ou à la fin du code
Souhaitant donc connaitre l'utilité de ce DoGetCols (qui est carrément absent de la doc !) j'ai farfouillé sur le forum et trouvé ceci :
Citation:
DoGetCols permet d'acquerir les differents champs de ta table connectée pour transmettre ces infos a l'init du dataview. En général il ne s'execute qu'une seule fois dans ton application.
J'en déduis que je n'en ai pas besoin pour les CustomConnection puisque je définis les champs "manuellement". Non ?

Citation:
Envoyé par SergioMaster Voir le message
le rapport entre la Bande Maitre (ce que tu appelles Objet) et chaque détails est t-il de 1-1 ?
Oui, sauf sonc pour les 3 DataBands précitées.
Citation:
Envoyé par SergioMaster Voir le message
tu indiques que chaque fiche tient sur 3 pages (en moyenne) as tu pensé a faire un état sur plusieurs pages avec enchainement de page ? (oui , c'est possible) .
Oui, c'est d'ailleurs ce que je fais pour la fiche d'un seul objet. Mais je me suis dit que maintenant que je maitrisais je pouvais améliorer tout ça : avec une seule page en conception plus de coupure arbitraire et de page à moitié remplie à l'impression, tout est automatique.
De toutes façons dans ce cas (impression de toutes les fiches) j'ai déjà essayé et me suis heurté à ce que je décrivais dans mon 1er post :
Citation:
J'ai donc déplacé qques Bands sur les pages suivantes mais là surprise : impossible de leur assigner comme maitre la DataBand de la 1ère page ! Qu'à cela ne tienne je la duplique en haut de 2nde page : à ce moment là OK mais l'ordre d'impression est totalement (et logiquement) modifié, je me retrouve avec la page 1 (p1) de l'objet 1 (o1) suivie de p1o2, p1o3.. p1oN et ensuite p2o1, p2o2 etc.
En gros 2x la même DataBand en haut de 2 pages consécutives modifie l'ordre d'impression des pages. Et je suis bien obligé de mettre la 2nde pour que les Bands de la page aient un Maitre.

Citation:
Envoyé par SergioMaster Voir le message
Peux tu joindre un PDF d'une Fiche Objet pour essayer de visualiser l'etat final d'une fiche ?
Bien sur, voici une fiche exemple.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 18h38   #14
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Ce qui me "rassure" c'est que même avec le wizard de Rave, si je demande un simple M/Détail entre ma table principale et une autre il plante pareillement
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 08h04   #15
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 611
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 611
Points : 4 508
Points : 4 508
Ah , après une 'visualisation' d'une fiche , j'y vois plus clair

Alors , première clarification en apparté pour le Dogetcols , oui c'est uniquement dans le cas d'un DatasetConnection ( pas d'un CustomConnection ) . L'objectif de Rave dans ce cas me semblait être l'ajout de champs calculés/liés (pour l'instant je n'ai pas trouvé de cas ou cela m'aurait été utile ou alors je les ai contournés autrement )

Citation:
J'en déduis que je n'en ai pas besoin pour les CustomConnection puisque je définis les champs "manuellement". Non ?
déduction correcte

Citation:
En gros 2x la même DataBand en haut de 2 pages consécutives modifie l'ordre d'impression des pages.
tout a fait logique 'rave' puisque tu changes d'enregistrement

La structure de l'état me semble correcte pour l'objectif visé

Citation:
Ce qui me "rassure" c'est que même avec le wizard de Rave, si je demande un simple M/Détail entre ma table principale et une autre il plante pareillement
j'en déduit qu'il te manque simplement un petit quelque chose . Reste a savoir quoi

j'ai l'impression que la bande maitre est repositionnée au 1° enregistrement lors de l'appel a l'une des 'vraies' bandes détail !!!

c'est sur les DatasetConnection Maitre et Détail (utilisations/appellations) qu'il faut se concentrer . Dans ton cas les SQL de ces différentes tables doivent se présenter de la maniere suivante ?

Code sql :
1
2
3
SELECT * FROM PILOTE // Maitre
SELECT * FROM UTILISATIONS WHERE ID=:ID_MAITRE  // details
SELECT * FROM APPELLATIONS WHERE ID=:ID_MAITRE  // details
avec un datasource pour les détails=maitre sauf que ...
(maitrisant mal les UIB j'ai contrôlé ) les UIBDataset n'ont pas de Datasource pour le passage de paramètres (ce qui est fort dommage d'une manière générale et encore plus dans ton cas car impossible dans le rave concepteur de 'voir' le résultat)

Ma question comment gères tu ceci ?
-Evènement Afterscroll de maitre ?
-Evènement CustomConnection ? << compliqué et peu fiable
- autrement ?

Mon conseil : faire/maitriser un maitre détail 'simple' avec les UIB si tu y arrives , le reste suivra

Allez , le bout du tunnel approche , je le sens
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 16h16   #16
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Citation:
Envoyé par SergioMaster Voir le message
La structure de l'état me semble correcte pour l'objectif visé
C'est déjà ça

Bon qques tests complémentaires aujd mais rien de bien nouveau, j'ai essayé des combinaisons de régions, bandes etc... sans succès.

Citation:
Envoyé par SergioMaster Voir le message
c'est sur les DatasetConnection Maitre et Détail (utilisations/appellations) qu'il faut se concentrer . Dans ton cas les SQL de ces différentes tables doivent se présenter de la maniere suivante ?

Code sql :
1
2
3
SELECT * FROM PILOTE // Maitre
SELECT * FROM UTILISATIONS WHERE ID=:ID_MAITRE  // details
SELECT * FROM APPELLATIONS WHERE ID=:ID_MAITRE  // details
avec un datasource pour les détails=maitre sauf que ...
(maitrisant mal les UIB j'ai contrôlé ) les UIBDataset n'ont pas de Datasource pour le passage de paramètres (ce qui est fort dommage d'une manière générale et encore plus dans ton cas car impossible dans le rave concepteur de 'voir' le résultat)
Je confirme en simplifié c'est ça

Citation:
Envoyé par SergioMaster Voir le message
Ma question comment gères tu ceci ?
-Evènement Afterscroll de maitre ?
-Evènement CustomConnection ? << compliqué et peu fiable
- autrement ?

Mon conseil : faire/maitriser un maitre détail 'simple' avec les UIB si tu y arrives , le reste suivra

Allez , le bout du tunnel approche , je le sens
Merci pour tes encouragements
Je me replonge là dedans lundi et t'en dirai un peu plus sur les relations entre mes datasets, mais en gros dans Delphi oui j'ai un AfterScroll sur le dataset principal dans lequel je MAJ les datasets détail, que je paramètre chacun dans leur OnBeforeOpen (de mémoire). Ce qui ressemble à ça :
Code :
Dataset.SQL.ParamByName(':ID_MAITRE') = <valeur>
Pour la connexion Rave la MAJ de mes Datasets détail se fait dans le TRVDatasetConnection.OnValidateRow principal. (en effet je désactive le AfterScroll utilisé dans l'application, qui contient trop de traitements et ralentit la génération de rapport)

Bon week end !
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 16h52   #17
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Bonjour,
Pour en revenir à ton dernier message :

Citation:
Envoyé par SergioMaster Voir le message
j'ai l'impression que la bande maitre est repositionnée au 1° enregistrement lors de l'appel a l'une des 'vraies' bandes détail !!!
Mmm je ne pense pas vu que parfois ça marche ? (sur 1 page)

Citation:
Envoyé par SergioMaster Voir le message
les UIBDataset n'ont pas de Datasource pour le passage de paramètres (ce qui est fort dommage d'une manière générale et encore plus dans ton cas car impossible dans le rave concepteur de 'voir' le résultat)
Exact, comme je t'ai dit la définition des paramètres peut se faire :
> dans le OnAfterScroll du dataset maitre
> dans les OnBeforeOpen des datasets détail
Par contre il est en effet impossible de prévisualiser tout ça dans Rave.

Citation:
Envoyé par SergioMaster Voir le message
Mon conseil : faire/maitriser un maitre détail 'simple' avec les UIB si tu y arrives, le reste suivra
Ça marche très bien... dès que ça tient sur 1 page
Malheureusement il n'y a pas de démo Rave utilisant Firebird/UIB, toutes utilisent les DB de DBDEMOS (biolife, customer...) et les TTable du BDE.
Coté Rave je pense faire tout bien, d'ailleurs je me suis grandement inspiré du MasterDetailReport des démos.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 19h54   #18
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
Re,

Bon après être reparti de très très loin et avoir simplifié au maximum sous Delphi, soit :

> 1 DB, 1 transaction, 1 dataset maitre, 1 dataset détail
> aucun traitement dans les évènements

Ce qui donne :
Code :
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
35
36
37
38
39
40
41
42
43
// Dataset maitre AfterScroll
procedure TDM2.DSetMainAfterScroll(DataSet: TDataSet);
begin
  IF bPrintingOn then
    Exit;
 
  // === Affichage des appelations ===
  DSetAppellations.Close;
  DSetAppellations.Open;
end;
 
// Dataset détail BeforeOpen
procedure TDM2.DSetAppellationsBeforeOpen(DataSet: TDataSet);
begin
  DSetAppellations.Params.ByNameAsInteger['ESS'] := DSetMain.FieldByName('K_ESSENCE').AsInteger;
end;
 
// Rave : initialisations
procedure TDM2.rvProjectBeforeOpen(Sender: TObject);
begin
  bPrintingOn := True;
 
  // Désactivation du datasource pour "geler" les contrôles
  DSrcAppellations.Enabled := False;
end;
 
// Rave : fermeture 
procedure TDM2.rvProjectAfterClose(Sender: TObject);
begin
  bPrintingOn := False;
 
  DSrcAppellations.Enabled := True;
  DSetAppellations.Close;
  DSetAppellations.Open;
end;
 
// Rave : validation données
procedure TDM2.RvDSetMainValidateRow(Connection: TRvCustomConnection; var ValidRow: BOOLEAN);
begin
  // Récupération des appellations pour chaque élément
  DSetAppellations.Close;
  DSetAppellations.Open;
end;
..et simplifié au maximum sous Rave soit :

> 1 databand maitre, 1 databand détail et ses propriétés correctement renseignées (ControllerBand, DataView, MasterDataView, MasterKey, DetailKey) ainsi que le style de bande (Detail & First)

Hé ben... ça marche pas non plus !!!
Ou plutôt : ça marche très bien du moment que je n'ai QUE ma DataBand (les données passent à la page suivante et tout ), ça fonctionne aussi avec plusieurs DataBands mais dès que je pose une simple Band ça part en live (cad en impression infinie). C'est encore plus tordu que ça : si je place une Band (avec 1 seul champ hein, rien de sorcier) avant les DataBands détail ou entre 2 DataBands ça peut (parfois) être OK. Mais si elle est en dernier aucune chance.

Bref devant ce grand n'importe quoi face auquel je n'ai plus le temps de lutter : j'abandonne !!!
(1ère fois de ma vie de programmeur que je dis ça... et j'espère la dernière !)
En tout cas merci pour ton aide SergioMaster.
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 19h55   #19
Membre habitué
 
Inscription : juin 2002
Messages : 256
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 256
Points : 108
Points : 108
PS : j'y reviendrai peut être... mais pas d'ici 1/2 mois. Cependant si qqun a des infos/idées je suis tjs preneur !
paradise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 09h06   #20
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 611
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 611
Points : 4 508
Points : 4 508
Citation:
Envoyé par paradise Voir le message
Bref devant ce grand n'importe quoi face auquel je n'ai plus le temps de lutter : j'abandonne !!!
(1ère fois de ma vie de programmeur que je dis ça... et j'espère la dernière !)
Faut pas se décourager rocky-stallone n'a qu'un genou à terre et il y a eu plusieurs 'épisodes'
ton état est loin d'être simplissime mais peut être résolu

je ferais un essai 'bidon' avec mes bases de données pour voir . Maintenant que je comprend le résultat attendu il me faut juste le temps !! j'ai un état quickreport/d3 (eh oui , je continue a maintenir une appli de 10 ans) qui est a peu près de la même veine je vais tenter une "Rave Approche"
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h53.


 
 
 
 
Partenaires

Hébergement Web