0

Erzeugen von einer PDF aus mehreren Tabellen und bestimmten Datensätzen

Hallo,

ich habe 4 Tabellen. (Kunde, Inspektionsbericht, Mängel, Objekte)

Habe also 1 Datensatz in der Tabelle Kunde und Inspektionsbericht + mehrere Datensätze bei Mängel und Objekte. 

Kann ich in Ninox irgendwie es einrichten, dass ie per Knopfdruck die bestimmten Daten in einem Bericht gedruckt werden? (Hier müsste ja auch die speziellen Daten in der Tabelle Mängel und Objekte ausgewählte werden, die zum Kunden gehören.

 

Bisher muss ich alles einzeln drucken. Ich kann ja über den Druck Button nur einen Datensatz auswählen oder Alle. Alle kann ich ja nicht wählen, da in der Tabelle Objekte ja auch noch Datensätze von anderen Kunden liegen.

 

Kann mir hier einer helfen?

Besten Dank im Voraus.

9 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo mm, mir ist das Datenmodell nicht klar. Welche Tabellen sind nun wie miteinander verknüpft und in welcher Tabelle soll der Druck erfolgen?

      • orange_basketball
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Hallo, danke für deine Antwort. Ich habe 4 Tabellen:

      1. Kunde (Hier sollen die Informationen des Kunden auf den Bericht gedruckt werden)

      2. Anlage (Dies ist mit Kunde verknüpft. Kunde kann mehrere Anlagen haben. Für den Druck muss aber nur ein Datensatz der Tabelle in den Bericht gedruckt werden

      3. Inspektionsbericht (Dies ist mit Anlage verknüpft. Anlage kann mehrere Inspektionsberichte (jedes Jahr einen) haben. Für den Druck muss aber nur ein Datensatz der Tabelle in den Bericht gedruckt werden

      4 Objekte (Diese sind mit Anlage verknüpft). Auf der Anlage befinden sich mehre Objekte. Diese Objekte, die zur Anlage gehören (bestimmte, mehre Datensätze in der Tabelle). sollen in den Bericht gedruckt werden.

       

      Ich erstelle gerade für alle der 4 Tabellen ein Drucklayout. Derzeit müsste ich dann:

      1. Druck eines Datensatzes des Layouts der Kundentabelle manuell

      2. Druck eines Datensatzes des Layouts der Anlagentabelle manuell

      3. Druck eines Datensatzes des Layouts der Inspektionsberichts-Tabelle manuell

      4. Druck mehrerer Datensätze des Layouts der Objekte-Tabelle manuell (Dies können 20 Stück sein, die ich manuell drucken müsste - da ich ja nur auswählen kann, einzelner Datensatz drucken oder alle - alle kann ich ja nicht wählen, da in der Tabelle ja weitere Objekte von anderen Anlagen drin sind)

      5. Zusammenfügen der einzeln generierten PDFs.

       

      Ich würde gerne etweas basteln, dass dies evtl. nur mit einem Klick funktioniert und ich evtl. auswählen kann, was gedruckt werden muss.

      Geht das?

       

      Danke für eure Hilfe.

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Danke für die Erläuterung. Das Ziel ist mir allerdings immer noch nicht ganz klar. Wie soll das Ergebnis genau aussehen? Du willst am Ende ein einziges Dokument mit Informationen zum Kunden, zu einer dessen Anlagen sowie zu all deren Objekten und einem Inspektionsbericht? Also nach diesem Schema:

    - Kunde 1 (von mehreren)
      - Anlage 1 (von mehreren)
        - Objekt 1
        - Objekt 2
        - Objekt 3
        - Inspektionsbericht 1 (von mehreren)

    Das hat für mich den Anschein, als wenn es letztlich darum ginge, einen bestimmten Inspektionsbericht mit Infos zu Anlage und Kunde zu drucken. Sollte dem tatsächlich so sein, würde ich den Druck auch über den betreffenden Berichtsdatensatz auslösen. Sprich:

    1. Kunden auswählen
    2. Verknüpfte Anlage öffnen
    3. Verknüpften Bericht öffnen
    4. Bericht drucken

    Im Drucklayout des Berichts kann man mit Formelfeldern per Punktnotation auf die Daten der verknüpften Datensätze zugreifen, auch über mehrere Ebenen. Für Infos zur übergeordneten Anlage (direkte Verknüpfung)  sähe das so aus:

    Anlage.Anlagenbezeichnung
    

    Für den der Anlage übergeordneten Kunden (indirekte Verknüpfung):

    Anlage.Kunde.Kundenname
    

    Bei den Objekten wird‘s ein bisschen komplizierter, da diese ja N:1 mit der Anlage verknüpft sind. Um eine Liste der Objekte zu dieser Anlage auszugeben, müsste man deshalb mit einer Schleife arbeiten:

    join(for i in Anlage.Objekte do
       i.ObjektNr + " " + i.Objektbezeichnung
    end, "
    ")

    Man könnte das also über ein einziges Drucklayout machen (wobei die Feldnamen von mir natürlich nur beispielhaft gewählt sind). Sofern ich die Aufgabenstellung richtig verstanden habe.

    Grundsätzlich sollte man sich immer überlegen: Was genau will ich drucken, welche Daten benötige ich dazu und wie kann ich auf diese Daten zugreifen?

    Ich habe obiges Szenario mal minimalistisch nachgestellt und die DB hier angehängt (Kunde Meier, Anlage A). Vielleicht hilft sie weiter.

     

    PS: Das Drucken der einzelnen Datensätze wäre nicht nur deutlich aufwändiger. Die verschiedenen PDF-Dateien würden sich mit Ninox-Bordmitteln auch nicht zusammenfügen lassen. Dazu müsste man per API/Make externe Tools nutzen.

    • orange_basketball
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo, vielen Dank. Das hat mir schon sehe weitergeholfen. Ich habe nun eine Druck Layout angelegt und die Daten der Tabellen "Kunde und Anlage" per Formel eingefügt. Das klappt soweit.

    Die Auflistung der Objekte per Loop habe ich auch verstanden.

    Allerdings müsste ich in dem Bericht alle Datensätze, die sich in den Tabellen "Objekte" und "Mängel" befinden in dem Bericht abbilden.

    In der Tabelle "Objekte" sind ca. 50 Felder enthalten und in Tabelle "Mängel" 15 Felder.

    Als Beispiel und zur Erklärung:

    Ich habe einen Kunden (Tabelle) angelegt. Diesem ist eine Anlage (Tabelle) zugeordnet. Der Anlage ind verschiedene Objekte "Tabelle" zugeordnet. Wenn ein Mangel (Tabelle) auftritt, ist dieser einem Objekt zugeordnet.

    Ich habe jetzt alles in einem Bericht aus der Tabelle Kunde und Anlage bekommen. Auch eine Auflistung der Objekte.

    Als Beispiel hat nun eine "Anlage" 20 "Objekte. Jedes dieser Objekte wird in der Tabelle Objekte bewertet. (Ca. 50 Felder).

    Der Bericht sollte dann so aussehen:

    1. Allgemeine Daten (Kunde) - erledigt

    2. Daten über die Anlage (Anlage) - erledigt

    3. Objekte mit Bewertung: 

    3.1. Objekt

       Feld 1

       Feld 3

       Feld 4

       ....

    3.2. Objekt

    3.3. Objekt

    ....

     

    4. Mängel

      ....

     

    Wie ich das hinbekommen soll, weiß ich leider noch nicht. :-(

    Am einfachsten würde ich mir es vorstellen, wenn ich in der Tabelle Objekte ein Drucklayout erstelle, indem alle Daten des Objektes enthalten sind.

    Dann in meinen Berichtslayout (wo alle Daten zusammenlaufen sollen) abfrage, welche Objekte zu der Anlage gehören und diese dann mit den kompletten angelegten Drucklayout der Objekte einfüge.

     

    Ich hoffe, ich habe es verständlich ausgedrückt.

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Für eine konkrete Überlegung, ob und wie sich ein Problem lösen lässt, müsste man es erst mal verstehen. Das ist mir offen gestanden noch nicht wirklich gelungen.

      Klar ist wohl: Es gibt Anlagen, die aus verschiedenen „Objekten“ bestehen. Soweit, so gut. Aber was heißt  nun „3. Objekte mit Bewertung“? Welcher Art sind die Daten zu „4. Mängel“, wo und wie werden sie erfasst? Beziehen sie sich auf die Anlage insgesamt oder auf die einzelnen Objekte?

      Anders gefragt: Was genau sind Gegenstand und Inhalt eines solchen Berichts? Wie ist der genaue Ablauf dahinter? Ich spekuliere jetzt mal, dass der Anlass für einen Bericht eine Prüfung ist, die vielleicht in einem bestimmten Turnus durchgeführt wird.

      Die Kernfrage dabei ist: Werden bei einer solchen Prüfung jeweils noch Daten zu den einzelnen Objekten erfasst (Ja/Nein, Zahl, Text ...)? Oder listet der Bericht nur bereits vorhandene Stammdaten der Objekte auf und es werden an zentraler Stelle lediglich Mängel zur Anlage erfasst?

      Davon hängt letztlich das Datenmodell ab und von diesem wiederum die Vorgehensweise beim Drucken. Etwas mehr Kontext zu dem Prozess, der hier abgebildet werden soll, wäre deshalb hilfreich. 

      • orange_basketball
      • vor 1 Jahr
      • Gemeldet - anzeigen

       

       

      Hallo, danke für deine Antwort. Ich versuche es nochmal zu erklären. Wir machen vierteljährlich Inspektionen von Outdoor Fitnessanlagen. 

      Ich habe folgende Tabellen jetzt in Ninox:

      Ein Unternehmen (Kunde) kann mehrere Anlagen haben. Wenn wir eine Inspektion machen, dann für eine Anlage. (wofür auch der Bericht erstellt wird)

      EineDatensatz einer Anlage schaut dann so aus (der vierteljährlich bewertet wird):

      Einer Anlage sind dann mehrere Sportgeräte zugeordnet. Die infiziert werden müssen:

       

      Inhalte der Tabelle Fitnessgeräte sieht dann so aus:

       

      Mängel werden in 2 separaten Tabellen (Mängel Anlage und Mängel Fitnessgeräte) erfasst:

      ------------------

       

      Jetzt möchte ich alle inspizierten Informationen in einem Bericht haben. (1. Die allgemeinen Daten der ganzen Anlage aus Tabelle "Anlage" und alle Daten der Fitnessgeräte (Menge kann natürlich variieren)

      -> Hierfür habe ich mir jetzt ein Drucklayout in Tabelle Anlage erstellt. Ein Drucklayout in Tabelle Fitnessgeräte. Und jeweils ein Drucklayout in Mängel-Anlage und Mängel-Fitnessgeräte.

          -> Jetzt müsste ich im Drucklayout Anlage von dem Datensatz der Anlage (1 Datensatz mit den Inhalten) eine PDF erstellen,

          -> Danach gehe ich in Tabelle Fitnessgeräte und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Fitnessgeräte auf der Anlage sind)

        -> Danach gehe ich in Tabelle Mängel Anlage und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Mängel auf der Anlage auftreten können)

        -> Danach gehe ich in Tabelle Mängel Fitnessgeräte und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Mängel an den unterschiedlichen Fitnessgeräten auftreten können)

       

      Danach müsste ich manuell alle PDFs zusammenkopieren. Mein Ziel wäre es, wenn ich direkt einen kompletten Bericht erhalte, mit den Daten die benötige und oben beschrieben habe.

       

      Ich hoffe, jetzt ist es etwas verständlicher. :-)

      Beste Grüße,

      Michael

      • michi.2
      • vor 1 Jahr
      • Gemeldet - anzeigen

       

       

      Hallo, ich habe eine Antwort gepostet. Doch leider wird diese seit 1 Woche nicht "freigegeben". Auch vom Support keine Nachricht. Ich habe nun noch einmal einen Account angelegt. Hier meine Antwort:

       

      Hallo, danke für deine Antwort. Ich versuche es nochmal zu erklären. Wir machen vierteljährlich Inspektionen von Outdoor Fitnessanlagen. 

      Ich habe folgende Tabellen jetzt in Ninox:

      Ein Unternehmen (Kunde) kann mehrere Anlagen haben. Wenn wir eine Inspektion machen, dann für eine Anlage. (wofür auch der Bericht erstellt wird)

      EineDatensatz einer Anlage schaut dann so aus (der vierteljährlich bewertet wird):

      Einer Anlage sind dann mehrere Sportgeräte zugeordnet. Die infiziert werden müssen:

       

      Inhalte der Tabelle Fitnessgeräte sieht dann so aus:

       

      Mängel werden in 2 separaten Tabellen (Mängel Anlage und Mängel Fitnessgeräte) erfasst:

      ------------------

       

      Jetzt möchte ich alle inspizierten Informationen in einem Bericht haben. (1. Die allgemeinen Daten der ganzen Anlage aus Tabelle "Anlage" und alle Daten der Fitnessgeräte (Menge kann natürlich variieren)

      -> Hierfür habe ich mir jetzt ein Drucklayout in Tabelle Anlage erstellt. Ein Drucklayout in Tabelle Fitnessgeräte. Und jeweils ein Drucklayout in Mängel-Anlage und Mängel-Fitnessgeräte.

          -> Jetzt müsste ich im Drucklayout Anlage von dem Datensatz der Anlage (1 Datensatz mit den Inhalten) eine PDF erstellen,

          -> Danach gehe ich in Tabelle Fitnessgeräte und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Fitnessgeräte auf der Anlage sind)

        -> Danach gehe ich in Tabelle Mängel Anlage und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Mängel auf der Anlage auftreten können)

        -> Danach gehe ich in Tabelle Mängel Fitnessgeräte und müsste von den zugeordneten Fitnessgeräten dieser Anlage eine PDF erstellen. (aus mehreren Datensätzen der Tabelle, da ja mehrere Mängel an den unterschiedlichen Fitnessgeräten auftreten können)

       

      Danach müsste ich manuell alle PDFs zusammenkopieren. Mein Ziel wäre es, wenn ich direkt einen kompletten Bericht erhalte, mit den Daten die benötige und oben beschrieben habe.

       

      Ich hoffe, jetzt ist es etwas verständlicher. :-)

      Beste Grüße,

      Michael

    • orange_basketball
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo, hat keiner eine Idee?

    Kann man nicht einfach eine "Druck" Seite in Ninox anlegen und hier mit einem Skript sagen, was man alles als PDF erhalten möchte?

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sorry, der letzte Post war mir durchgegangen. Jetzt ist er gleich zwei mal da ...

    Es wird langsam klarer. Allerdings auch komplexer. Ich habe die Demo-DB noch mal so angepasst, wie ich die Aufgabenstellung wahrscheinlich angehen würde. 

    Wesentlich dabei ist der Button „Neue Inspektion erstellen“ in der Tabelle Anlagen. Damit wird ein neuer Datensatz in Inspektionen erstellt, der bestimmte Felder zur Anlage enthält sowie eine Untertabelle mit den in dieser Anlage zu prüfenden Geräten.

    Diese Vorgehensweise setzt natürlich voraus, dass die Inspektions-Fragen/Angaben zu den Anlagen und zu allen Geräten dieselben sind. Sollte das nicht der Fall sein, würde es deutlich komplizierter.

    In der umgesetzten Form ließe sich auch ein Inspektionsbericht mit Angaben zum Auftraggeber, zur Anlage und allen dazugehörigen Geräten drucken. Dabei  ging es mir nur darum, eine mögliche technische Vorgehensweise zu demonstrieren. Schön ist anders, aber die gestalterischen Möglichkeiten des Ninox-Drucklayout-Editors sind ohnehin sehr eingeschränkt. So kann Ninox bspw. jenseits von Tabellen keine sinnvollen Seitenumbrüche erzeugen.

    Für aufwändigere Layouts wird man also wohl ein Dynamisches Drucklayout mit der integrierten Carbone-Schnittstelle erstellen müssen. Was am vorgeschlagenen Datenmodell aber nichts ändern würde. Insofern hoffe ich, dass es erst mal weiterhilft.