Frage

Ich muss in Delphi 5 einen QuickReport erstellen, der als:

+================
| Report Header
+================

+=========================================
| Detail Band (auto-stretching, repeats)
.
+=========================================
   |    Child band (fixed-size)
   +======================================
   |    Child band (Auto-stretching)
   .    
   +======================================
   |    Child band (fixed-size)
   +======================================

+=================================
| Report Footer (auto-stretching)
. 
+=================================

+==================================
| Report Footer (auto-stretching)
. 
+==================================

+=============================
| Report Footer (fixed size)
+=============================

Kann jemand mit einer Kombination aus Header, Detail, Kind, Fußzeile, Subdetails, Gruppenheader, Gruppenfußzeilenbändern und den zugehörigen Eltern-, Master-, Berichts-, Abfragel -Links zwischen ihnen erstellen, damit ich einen Bericht wie wie wie Ich brauche es, um zu schauen?

Verwechseln Sie meine Verwendung der Begriffe nicht

  • Headerband
  • Detailband
  • Kinderband
  • Fußzeile

zu implizieren, dass eine der Bänder von diesen tatsächlichen Typen sein muss. Ich benutze diese Begriffe im konzeptionellen Sinne:

  • Eine einzelne Bande zu Beginn des gesamten Berichts (Berichtsheader)
  • Eine sich wiederholende Gruppe von vier Bändern
  • Drei Bands, die nach all den Details erscheinen, wobei die ersten beiden automatisch ausstragen

Gleiche Frage, nur länger

+===========================================
| Suspicious Transaction Report
|   STR No.: 12345
|      Date: 11/28/1973
|
|   Comments: as per NSL 1/13/2010
+===========================================

+===========================================
| Transaction 1 of 7
|      Buy                  Sell
|     $100.00            $16,000.00
|                        $27,000.00
|                        $12,000.00
.                            ...
+===========================================
|  Customer Information
|           Name: Shelby Lake
|        Address: 11111 S NC-HWY 111
|            DOB: 6/19/1981
|         ID No.: G123-456-789
|     Occupation: waitress
+===========================================
|  Original Transaction
|       Buy                 Sell
|      $100.00           $16,000.00
|    $3,000.00           $27,000.39
|   $64,132.69           $12,000.13
.       ...                  ...
+===========================================
|  Third Party Information
|           Name: Yugo Chavez
|        Address: 11111 S AB
|            DOB: 9/15/1934
|         ID No.: 995-1935
|     Occupation: dictator
+===========================================

...

+===========================================
| Transaction 7 of 7
.
.
+===========================================

+===========================================
| Description of Suspicious Activity
|   Customer had beedy eyes, that moved
|   rapidly from left to right. He...
.   ...
+===========================================

+===========================================
| Action Taken
|   We killed him, went through his
|   pickets, then started digging the...
. 
+===========================================





+===========================================
| 
|    Signature: _______________________
|                    Bruce Wayne
|        Title: The Batman
|  Employee ID: 1337-6669
+===========================================

Ich kann einige Tische erfinden, die das Beispiel nachahmen, das ich erfunden habe:

CREATE TABLE STRs (
   StrID int,
   Number text,
   Date datetime,
   Comments text,
   DescriptionOfSuspiciousActivity text,
   ActionTaken text,
   EmployeeName text,
   EmployeeTitle text,
   EmployeeNumber text )     

CREATE TABLE STRTransactions (
   STRTranasctionID int,
   STRID int,
   BuyAmount money)

CREATE TABLE STRTransactionSells (
   STRTransactionID int,
   SellAmount money)

CREATE TABLE STRTransactionPatronInfo (
   STRTransactionID int,
   Name text,
   Address text,
   DOB text,
   IDNumber text,
   Occupation text )

CREATE TABLE STRTransactionThirdPartyInfo (
   STRTransactionID int,
   Name text,
   Address text,
   DOB text,
   IDNumber text,
   Occupation text )

CREATE TABLE OriginalTransactions (
   STRTransactionID int,
   BuyAmount money,
   SellAmount money )

Mein gescheitertes Experiment

Ich habe versucht, ein Quackreport mit dem folgenden Bandlayout zu erstellen:

+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader)         |
+=====================================================+

