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
-
Hallo Alex,
Das mit der Ansicht ist zumindest eine vorübergehende Option. Schöner wäre es, eine farbliche Darstellung beim unterschreiten. Es wird per Formel ermittelt. Ich habe meine gesamten Projekte mit dem Lager vergnüpft. Projektbezogenes Material wird automatisch gleich abgezogen.
Grüße Frank -
Hallo Frank, wir haben das auf der Anforderungsliste. Können aber noch nicht genau sagen, wann es implementiert wird.
VG, Alex -
Guten Tag,
Ist es möglich mit Trigger einen neuen Datensatz in der verknüpften Tabelle anzulegen?
Gruß Leo -
Hallo Leo, das ist noch nicht möglich. Gruß, Frank
-
Kann Ninox das Anlegen von Duplikaten verhindern? Ich möchte verhindern, dass die Datensätze angelegt werden, welche alle Felder identisch haben.
Leo -
Das ist leider nicht möglich.
Viele Grüße, Frank -
Ich möchte beim anlegen eines neuen Datensatzes Werte aus dem Vorherigen Datensatz übernehmen. z.B. Restsaldo und Annuität. Ist das möglich? Ich bekomme das nur mit einem Wert hin.
-
Hallo
Und wenn Sie den Datensatz duplizieren und nur entsprechend anpassen...... -
Hallo, das geht mit einem Trigger auf Tabellen Ebene, der bei Anlegen eines neuen Datensatzes ausgeführt wird. Nutzen Sie die Funktion last() und select.
Restsaldo := last(select Tabellenname.Restsaldo) - Saldo
Eine ähnliches Beispiel finden Sie in der Vorlage Zählerstände. -
Moin Moin!
Ich versuche gerade eine automatische Vergabe einer Belegnummer in Abhängigkeit der Belegart umzusetzen. Leider stoße ich da an meine Grenzen. Ich möchte über ein Auswahlfeld die Belegart bestimmen - 1 für Angebot und 2 für Rechnung. Bei der Neuanlage des Datensatzes habe ich somit versucht einen Trigger auf die Tabelle zu setzen, der den max Wert der jeweiligen Belegnummer ermittelt und dann mit +1 hoch zählt.
let a := max((select Belege).Angebotsnummer) + 1;
let b := max((select Belege).Rechnungsnummer) + 1;
if Belegart = 1 then
(Angebotsnummer := lpad(text(a), 3, "0"))
else
(Rechnungsnummer := lpad(text(b), 3, "0"))
Wenn ich aus einem Angebot jetzt aber eine Rechnung erstellen möchte, hat der Datensatz bereits die Angebotsnummer eingetragen, welche theoretisch beim Duplizieren des Datensatzes gelöscht werden muss. Anschließend sollte die Rechnungsnummer vergeben werden.
Vielleicht ist der Code oben ja schon ein richtiger Ansatz?
Vielen Dank für die Hilfe! -
NACHTRAG:
Abgesehen von der Problematik funktioniert das mitlpad()
noch nicht so ganz. -
Hallo. Ich habe eine Frage zu den Triggern auf Tabellenebene. Was überwacht die Funktion "Nach Änderung folgendes Script ausführen"? Gibt es eine Möglichkeit den Datensatz an dem die Änderung vorgenommen wurde zu bestimmen? MfG schocki
-
Das lpad(...) sieht eigtl. gut aus, was funktioniert nicht? Möglich wäre auch
format(a, "000")
Beim Duplizieren werden (absichtlich) keine Trigger ausgelöst.
Per Skript ist ein duplicate(...) noch nicht möglich. Die etwas aufwändige Alternative wäre, den gesamten Vorgang als Skript umzusetzen und auf eine Befehlsschaltfläche zu legen. So in etwa:
let r := create Rechnung;
r.Rechnungsnummer := max((select Belege).Rechnungsnummer) + 1;
r.Datum := today();
...
for p1 in Rechnungspositionen (
let p2 := create Rechnungspositionen;
p2.Rechnung := r;
p2.Artikel := p1.Artikel;
...
) -
Haben diese "..." Zeichen eine Funktion? MfG schocki
-
Entschuldigung. Habe zu schnell gelesen. "..." hat keine Funktion.
-
Der Trigger überwacht alle Datenfelder, aber nicht Änderungen in verknüpften Datensätzen. Das Skript bezieht sich auf den gerade geänderten Datensatz.
-
Vielen Dank für die Hilfe!
Ich habe mich dann gestern doch dafür entschieden, zwei Tabellen (insgesamt vier) für Angebote und Rechnungen anzulegen. Das kommt einem ERP / CRM Tool letztendlich eh näher.
Jetzt würde ich gerne nur versuchen per Befehlsschaltfläche die Positionen und den Kontakt aus dem Angebot in die Rechnung zu übernehmen. Im Grund müsste ich ja versuchen, erst einen neuen Datensatz per "record" zu erstellen und dann die Angebotspositionen in die Rechnungspositionen zu übernehmen, oder? -
Genau. Einen neuen Datensatz erstellt man zB so:
let r := create Rechnung;
r.Rechnungsdatum := today() -
Hier verlassen mich meine "Kenntnisse", welche ich mir durch Try and Error gerade aneigne.
let r := (create 'Rechnungen');
let a := Nr;
r.(Datum := today());
r.(Kontakt := last((select Kontakt where 'Angebote'.Nr = a).Kontakt)
Wobei sich 'Nr' auf die Tabelle Angebote bezieht. Im Grunde möchte ich den Kontakt aus dem Angebot nun auch bei der erstellten Rechnung setzen. Ich bekomme allerdings die Fehlermeldung, dass "der Ausdruck mehrfache Ergebnisse zurück liefert" (Angebot.Nr).
Wenn ich dieses Problem gelöst habe, fehlt mir ja nur noch der Loop für die Übernahme der Positionen.
for p1 in Rechnungspositionen (
let p2 := create Rechnungspositionen;
p2.Rechnung := r;
p2.Artikel := p1.Artikel)
Den Code-Schnipsel würde ich als Vorlage nehmen, jedoch verstehe ich den leider auch noch nicht ganz :(
Wäre über Hilfe mal wieder sehr erfreut!
Vielen Dank! -
Hallo Marcel,
Wenn du die Rechnung aus dem Angebot erstellst und du Angebotspositionen und Rechnungspositionen in separaten Tabellen hast:
let k:=Kontakt;
let n:=Nr;
let r := (create Rechnungen);
r.Datum:=today();
r.Angebot:=n
r.Kontakt:=k;
let rn:=r.Nr;
for p in (select Angebotspositionen where Angebot=n)(
let PR:=p.Produktname;
let xx:=p.xx....;
....
....
let y := (create Rechnungspositionen);
y.Rechnung:=rn;
y.Produktname:=PR;
y.irgentwas:=xx.....;)
Du muss statt Punkte alle deine Positionsfelder auflisten und diese dann mit y... := übernehmen.
Besser wäre es wenn ich die Datenbank sehen würde.
Die Formel ist nicht geprüft.
Gruß
Leo -
Hallo Marcel,
anbei die Datenbank
https://www.dropbox.com/s/zpb1wgn5aylpwqj/K%C3%BCnstler2.ninox?dl=0
Ich habe nicht richtig verstanden, was du mit Veranstaltungen machst.
grüß Leo -
Irgendwie ist bei Wordpress Schluss nach 3 Unterhaltungen
also nochmals
Hallo Marcel,
anbei die Datenbank
https://www.dropbox.com/s/zpb1wgn5aylpwqj/K%C3%BCnstler2.ninox?dl=0
Ich habe nicht richtig verstanden, was du mit Veranstaltungen machst.
grüß Leo -
Hey Leo,
ganz große Klasse! Vielen Dank :)
Da wäre ich so schnell nicht drauf gekommen. Werde das gleich noch mal in Ruhe durchsehen und schauen, ob ich es nachvollziehen / verstehen kann.
Die Veranstaltungen sind im Grunde vereinbarte Termine mit Kunden.
Beispiel:
Kunde fragt an, ob Künstler an Termin x für 2 Stunden Zeit hat und etwas singen kann. Er bittet neben Terminbestätigung um ein Angebot bzgl. der Kosten.
Man kann dann ein Angebot erstellen und den Termin über "Veranstaltungen" blocken, bzw. eintragen und mit einem Veranstaltungsort verknüpfen. Hinzu kommt die Verknüpfung rückwärts zu den Belegen (Angebot / Rechnung) und dem dazugehörigen Kontakt.
Neben einem CRM ergibt dies also auch einen simplen Terminkalender.
Beste Grüße
Marcel
Content aside
- vor 6 JahrenZuletzt aktiv
- 193Antworten
- 58180Ansichten