Hallo,
zu 1. pflichte ich Hans Peter vollkommen bei. Voraussetzung ist halt eben, dass der verwendete Datanprovider das kann bzw. unterstützt. Sollte er das nicht können, so ist es dann wie vermutet: Es landen ja dann auch ALLE Daten in List & Label und hier muss dann List & Label dann selbst entscheiden auf Grund des Filters, welche Daten relevant sind. Und dafür muss es dann aber auch komplett selbst durch die Daten laufen. Egal wie: ich würde immer versuchen zu schauen einen Datenprovider zu verwendet - das kann immense Performance bringen.
Beim 2. Punkt ist es so, dass die Tabellen, die sich in einem Berichtscontainer befinden genau so abgearbeitet werden, wie sie dort im Container platziert wurden - von oben nach unten und eine nach der anderen. Daher braucht es hier keine komplexe/aufwändige Verkettung mehr - total easy. Und wenn man zwischen den Tabellen im Container noch einen Seitenumbruch braucht kann man auch noch einfach die Eigenschaft “Umbruch vor” auf “True” stellen.
Es kommt noch Debwin3 zum Einsatz? Also auch eine etwas ältere LL Version vermute ich. Min. in der aktuellen Version 24 mit Debwin4 (sehr komfortabel mit Suchen, Filter etc.) kann man sehen, wann wie welche Tabelle gedruckt wird. Hier sieht man dann bspw. gut den Datenkontext für Datenprovider (siehe Punkt 1.):
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; >OpenChildTable(006FB164/0EE7FBD0, ‘Customers2Orders’)
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; <OpenChildTable(006FB164/0EE7FBD0, ‘Customers2Orders’) → 0EE7FBAC
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; Orders uses ‘Orders.CustomerID’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; ‘Orders.Freight’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; ‘Orders.OrderDate’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; ‘Orders.OrderID’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; ‘Orders.ShippedDate’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; ILLDataProvider(006FB164)::SetUsedIdentifiers(Orders.CustomerID; Orders.Freight; Orders.OrderDate; Orders.OrderID; Orders.ShippedDate) → S_OK
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; >DataProvider((Orders [0EE7FBB0]))::NextRecord()
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; >DataProvider((Orders [0EE7FBB0]))::Skip()
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; <DataProvider((Orders [0EE7FBB0]))::Skip() → OK
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; >DataProvider((Orders [0EE7FBB0]))::DefineRow() [master=0]
LL.Generic;4D0;100:2=CMLL24♦101:1=0; FIELD LIST: ‘Orders.CustomerID’
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; DATAPROVIDER: QUERY_COLUMNS:
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; table: Orders, mode ROWMODE_ALL_COLUMNS, ROWMODE_DATA_PRINT_REALDATA, ROWMODE_FIELD
LL.API;4D0;100:2=CMLL24♦101:1=0; >LlDefineFieldExt(2,‘Orders.OrderID’,‘10643’,0x08000002,00000000)
LL.API;4D0;100:2=CMLL24♦101:1=0; <LlDefineFieldExt() → 0 (00000000)
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; <DataProvider((Orders [0EE7FBB0]))::DefineRow() [master=0]
LL.DataProvider;4D0;100:2=CMLL24♦101:1=0; <DataProvider((Orders [0EE7FBB0]))::NextRecord() → OK
Und dann noch die einzelnen Objekte, die ausgegeben werden - als der visuelle Teil:
…
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=3; >OBJSTATE(HEADER:“Firma”): WAITING (API: unfinished=0, has_data_to_print=1)
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=1; <OBJSTATE(HEADER:“Firma”): WAITING (API: unfinished=0, has_data_to_print=0)
LL.Notification;4D0;100:2=CMLL24♦101:1=1; >@NOTIF.(code= 11, param=006F96E4, user=00000000)
LL.Notification;4D0;100:2=CMLL24♦101:1=1; <@NOTIF.(code= 11) → 00000000
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=1; >OBJSTATE(HEADER:“Adresse”): WAITING (API: unfinished=0, has_data_to_print=1)
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=1; <OBJSTATE(HEADER:“Adresse”): WAITING (API: unfinished=0, has_data_to_print=0)
LL.Notification;4D0;100:2=CMLL24♦101:1=1; >@NOTIF.(code= 11, param=006F96E4, user=00000000)
LL.Notification;4D0;100:2=CMLL24♦101:1=1; <@NOTIF.(code= 11) → 00000000
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=1; >OBJSTATE(HEADER:“KundenNr”): WAITING (API: unfinished=0, has_data_to_print=1)
LL.ObjectStates;4D0;100:2=CMLL24♦101:1=1; <OBJSTATE(HEADER:“KundenNr”): WAITING (API: unfinished=0, has_data_to_print=0)
…
Hoffe das reicht erstmal als Input