+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail)             |
+===+=================================================+
    | ChildBand1 (TQRChildBnad, Parent=DetailBand)    |
    !      (autostretch)                              !
    +===+=============================================+
        | ChildBand2 (TQRChildBand, Parent=ChildBand1 |
        +=============================================+

+=====================================================+
| ChildBand3 (TQRChildBand, Parent=(none)             |
!      (autostretch)                                  !
+=====================================================+
    | ChildBand4 (TQRChildBand, Parent=ChildBand3     |
    !      (autostretch)                              !
    +=================================================+

+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary)           |
+=====================================================+

Notiz: Die Einrückung wird verwendet, um Eltern-Kind-Beziehungen zu identifizieren (dh die Band ist nicht tatsächlich 50 Pixel).

Das Problem bei diesem Design ist, dass zur Entwurfszeit bei LEAT die Zusammenfassung Band erscheinen vor den beiden gestrandeten Kinderbands:

+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader)         |
+=====================================================+

+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail)             |
+===+=================================================+
    | ChildBand1 (TQRChildBnad, Parent=DetailBand)    |
    !      (autostretch)                              !
    +===+=============================================+
        | ChildBand2 (TQRChildBand, Parent=ChildBand1 |
        +=============================================+

+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary)           |
+=====================================================+

+=====================================================+
| ChildBand3 (TQRChildBand, Parent=(none)             |
!      (autostretch)                                  !
+=====================================================+
    | ChildBand4 (TQRChildBand, Parent=ChildBand3     |
    !      (autostretch)                              !
    +=================================================+

Und wenn der Bericht (zur Laufzeit) ausgeführt wird, drucken die beiden gestrandeten Kinderbänder nicht einmal:

+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader)         |
+=====================================================+

+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail)             |
+===+=================================================+
    | ChildBand1 (TQRChildBnad, Parent=DetailBand)    |
    !      (autostretch)                              !
    +===+=============================================+
        | ChildBand2 (TQRChildBand, Parent=ChildBand1 |
        +=============================================+

+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary)           |
+=====================================================+

Captcha: QuackReports

War es hilfreich?

Lösung

(Bitte denken Sie daran, ich habe keine Schnellberichte mehr zur Verfügung, also ist das alles aus dem Gedächtnis)

Okay ... Ich bin schon einmal auf dieses Problem gestoßen ... um Ihnen ein volles codiertes Beispiel zu geben, würde sehr lange dauern (Zeit, die ich einfach nicht habe), aber ich werde versuchen, meine Lösung zu beschreiben, damit Sie sich beziehen können dazu.

Verwenden Sie stattdessen TQRChildband, anstatt alle Detailband zu verwenden. Sie haben dann jedes Vorabdruck Ereignis dieser Bands angeschlossen.

Sie würden so etwas in der Vorabdruck -Veranstaltung verwenden:

printband := FPrintSubBandA;

Verwenden Sie eine Reihe von universell verfügbaren Variablen (oder privaten Mitgliedern auf dem Formular Ihres Berichts), um zu definieren, welche Bänder angezeigt werden sollen und nicht für einen bestimmten Datensatz in Ihrem Bericht angezeigt werden. Boolesche (Hinweis: Sie können eine Reihe von Aufzügen verwenden, aber Boolescheer sind einfacher/schneller imho zu imho)

Bei Ihrem BedarfData -Ereignis extrapolieren Sie, welche Bänder für einen bestimmten Datensatz benötigt werden, und setzen diese Variablen (natürlich boolesche Werte) entsprechend.

Die gesamte Lösung ist ein großer schmutziger Hack, aber es ist wichtig, da die Unterstützung von Quickports für verschachtelte Unterbänder auf selektiven Aufzeichnungen im Wesentlichen nicht existiert.

Wenn dies nicht genug Informationen ist, lassen Sie es mich wissen und ich werde durch meine Codearchive schleppen, um zu sehen, ob ich das eine Beispiel finden kann, das ich dazu habe. Im Wesentlichen ist dieses genaue Problem der Grund, warum ich stattdessen zu Raverports gewechselt habe.

Bearbeiten: Ich nehme an, Sie haben höchstwahrscheinlich bereits versucht, die Elternbandwert jedes Kinderbands zur Laufzeit festzulegen ... wenn Sie es nicht getan haben, verschwenden Sie Ihre Zeit nicht! Dies führt zu noch anomaleren Ergebnissen (Ich hatte sogar Zugangsverstöße gegen das Versuch, dies zu versuchen)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top