Delphi QuickReports: порядок следования полос для достижения детализации ребенок-ребенок-ребенок?
Мне нужно создать QuickReport в Delphi 5, который изложен в виде:
+================
| 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)
+=============================
Может кто-нибудь придумать комбинацию заголовка, детализации, дочернего, нижнего колонтитула, суб-детализации, верхнего колонтитула группы, диапазонов нижнего колонтитула группы - и связанных между ними ссылок Родитель, Мастер, Отчет, Запрос, чтобы я мог сделать отчет как мне нужно это посмотреть?
Не путайте мое использование терминов
- полоса заголовка
- полоса детализации
- детская полоса
- нижний колонтитул
подразумевать, что любая из групп должна быть этих фактических типов. я использую эти термины в концептуальном смысле:
- одна полоса в начале всего отчета (заголовок отчета)
- повторяющаяся группа из четырех полос
- три полосы, которые появляются после всех деталей, первые две из которых автоматически растягиваются
Тот же вопрос, только дольше
+===========================================
| 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
+===========================================
я могу составить несколько таблиц, которые имитируют пример, который я составил:
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 )
Мой неудачный эксперимент
Я пытался создать QuackReport со следующим макетом группы:
+=====================================================+
| 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) |
+=====================================================+
Примечание. Отступы используются для определения родительско-дочерних отношений (т. Е. Полоса не имеет отступа в 50 пикселей).
Проблема с этим дизайном состоит в том, что во время разработки по меньшей мере полоса Summary появляется перед двумя многожильными дочерними полосами:
+=====================================================+
| 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) !
+=================================================+
И когда отчет запускается (во время выполнения), две многопоточные дочерние группы даже не печатаются:
+=====================================================+
| PageHeader (TQRBand, BandType=rbPageHeader) |
+=====================================================+
+=====================================================+
| DetailBand (TQRBand, BandType=rbDetail) |
+===+=================================================+
| ChildBand1 (TQRChildBnad, Parent=DetailBand) |
! (autostretch) !
+===+=============================================+
| ChildBand2 (TQRChildBand, Parent=ChildBand1 |
+=============================================+
+=====================================================+
| SummaryBand (TQRBand, BandType=rbSummary) |
+=====================================================+
Капча: шарлатан
1 ответ
(пожалуйста, имейте в виду, что у меня больше нет QuickReports для меня, так что это все из памяти)
Хорошо... Я сталкивался с этой проблемой раньше... Чтобы дать вам полный кодовый пример, потребуется очень много времени (времени у меня просто нет), но я постараюсь описать свое решение, чтобы вы могли связать к этому.
Вместо использования TQRChildBand используйте вместо него все DetailBand. Затем вы подключаете каждое из этих событий к событию BeforePrint.
Вы бы использовали что-то вроде этого в событии BeforePrint:
printband := FPrintSubBandA;
Используйте набор общедоступных переменных (или закрытых членов в форме вашего отчета), чтобы определить, какие полосы должны отображаться, а какие не должны быть для данной записи, отображаемой в вашем отчете.... все типа Boolean (ПРИМЕЧАНИЕ. Можно использовать Множество перечислений, но логические значения проще / быстрее реализовать imho)
В вашем событии NeedData вы экстраполируете, какие полосы требуются для данной записи, и соответственно установите эти переменные (булевы значения).
Полное решение - много грязного взлома, но важно, так как поддержка QuickReports для вложенных поддиапазонов в выборочных записях по существу отсутствует.
Если этой информации недостаточно, дайте мне знать, и я переберу свои архивы кода, чтобы посмотреть, смогу ли я найти единственный пример, как это сделать. По сути, именно эта проблема является причиной, по которой я переключился на RaveReports.
РЕДАКТИРОВАТЬ: Я предполагаю, что вы, скорее всего, уже пытались установить значение ParentBand каждой дочерней группы во время выполнения... если вы этого не сделали, не тратьте свое время! Это приводит к еще более аномальным результатам (у меня даже были попытки нарушения прав доступа)