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 LlDbAddTableRelationEx().
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.