Zahlenfeld überschreiben lassen
Guten Tag,
ich möchte die Zahleneingabe in einem Zahlenfeld bei Erreichen eines Datums (in einem anderen Feld) mit dem Inhalt eines weiteren Zahlenfelds überschreiben lassen.
Muss ich dazu noch ein Formelfeld anlegen?
7 Antworten
-
Du kannst es im Trigger nach Änderung in dem EingabeZahlenfeld verankern.
Das Script sähe dann wie folgt aus(ohne deine genauen Textbezeichnungen zu kennen):if Datumsfeld >= (Datum das erreicht werden soll) then
EingabeZahlenfeld := Zahlenfeld2
end
Das setzt voraus, dass bei Eingabe in das Zahlenfeld das Datumsfeld bereits belegt ist.
Das kann man dann wie folgt prüfen:if Datumsfeld then
if Datumsfeld >= (Datum das erreicht werden soll) then
EingabeZahlenfeld := Zahlenfeld2
end
end
Ist das Datumsfeld nicht belegt, kann man auch beim Änderungstrigger im Datumsfeld eine Prüfung vornehmen. -
Vielen Dank an Uwe, es klappt so wie gewünscht!
Jetzt überlege ich schon weiter, schön wäre es, wenn die Änderung bei Erreichen des Tagesdatum automatisch beim Aufruf der Datenbank erfolgen könnte.
-
Das ist auch möglich für bestehende Datensätze der entsprechenden Tabelle.
Unter 'Optionen' gibt es 'Trigger nach öffnen'.
Dort kann ein entsprechendes Script platziert werden, welches diese überprüft und entsprechend ändert.
Da ich deinen DB-Aufbau nicht kenne hier ein allgemein gehaltenes Script, welches du auf deine Bezeichnungen anpassen musst.let P := select TABELLENNAME [Datumsfeld>=today()];
for i in P do
i.Zahlenfeld1 := i.Zahlenfeld2
end
Erklärung:
Mit der ersten Zeile erzeugst du ein Array der Tabelle in der alle Records enthalten sind, die der Bedingung entsprechen
Ab der zweiten Zeile wird eine Schleife definiert, welches bei jedem Element des Arrays den Wert des Zahlenfeld1 mit dem Wert des Zahlenfeld2 überschreibt.Anmerkung: Das Script wird bei jedem öffnen der DB ausgeführt.
Das kann man abfangen, wenn man bspw. eine Hilfstabelle mit nur einem Record hat, in der nach Beendigung der Schleife das heutige Datum gespeichert wird.
Dann sähe das Script wie folgt aus:
if first(select HILFSTABELLE).Datum < today() then
let P := select TABELLENNAME [Datumsfeld>=today()];
for i in P do
i.Zahlenfeld1 := i.Zahlenfeld2
end;
first(select HILFSTABELLE).Datum := today()
end -
Ich habe allerdings dort schon folgendes script:
for j in select Vertrag do
j.(REAKTIONSDATUM := if 'Vertrag_(be)endet' > 0 then
'Vertrag_(be)endet'
else
let myDD := [Preisgarantie, 'ErstLZ bis', KdgFrist_Ende, SoBo_bis, 'Preiserhoehung bis', KdgPruefung, 'GV_LZ bis'];
let myARR := for i in myDD do
if i > today() then i end
end;
if max(myDD) < today() then 'Vertrag_(be)endet' else min(myARR) end
end)
endKann ich das neue script einfach dort anhängen bzw. wo muss ich es plazieren?
-
Du kannst es einfach hinten anhängen. Nach dem ‚end’ das Semikolon nicht vergessen bevor der neue Code angefügt wird.
Content aside
- vor 2 JahrenZuletzt aktiv
- 7Antworten
- 35Ansichten
-
2
Folge bereits