0

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

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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.

      • Wilfried_Hennen
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Danke Uwe, ich glaube ich habe mich nicht ganz richtig ausgedrückt und versuche es noch einmal in anderer Sprache:

      wenn heute größer oder gleich dem Datumsfeld ist, dann überschreibe den Inhalt von Zahlenfeld1 mit dem Inhalt von Zahlenfeld2

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Wilfried Hennen 

      If Datumsfeld and Zahlenfeld2 then
          if today() >= Datumsfeld then
              Zahlenfeld1 := Zahlenfeld2
          end
      end

      Du must entscheiden, wo und wann das Script ausgeführt werden soll.
      Meine Empfehlung Tabellentrigger nach Änderung.

    • Wilfried_Hennen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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

    • Wilfried_Hennen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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)
    end

    Kann ich das neue script einfach dort anhängen bzw. wo muss ich es plazieren?

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Du kannst es einfach hinten anhängen. Nach dem ‚end’ das Semikolon nicht vergessen bevor der neue Code angefügt wird.