Tabelleninhalt aufteilen auf Seiten

Hallo,
ich habe eine Tabelle, in der der Inhalt wie folgt strukturiert ist.
Screenshot 2024-07-17 162751

Nun würde ich gerne für jeden Kunden, die Inhalte auf einer extra Seite ausgeben.
Also auf Seite 1 dann Kategorie und Anzahl von Kunde 15
auf Seite 2 Kategorie und Anzahl von Kunde 24 usw.

Was muss ich dafür einstellen, sodass sich nachher auch die Seitenanzahl an die der Kunden richtet?

Vielen Dank im Voraus

Sauber könntest du das lösen, indem du das ganze in zwei verknüpfte Tabellen packst. Also Kunde > KundenDetails. Dann könntest du als DataMember “Kunden” setzen und für die AutoMasterMode-Eigenschaft AsVariables wählen. Die Kundendaten stehen die dann z. B. in einem Textobjekt zur Verfügung und die Detaildaten können in die Tabelle. Hier ist mehr Erklärung dazu zu finden:

Variablen und Felder bei Datenbindung

Würde das schon helfen?

Vielen Dank für die schnelle Antwort.
Könnte ich das auch bereits aus dem aktuellen DataSet machen oder müsste ich dafür die Datenübergabe ändern?
Wenn ich das richtig verstanden habe erhalte ich dann für jeden Kunden einzeln die Tabelle mit Kategorien und Anzahl, wie stelle ich dann ein, dass jeder Kunde eine eigene Seite erhalten soll?

Im Grunde sollte das funktionieren wie ein Serienbrief, also das Template bleibt gleich, nur der Name und gewisse andere Daten sind Datensatzabhängig unterschiedlich.

LG

Ja, genau so würde es funktionieren das ist zumindest der Plan. Du könntest das mit dem gleichen DataSet machen, müsstest aber die Kundeninfo in eine eigene Tabelle packen und eine Relation zwischen der Kunden und der Details Tabelle anlegen. Du hättest dann zwei Tabellen im DataSet, die über einen Schlüssel miteinander verknüpft sind.

Was ich meinte, kann ich das direkt im Designer machen oder muss das vorher passieren?
Und was wäre der inhalt der beiden tabellen? Die eine Tabelle würde ja so aussehen wie im ersten Beitrag und die zweite würde die Kunden auflisten?
Entschudlige, stehe glaube ich etwas auf dem Schlauch

Hallo,
wenn die Daten bereits nach Kundennummer (Kundenname) sortiert sind (so schaut es in deinem Beispiel jedenfalls aus), könntest du Kategorie und Anzahl in einer Datenzeile ausgeben. In einem Gruppenkopf den Namen und die Nummer und diese nach der Kundennummer gruppieren (bei den Eigenschaften des Gruppenkopfes unter “Gruppieren nach” etwas wie str$(Kundennummer) eingeben.
Um die beiden Varianten in einem Template angeben zu können (würde ich aber nicht machen, wenn nicht unbedingt nötig), müssen die Datenzeilen und Gruppenköpfe jeweils eine Darstellungsbedingung bekommen (die Datenzeilen / Gruppenzeilen der einen Variante = true, die der anderen = false.

Viele Grüße
Simon

1 Like

Bei meinem Ansatz muss das vorher im DataSet passieren. Im Prinzip sieht das so aus:

using System;
using System.Data;
...
class ...
{
    static DataSet CreateDataSet()
    {
        // Erstellen des DataSets
        DataSet dataSet = new DataSet("KundenDataSet");

        // Erstellen der Kunden-Tabelle
        DataTable kundenTable = new DataTable("Kunden");
        kundenTable.Columns.Add("KundenID", typeof(int));
        kundenTable.Columns.Add("Name", typeof(string));

        // Erstellen der Details-Tabelle
        DataTable detailsTable = new DataTable("Details");
        detailsTable.Columns.Add("DetailsID", typeof(int));
        detailsTable.Columns.Add("KundenID", typeof(int)); // Fremdschlüssel zur Kunden-Tabelle
        detailsTable.Columns.Add("Bestellung", typeof(string));

        // Hinzufügen der Tabellen zum DataSet
        dataSet.Tables.Add(kundenTable);
        dataSet.Tables.Add(detailsTable);

        // Erstellen der DataRelation zwischen den Tabellen
        DataRelation relation = new DataRelation(
            "KundenDetails",
            kundenTable.Columns["KundenID"],
            detailsTable.Columns["KundenID"]
        );
        dataSet.Relations.Add(relation);

        // Füllen der Kunden-Tabelle mit Beispiel-Daten
        kundenTable.Rows.Add(1, "Max Mustermann");
        kundenTable.Rows.Add(2, "Erika Mustermann");

        // Füllen der Details-Tabelle mit Beispiel-Daten
        detailsTable.Rows.Add(1, 1, "Bestellung 1 von Max");
        detailsTable.Rows.Add(2, 1, "Bestellung 2 von Max");
        detailsTable.Rows.Add(3, 2, "Bestellung 1 von Erika");

        return dataSet;
    }
}

Mit so einem hierarchischen DataSet kannst du dann wie oben beschrieben vorgehen. Der Ansatz von @Simon_Rosner (Danke dafür :slight_smile:) würde auch klappen, für dein Szenario (wenn ich es richtig verstehe) wäre dann aber diese Einstellung im Gruppenkopf wichtig:

image

Vielen Dank euch beiden für die Ausführliche Hilfe.

Wenn ich das richtig verstehe, so würde der Ansatz, welcher vorher im DataSet passiert, wie ein Multidimensionales Array übergeben?
Also eine Tabelle in einer Tabelle?

Es ist eine 1:n-Relation zwischen zwei Tabellen im DataSet. Also ein Datensatz von Tabelle 1 hat n verschiedene Kinddatensätze in Tabelle 2. Und beim Ausdruck würdest du im Kopf die Infos aus Tabelle 1 platzieren und in der Tabelle drunter dann die zum aktuellen Datensatz gehörenden Kinddatensätze.