0

Aktualisieren nach Löschen eines Datensatzes im Unterformular

Hallo liebes Forum, 

aus einer Untertabelle wähle ich verschiedene Kriterien aus, die mit einem Zahlenwert belegt sind. Aus der Summe ergibt sich im übergeordneten Formular eine Einstufung durch ein Auswahlfeld.

Lösche ich nun in der Untertabelle einen Wert, aktualisiert das Skript dies nicht, der Summenwert ändert sich, das Kriterium bleibt aber stehen. 

Was mache ich falsch?

Gruss Michael 

Zum besseren Verständnis das Skript:

if sum(Gefahrstoffkataster.Gefahreneinstufung.Einstufung.'Signalwort Wert') = 0 then
Gefahrstoffkataster.(Signalwort := 1)
else
if sum(Gefahrstoffkataster.Gefahreneinstufung.Einstufung.'Signalwort Wert') <= 10 then
Gefahrstoffkataster.(Signalwort := 2)
else
if sum(Gefahrstoffkataster.Gefahreneinstufung.Einstufung.'Signalwort Wert') > 10 then
Gefahrstoffkataster.(Signalwort := 3)
else
Gefahrstoffkataster.(Signalwort := null)
end
end
end

9 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Michael,

    wo steht diese Formel?

    Leo

    • gefb
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    im Hauptformular, Felder bearbeiten, nach Änderungen folgendes Skript ausführen.

     

    Gruss Michael

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Aber du änderst die Daten nicht im Hauptformular sondern in der Untertabelle. Du schreibst "Lösche ich nun in der Untertabelle einen Wert,..."

    Bedeuted das, dass due einen Kompletten Datensatz in der Untertabelle löschst oder nur ein Feld "nullst"?

    Ist Signalwort ein Auswahlfeld?

    Leo

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Und noch ne Frage:

    Gefahrstoffkataster.Gefahreneinstufung.Einstufung.'Signalwort Wert'

    Hauptformular ist Gefahrstoffkataster oder noch eine übergeordnete Tabelle?
    Es sind drei Tabellen untereinander - was genau wird gelöscht?

    Leo

    • gefb
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    hier mal das Datenmodell:

    1. In der Tabelle Einstufung stehen 80 Werte, die einen Gefahrstoff mit drei Kriterien bewerten: a. kein Signalwort, b. Achtung, c. Gefahr. Je nach Auswahl werden Punkte vergeben: a. 0 Punkte, b. 1 Punkt, c. 100 Punkte

    2. In der Haupttabelle habe ich eine Untertabelle, mit der ich zu jedem Hauptdatensatz mehrere Einstufungen auswähle

    3. Aus den Punkten errechne ich in der Haupttabelle die Punke über die Summenformel

    4. Mit der if Abfrage ermittele ich das Signalwort

    5. Habe ich eine Summe über 100, wird Gefahr ausgewählt, alles richtig

    6. Lösche ich in der Untertabelle "Gefahreneinstufung" eine Zeile mit einem 100er Wert, sollte die if ABfrage z.B. wieder auf Achtung springen, da die Summe unter 100 ist. 

    Ich hoffe, die Punkte erklären ungefähr den Ablauf. 

    Michael 

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Michael,

    Generell gilt, dass das Löschen oder Hinzufügen der Datensätze in Untertabellen nicht als Änderung in der Haupttabelle zählt. Dir bleibt eigentlich nur eine Möglichkeit die Änderungen in der Untertabellen zu überwachen.

    in der Haupttabelle setzt man ein Funktionsfeld mit der Formel:

    ---

    let mySum:=sum(Gefahreneinstufung.Einstufung.'Signalwort Wert');
    switch mySum>=0 do
    case mySum=0:
    "TEXT ODER ZAHL1"
    case mySum<=10:
    "TEXT ODER ZAHL2"
    case mySum>10
    "TEXT ODER ZAHL3"
    DEFAULT
    null
    end
    ---

    die Formel überwaht die Untertabelle und gibt dir je nach summe einen Wert zurück.

    Leo

    • gefb
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    das klappt sehr gut! Den DEFAULT null Befehl verstehe ich noch nicht. Fehlt hier nicht ein Doppelpunkt:? Was bewirkt der DEFAULT Befehl in diesem Skript.

     

    Gruss Michael

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Oh je;

    ---

    let mySum:=sum(Gefahreneinstufung.Einstufung.'Signalwort Wert');
    switch mySum>=0 do
    case mySum=0:
    "TEXT ODER ZAHL1"
    case mySum<=10:
    "TEXT ODER ZAHL2"
    case mySum>10:
    "TEXT ODER ZAHL3"
    default:
    null
    end

    ---

    default zeigt  leeres Feld in allen anderen Fällen. Ist hier eigentlich überfüssig, habe nur aus Vorsicht hinzugefügt.

    Leo 

    • gefb
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    ich habe mal ein zweites Funktionsfeld eingefügt: sum(Gefahreneinstufung.Einstufung.'Signalwort Wert')

    Der Wert ist immer 0, ob ich einen neuen Datensatz anlege oder angelegte Daten in der Untertabelle später wieder lösche. Daher wird die default: null Abfrage eigentlich nicht angesprochen.

    Ich habe die Zahlenwerte angepasst, so dass ich jetzt mindestens einen 0 Wert habe, damit funktioniert es super. Vielen Dank für die Hilfe!

    Gruss Michael