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
-
Hallo mm, mir ist das Datenmodell nicht klar. Welche Tabellen sind nun wie miteinander verknüpft und in welcher Tabelle soll der Druck erfolgen?
-
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:
- Kunden auswählen
- Verknüpfte Anlage öffnen
- Verknüpften Bericht öffnen
- 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.
-
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.
-
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?
-
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.
Content aside
- vor 1 JahrZuletzt aktiv
- 9Antworten
- 180Ansichten
-
5
Folge bereits