Ein (temporärer) Button macht hier die Arbeit für uns!
Öffnen Sie die Tabellen-Einstellungen der Tabelle Rechnungspositionen.
Fügen Sie das Layout-Feld Button hinzu.
Öffnen Sie die Feld-Einstellungen und geben Sie unter Beim Klicken folgendes Skript ein:
Mehr zu for ... in ... do ... end
und select
in unserer Einführung in Ninox-Skript.
Indem Sie anschließend den Button klicken, werden die fehlenden Einzelpreise den Rechnungspositionen zugewiesen. Unsere erste Rechnung ist wieder vollständig.
Wenn Sie möchten, können Sie den Button wieder löschen.
Jetzt erstellen wir noch eine neue Rechnung mit viel Champagner zu den aktuellen Preisen. Sie sehen, alles funktioniert (wieder)!
Trigger sind ein cooles Tool, um Vorgänge zu automatisieren
Wir haben vor Kurzem, beim Erstellen der Rechnung, etwas nebenbei einen Trigger kennengelernt, als wir zum Einfügen einer automatischen Rechnungsnummer auf Tabellen-Ebene ein Skript in den Trigger bei neuem Datensatz eingefügt haben.
Jetzt möchten wir uns Trigger bei Ninox noch etwas genauer anschauen.
Ein Trigger reagiert auf ein Ereignis („Event“) nach dem Prinzip „Wenn dies passiert, dann mach das!“. So können Ihnen Trigger viele sonst manuelle Prozesse abnehmen.
Sie können Trigger bei Ninox auf verschiedene Art und Weise einsetzen, u. a. um
Werte zu ändern oder ergänzen, wenn etwas Bestimmtes passiert
Folgeaktionen auszuführen
Tabellen und Datensätze zu öffnen oder schließen
Felder vorab auszufüllen
Sie finden bei Ninox 5 Trigger:
Trigger bei neuem Datensatz (in den Tabellen-Einstellungen)
Trigger nach Änderung (in den Tabellen-Einstellungen und in den Feld-Einstellungen von fast allen Feldern)
Das sind die am häufigsten benutzten. Darüber hinaus gibt es noch
Trigger nach Öffnen (in den Datenbank-Optionen)
Trigger vor Anzeige (in den Feld-Einstellungen beim Feld Registerkarte)
Trigger nach Ausblenden (in den Feld-Einstellungen beim Feld Registerkarte)
Wir schauen uns im Folgenden noch einen Trigger nach Änderung in den Feld-Einstellungen eines Verknüpfungs-Felds etwas genauer an ...
Unsere 3. Rechnung – mit neuem Preis
Ändern Sie nun in der Tabelle Essen & Trinken den Preis für den Champagner auf 9 €.
Erstellen Sie eine weitere Rechnung. Wieder mit viel Champagner!
Sie möchten das Thema vertiefen? Schauen Sie sich dazu den entsprechenden Abschnitt in unserem Video-Tutorial an.
Jetzt erfahren Sie noch etwas zu Rollen und Rechten. Es soll ja nicht jeder an Ihrer Datenbank herumwerkeln dürfen!
Et voilà! Alle Rechnungen zeigen den jeweils gültigen Einzelpreis an!
Nachdem wir gerade unsere erste Rechnung erstellt haben, teilt uns der Champagner-Lieferant mit, dass er die Preise erhöht. Das bedeutet, dass auch wir unsere Preise anpassen müssen!
Statt 7,50 € wird das Glas in Zukunft 9,00 € kosten.
Im Moment ist unsere Rechnung so eingerichtet, dass die Preise immer direkt aus der Tabelle Essen & Trinken gezogen werden.
Wenn wir also einen Preis in der Tabelle Essen & Trinken ändern, werden jeweils alle Rechnungen geändert – auch die, die bereits geschrieben wurden!
Wir können das für die Zukunft über einen Trigger so einrichten, dass in der Rechnung immer der Preis für einen Artikel angezeigt wird, der zum Zeitpunkt der Rechnungsstellung aktuell war.
Dieser Preis ist dann fest in der jeweiligen Rechnung „verankert“.
Wir setzten in der Untertabelle Rechnungspositionen in dem Verknüpfungs-Feld Essen & Trinken einen Trigger nach Änderung. Dieser wird dafür sorgen, dass in einem neu hinzugefügten Zahl-Feld Einzelpreis (anstatt des bisherigen Formel-Feld Einzelpreis) der jeweils aktuelle Preis hinterlegt wird.
In dieses Feld schicken wir per Trigger den aktuellen Preis. Dieser wird dort als Zahl fest gespeichert. Er wird nicht mehr – wie bisher – aus der Tabelle Essen & Trinken frisch in ein Formel-Feld Einzelpreis gezogen.
Wir fügen in einer Rechnung eine neue Rechnungsposition hinzu (+ Datensatz erstellen) und wählen in dem Verknüpfungs-Feld Essen & Trinken einen Artikel aus.
Der Trigger nach Änderung reagiert auf diese Änderung im Feld Essen & Trinken (Änderung = Ereignis) und führt sein Skript aus. Hier: der Trigger weist den aktuellen Einzelpreis aus der Tabelle Essen & Trinken dem Zahlen-Feld Einzelpreis in der Tabelle Rechnungspositionen zu.
Gehen Sie zur Untertabelle Rechnungspositionen.
Unter Trigger nach Änderung fügen Sie folgendes Skript ein:
Einzelpreis := 'Essen & Trinken'.Einzelpreis
Wir müssen nun noch die Tabelle Rechnungen anpassen.
Klicken Sie in der Formular-Ansicht in die Kopfzeile der Untertabelle Rechnungspositionen.
Klicken Sie auf Spalte einblenden und holen Sie den neuen Einzelpreis zurück. Wenn Sie ihn nicht gleich sehen, wird er sich vermutlich am rechten Rand „verstecken“. Ziehen Sie die Felder über die Kopfzeile nach links und ordnen Sie über Drag-and-drop das Feld vor dem Gesamtpreis ein.
Änderungen speichern und: Fertig!
OK. Noch nicht ganz fertig. Die einzige Rechnung, die wir im Moment haben, hat keine Berechnungsgrundlage mehr und zeigt im Moment weder Einzel- noch Gesamtpreise an.
Darum kümmern wir uns schnell!
Fügen Sie in den Tabellen-Einstellungen ein Zahl-Feld Einzelpreis hinzu. Vergessen Sie nicht, das Zahlenformat in den Feld-Einstellungen anzupassen!
Löschen Sie das bisherige Formel-Feld Einzelpreis.
Öffnen Sie Weitere Optionen in den Feld-Einstellungen des Verknüpfungs-Felds Essen & Trinken.
Jetzt passen Sie noch den Gesamtpreis an: Der Einzelpreis (bisher ein Formel-Feld) wird jetzt über das neue Zahl-Feld Einzelpreis berechnet.
... und speichern!
Wir öffnen den Bearbeitungsmodus in der Tabelle Rechnungen.