0
Trigger
Hallo,
erstmal vielen Dank für das tolle Produkt. Nun habe ich eine Frage: Ich hab es zwar hinbekommen einen Trigger für ein Feld einzurichten aber kann ich einen Trigger so einrichten, dass er sich auf mehr als ein Feld auswirkt?
Z. B.: wenn Feld A »Ja« dann Felder B UND C ändern
Vielen Dank im Voraus!
erstmal vielen Dank für das tolle Produkt. Nun habe ich eine Frage: Ich hab es zwar hinbekommen einen Trigger für ein Feld einzurichten aber kann ich einen Trigger so einrichten, dass er sich auf mehr als ein Feld auswirkt?
Z. B.: wenn Feld A »Ja« dann Felder B UND C ändern
Vielen Dank im Voraus!
193 Antworten
-
Jetzt antworte ich mir selbst :-)
Ich würde aus Tabellen Angebote und Rechnungen eine Tabelle z.B. Bestellungen machen und die Angebote und Rechnungen als zwei Druckansichten erstellen.Sonst hast du Redundanz bei
Positionen. Ist aber nur eine Option.
Gruß
Leo -
Hallo. Ich versuche so etwas wie eine TAG Funktion zusammen zu schustern. Mein Ansatz besteht aus Tabelle1 (TAGs auswählen und hinterlegen) und Tabelle2 (TAG Vorrat). Verknüpfung Tabelle1:Tabelle2 / 1:N. In Tabelle1 habe ich ein Textfeld in dem nach Auswahl, per Script der TAG aus Tabelle2 nachgetragen wird. Jetzt ist es aber so, dass ich die Verknüpfung zu Tabelle2 nach jeder Auswahl manuell lösen muss um einen weiteren TAG auswählen zu können. Letztendlich fehlt nur die Möglichkeit bei dem Verknüpfungsfeld auf Seite der Tabelle1 per Script nach Änderung die Verknüpfung sofort wieder zu lösen. Formelbeispiel für Verknüpfungsfeld in Tabelle1/ Script nach Änderung: Text := TAGs + (if TAGs then ", " else "") + Tabelle2.TAG;
Tabelle2 := void -
Korrektur der Formel um Missverständnisse zu vermeiden:
TAGs := TAGs + (if TAGs then “, ” else “”) + Tabelle2.TAG;
Tabelle2 := void -
Hallo,
evtl. kommt es in Frage die Tags über eine Kompositions Hilfstabelle zu vergeben.
Ähnlich dem Rechnungen Beispiel. Hier gibt es "Rechnungspositionen", über die beliebieg "Artikel" zu einer Rechnung hinzugefügt werden können.
Analog könnte man eine Tabelle "Tag-Positionen" als Komposition mit Tabelle1 verknüpfen und mit Tabelle 2 verknüpfen. Dann kann man in Tabelle 1 über die "Tag Positionen" verschiedene Tags immer wieder hinzufügen.
VG, Alex -
Ich möchte um Hilfe bitten.
Eine Tabelle als Aktenregister.
Tabelle: Akte
Feld Registernummer (RegNr)
Die einzelnen Datensätze nummeriere ich fortlaufend, was problemlos geht mit:
(RegNr := last((select Akte).RegNr) + 1)
Das ist als Trigger gesetzt bei einem neuen Datensatz.
Nun muss ich nach einemJahreswechsel wieder bei 1 (ich ergänze "/ AnlY") anfangen
Ich habe versucht, ein Feld mit der Jahreszahl (AnlY) zu setzen und zum vorigen Eintrag zu vergleichen:
if last((select Akte).AnlY) < year(today())
then
(RegNr := "1")
else
(RegNr := last((select Akte).RegNr) + 1)
Ich teste indem ich die Systemzeit zurücksetze auf 2015. korrekt wird ein Datensatz mit AnlY "2015" erzeugt.
Setze ich wieder auf 2016, zählt er die RegNr aber immer noch weiter hoch, also fortlaufend, anstatt wieder bei 1 zu beginnen.
Wie erreiche ich, dass die korrekte (damalige) Jahreszahl genommen wird zum Vergleich oder wie anders kann ich testen, ob es der erste Datensatz eines neuen Jahres ist?
Ich hoffe, jemand kann mir weiterhelfen. -
Hallo Chris_CH
Ich habe mir sowas für ganz anderes Thema gebastelt:
Auf deine Datenbank umgeleitet würde ich das Feld "Datum" anlegen mit Standardwert Heute(). Dan Trigger bei neuen Datensatz:
let N := year(Datum);
RegNr := max((select Akte where year(Datum) = N).Nummer) + 1;
Und prüfen kannst du indem du das Datum einfach auf 2015 änderst und ein neuen Datensatz erstellst.
Gruß Leo -
Ich danke Dir sehr, so gehts super.
-
Hallo Chris_CH,
folgendes sollte gehen:
RegNr := max((select Akte where year(Datum) = year(today())).RegNr) + 1
Viele Grüße,
Frank -
Ich danke Dir sehr, ja so geht es.
-
Ich hänge an einem gedanklichen Problem fest und bitte um Hilfe:
Ich habe eine Datenbank "Akten" In dieser gibt es Kompositionsdatenbanken "Gegner" und "Mandanten" die jeweils gespeist werden aus mit ihnen verknüpfter Datenbank "Beteiligte"
Soweit so gut. Das System ist fast identisch zu dem Modell der "Rechnungen" hier deren "Positionen" aus den "Artikeln" gespeist sind.
Nun kann ich bei den "Beteiligten" mir alle "Akten" anzeigen lassen, bei denen der Beteiligte involviert ist, über die steuerbare Ansicht der Gegner und Mandanten Daten, tatsächlich ist das die Ansicht der Gegner und Mandanten Datenbank. (Um in Eurem "Rechnungsmodell" zu bleiben. Wenn ich in "Artikel" auf "Umsatz Karteikarte " gehe, wird mir eine Ansicht der Rechnungspositionen gezeigt, und an erster Stelle "Rechnungsnummer". So lasse ich mir bei meinen "Beteiligten" deren "Aktenbeteiligungen" anzeigen)
Da ist mein Wermutstropfen. Ich möchte aus dem jeweiligen "Beteiligten" in dieser Ansicht die angezeigte Akte aufrufen können.
Ich möchte also mir in der Datenbank "Beteiligte" alle Akten anzeigen lassen (nur anzeigen, keine Anlage oder Bearbeitung erforderlich dort) an denen die Person beteiligt ist.
Wie kann ich das am elegantesten realisieren? Mir genügt schon eine Liste oder Tabelle die "automatisch gefüllt wird.
Ich hoffe, dass ihr mir hier auf die Sprünge helfen könnt.
Christoph -
Hallo Christof,
eine Frage - ist pro Akte immer nur ein Mandant und ein Gegner, oder können auch mehrere sein? Es ist wichtig um Datenmodell zu erstellen.
Gruß Leo -
Hallo Christoph,
für den Fall, dass pro Akte nur ein Mandant un nur ein Gegner existiert aber ein Mandant in anderem Fall ein Gegner sein kann, habe ich kleine Vorlage für dich.
Es existieren nur zwei Tabellen: "Akten" und "Beteiligten". Alles andere ist mit Beziehungen realisiert.
https://www.dropbox.com/s/qv97cm1ext0ntjv/Akten.ninox?dl=0
gruß Leo -
Hallo Leo,
pro Akte kann es mehrere Mandanten und mehrere Gegner geben.
Genauso kann ein Mandant in einer anderen Akte auch Gegner sein.
Ließe sich das auch darstellen?
Gruß Christoph -
ich habe Dir mal die Grundlage verlinkt:
https://www.dropbox.com/s/8lrspjz9fss53wo/KanzleiRegister.ninox?dl=0 -
Du siehst, dass ich mir bei “Beteiligten” mir alle “Akten” anzeigen lasse, bei denen der Beteiligte involviert ist, in der Karteikarte "Akten"
Die Listen an sich sind auch gut so.
Aber ich brauche, dass sie auf die Akten und nicht auf die Beteiligten verlinken. -
Hallo Christoph,
du verlinkst hier nicht auf beteiligten sonder auf Paar "Beteiligte-Akte"
und beide Felder sind beim Klick vorhanden. Du hast auch beim Link zu beteiligten geschrieben "Details zu ....."
Wenn du dasselbe fürs Feld Akten macht, dann kannst du genauso auf Details zu Akten zugreifen
Ich verstehe nicht ganz warum du Die Adressdaten von Beteiligten nochmals per Trigger in die Tabelle einfügst.Ich würde hier lieber Berechnungsfelder einfügen. Problem bei Trigger sehe ich wenn bei Beteiligten die Adresse oder Telefon sich ändern muss du manuell bei Mandanten und Gegner nachpflegen. Es sei den es ist so gewollt.
In der Tabelle Mandanten hast du die Verknüpfung auf Akten schon, wenn du jetzt die Berechnungsfelder mit relevanten Daten einfügst, siehst du auch auf ersten Blick , was für Akte das ist.
Leo -
Ich sitze auf dem Schlauch. Deinen Satz :
>> du verlinkst hier nicht auf beteiligten sonder auf Paar “Beteiligte-Akte” und beide Felder sind beim Klick vorhanden. Du hast auch beim Link zu beteiligten geschrieben “Details zu …..”
Wenn du dasselbe fürs Feld Akten macht, dann kannst du genauso auf Details zu Akten zugreifen
.. verstehe ich nicht.
Was soll ich wohin verlinken?
Entschuldige, dass ich das nicht verstehe...
Christoph -
Hallo Christop,
habe deine Datenbank modifiziert. Der Aktenname wird jetzt anders generiert und falls du mehrere Mandanten/Gegner hast werden diese auch aufgelistet auserdem siehst du jetzt sowohl der Name als auch die Akte. Ich habe beide Tabellen als Komposition gesetz. Habe alle doppelte Zusatzfelder gelöscht
https://www.dropbox.com/s/ch3wpba8firhdw6/KanzleiRegister.ninox?dl=0
Leo -
elegante Idee, ich danke Dir sehr dafür!
-
Die Formel bei Aktenname ist fehlerhaft richtig ist
concat(Mandant.Beteiligte.Name) + (if cnt(Gegner.Beteiligte.Nr) = 0 then
" (" + wegen + ")"
else
". / ." + concat(Gegner.Beteiligte.Name) + " (" + wegen + ")")
Außerdem ist in der Liste Mandanten eine Zeile zu viel. Solltest du am besten die Mandanten und gegner löschen und neu anlegen.
Leo -
Ich danke Dir sehr für Deine Aufmerksamkeit und die sehr hilfreichen Ratschläge.
Danke Leo -
Ich weiß nicht, ob es eine Frage zu Trägern oder der Syntax ist:
ich habe in einer Datenbank eine Tabelle aus Mitgliedsnummern und Namen. Diese ist und soll auch so sein - unveränderbar. (MglNr)
In einer anderen Tabelle (Teilnehmer) habe ich (unter anderem) zwei Felder
eines Mitgliedsnummer eines Name.
Ich möchte nun erreichen, dass ich bei Teilnehmer die Mitgliedsnummer angeben kann und der Name dann automatisch aus der Tabelle MglNr gesetzt wird.
Ich scheitere an der Syntax glaube ich.
Wie muß ich das machen?
Christoph -
Hallo Christoph,
normalerweise würde ich das nicht über einen Trigger realisieren, sondern schlicht eine Verknüpfung von Teilnehmer zu der Tabelle Mitglieder anlegen.
Über einen Trigger - ohne Verknüpfung - könnte es so gelingen:
let m := MglNr;
Name := first(select Mitglieder where MglNr = m).Name
Viele Grüße,
Frank -
so funktioniert es,
herzlichen Dank Frank
Christoph -
Ich löse das so, weil die Mitglieder Tabelle vollkommen statisch ist nun nicht geändert werden darf.
Content aside
- vor 6 JahrenZuletzt aktiv
- 193Antworten
- 58192Ansichten