LlDbSetMasterTable

Beim ILLDataProvider ist die Druckschleife ja relativ simpel gehalten:

nRet = ::LlPrint(hJob);
while (nRet == LL_WRN_REPEAT_DATA)
{
    nRet = ::LlPrint(hJob); // magic happens in CPrintDataProvider
}

Wenn ich jetzt während des Druckens eines Berichts die Variablen neu definieren möchte, wie gehe ich dazu vor? Kann ich z.B. mit LlDbSetMasterTable sozusagen einen Reset auslösen und die Variablen neu definieren? Also, dass die Druckschleife so aussieht (Pseudocode):

LlPrintWithBoxStart(…)

foreach(MasterTable : MasterTables)
{
    LlDbAddTable(MasterTable)
    LlDbSetMasterTable(MasterTable)
    [… Defines etc. …]

    nRet = ::LlPrint(hJob);
    while (nRet == LL_WRN_REPEAT_DATA)
    {
         nRet = ::LlPrint(hJob); // magic happens in CPrintDataProvider
    }
}

Oder muss ich die ganze Logik irgendwie in den virtuellen Methoden des ILLDataProvider wie z.B. OpenTable() unterbringen? Da hätte ich keine richtige Vorstellung, wie das funktionieren soll.

Wäre super, wenn mir da jemand einen Tipp geben könnte. Vielen Dank!

Wobei ich da wahrscheinlich eher mit LlPrintDbGetCurrentTable() arbeiten muss, oder? Aber dann verstehe ich nicht ganz die Erläuterung, dass man über LlDbSetMasterTable() mit Variablen arbeiten kann (Aus der Referenz: “Findet Verwendung, wenn die Master-Daten (z.B. der Adressat einer Rechnung) als Variablen definiert werden”). Leider benutzt das mitgelieferte Beispiel die Funktion nicht wirklich, deswegen würde ich mich freuen, wenn mir jemand aufzeigt, wie man diese Funktion richtig einsetzt.

Hallo Herr Brüggemann,

die Variablen können Sie an sich ja je Seite jeweils vor dem Aufruf von LlPrint() neu definieren. Wenn Sie uns aber eine genauere Beschreibung Ihres Verhaltens zukommen lassen könnten, dann können wir Ihnen sicher auch genauer helfen! :slight_smile: