Question

Nevrona Designs ' Rave Reports est un moteur de rapport utilisé par de Delphi dans Embarcadero.

C’est ce que j’appelle le bogue Rave Endless Loop. Rapports élogieux version 6.5.0 (VCL10) fournie avec Delphi 2006, il existe une bogue nortorieux qui afflige de nombreux développeurs de rapports Rave. Si tu as un ensemble de données non vide, et les lignes de données pour cet ensemble de données s'inscrivent exactement dans un page (c'est-à-dire qu'il n'y a aucune ligne de veuve), puis sur PrintPreview, Rave restera coincé dans une boucle infinie générant des pages.

Ce problème a déjà été signalé dans ce groupe de discussion sous le titres suivants:

  1. "Erreur: génération de pages infinies" ;; Hugo Hiram le 20/09/2006 20:44
  2. " Bug de la boucle rave. S'il vous plaît aider " ;; Tomas Lazar 11/07/2006 19:35
  3. "Boucle sur toute la page de données?"; Tony Chistiansen 23/12/2004 15:41
  4. réponse à (3) par un autre plaignant; Oliver Piche
  5. "Bogue d'impression de lopp sans fin" ;; Richso 11/09/2004 16:44

Dans chacune de ces publications, Nevrona n'a pas répondu, et aucun la solution a été signalée.

Peut-être, le problème a également été rapporté sur un groupe de discussion allié (nevrona.public.rave.reports.general), à savoir: 6. "Génération en continu du rapport"; Jobard 20/11/2005 Bien que ce ne soit pas clair pour moi si (6) est le bogue de la boucle Rave Endless ou un autre problème. Cette annonce a reçu une réponse de Nevrona, mais c’était plus par rapport à plusieurs régions (" Il y a un problème lorsqu’on utilise plusieurs régions qui dépassent un saut de page. ") que le problème de zéro veuves.

Était-ce utile?

La solution

Il s’agit plus d’une solution de contournement que d’une véritable solution. J'ai d'abord posté cette solution dans le groupe de discussion Nevrona (Group = nevrona.public.rave.developer.delphi.rave; Subject = "Souffrez-vous du bogue Rave Endless Loop?: Annonce annoncée." Date annoncée. = 13/11/2006 19h06)

Alors voici ma solution. C'est plus une solution de contournement qu'un bon solution à long terme, et j'espère que Nevrona donnera à ce problème quelques attention sérieuse dans un proche avenir.

  1. En fonction de la présentation de votre rapport, comptez le nombre maximal de lignes. par page. Disons que c'est 40.
  2. Configurez un compteur pour compter les lignes de la page (par opposition aux lignes de l'ensemble du rapport). Vous pouvez le faire par un script d’événement ou par un composant CalcTotal.
  3. Définissez un gestionnaire d'événement scripté OnBeforePrint pour la bande de données principale.
  4. Dans ce gestionnaire d'événements, définissez la propriété FinishNewPage de la bande de données principale sur True lorsque le nombre de lignes par page est égal à un ou deux au-dessous du maximum (dans notre exemple, il s'agirait de 38). Et définissez-le sur False dans tous les autres cas. Ceci a pour effet de donner à chaque page un nombre de veuves différent de zéro (dans ce cas, 1..38), évitant ainsi la condition à l'origine du problème de la boucle Rave Endless.

Autres conseils

Merci beaucoup pour ce Sean. Malheureusement, cela ne fonctionnerait pas pour moi, mais j'ai proposé une autre solution ... Vous voyez que j'ai un mémo en haut de la région qui pourrait s'agrandir ou se contracter en fonction du nombre de notes que l'utilisateur a laissées dans la base de données. Cela signifie que le nombre de lignes pouvant tenir sur une page varie. Toutefois. il existe une autre solution: vous utilisez la propriété MaxHeightLeft d'un databand. Tout ce que vous faites est de mesurer la hauteur de votre base de données, de la multiplier par 2 et de la placer dans votre propriété MaxHeightLeft. Cela forcera 1 ou 2 enregistrements sur la page suivante si elle est pleine.

merci beaucoup, ce fil m'aide à résoudre mon problème de boucle d'impression sans fin dans Nevrona Rave ...., j'ai réglé MinHeightLeft à 0,500, ce paramètre fonctionne, mais je ne suis pas certain que cela fonctionnera pour un autre résultat. ensemble de mon rapport de requête.

Maître, La solution est MinHeightLeft à 0,500, j’utilise la propriété wastefit area dans true et génère la boucle lors de la deuxième impression, mais lorsqu’on modifie la propriété MinHeightLeft à 0,500, l’erreur disparaît.

Merci!

Atte Fabiola Herrera. Fabi_ucv@hotmail.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top