Datenquelle aufbereiten

Um auch die richtigen Daten für den Drilldown-Bericht zur Verfügung zu stellen, müssen Sie kleinere Anpassungen an der Bereitstellung Ihrer Daten in der Druckschleife vornehmen.

Relation(en)

Es müssen entsprechende Relationen angemeldet sein. Für Drilldown-Berichte verwenden Sie dazu die API LlDbAddTableRelationEx(). Diese hat zwei zusätzliche Parameter – pszKeyField und pszParentKeyField. Diese stehen für das Schlüsselfeld der Child-Tabelle und das Schlüsselfeld der Eltern-Tabelle, damit eine eindeutige Zuordnung der Datensätze in der Child-Tabelle auf den Datensatz der Eltern-Tabelle erfolgen kann.

Weitere Informationen finden Sie bei der Beschreibung der API LlDbAddTable­RelationEx().

Beachten Sie, dass die Schlüsselfelder mit dem Tabellennamen identifiziert werden müssen; bspw. "Customers.CustomerID".

Beispiel:

Relation zwischen den beiden Tabellen 'Customers' und 'Orders' aus der mitgelieferten Northwind-Datenbank für Drilldown anmelden.

// add relation

CString sParentField = pMyDrillDownParameters->_pszSubreportTableID +
       _T(".")+pMyDrillDownParameters->_pszKeyField; //Orders.CustomerID
CString sChildField = pMyDrillDownParameters->_pszTableID + _T(".") +
       pMyDrillDownParameters->_pszSubreportKeyField; //Customers.OrderID
::LlDbAddTableRelationEx(hJob,
       pMyDrillDownParameters->_pszSubreportTableID,    // "Orders"
       pMyDrillDownParameters->_pszTableID,             // "Customers"
       pMyDrillDownParameters->_pszRelationID, _T(""),
       sParentField, sChildField);

Datenquelle

Für den jeweiligen Drilldown-Bericht müssen Sie Ihre Datenquelle auf eine andere Art aufbereiten. Sie fragen dann ja nur noch spezialisierte Daten ab, genau diejenigen, die mit dem Eltern-Datensatz verknüpft sind, auf den der Anwender geklickt hat.

Beispielsweise möchten Sie eine Drilldown-Struktur "Customers" zu "Orders" erstellen. Dann sollen Ihnen in der Eltern-Tabelle nur die Daten der "Customers" angezeigt werden. Beim Klick auf einen bestimmten "Customer" soll nun der Drilldown-Bericht erstellt werden, der dann die spezialisierten Daten für diesen "Customer" enthält; nämlich seine "Orders". Und hierfür müssen Sie die Datenquelle für den Drilldown-Bericht entsprechend anpassen – eben alle "Orders" von einem bestimmten "Customer". Alle notwendigen Daten für die Filterung der Child-Tabelle sind in der Drilldown-Struktur 'scLlDrillDownJob' enthalten.