0

Zeilenbezogene Prüfung (Hilfe benötigt)

Hey ihr Ninox-Profis.
Ich bin leider immernoch echt ein Laie was Ninox angeht. Ich versuche kurz zu erklären worum es geht und vielleicht kann mir ja jemand weiterhelfen! :')
Oben im Bild seht ihr bei "Messtyp" einen spezifischen Messtyp eingetragen, welcher mit den Grenzmaßen daneben verschiedene Toleranzen bilden. Das funktioniert alles schön und gut.
In der Untertabelle "Alle Messpunkte" wird in der Spalte "OK?" berechnet, ob das Teil in der Toleranz liegt. Hierzu benutze ich den Code: 

if 'Prüfbericht-Assistent'.'Kundenspezifische Toleranz' = 0 and
    'Prüfbericht-Assistent'.Messtyp != 4 then
    Messwert >= 'Prüfbericht-Assistent'.Minimum and
    Messwert <= 'Prüfbericht-Assistent'.Maximum
else
    if 'Prüfbericht-Assistent'.'Kundenspezifische Toleranz' = 0 and
        'Prüfbericht-Assistent'.Messtyp = 4 then
        Messwert >= 'Prüfbericht-Assistent'.'Minimum (Winkel)' and
        Messwert <= 'Prüfbericht-Assistent'.'Maximum (Winkel)'
    else
        if 'Prüfbericht-Assistent'.'Kundenspezifische Toleranz' = 1 and
            'Prüfbericht-Assistent'.Messtyp != 4 then
            Messwert >= 'Prüfbericht-Assistent'.'Minimum (kundenspezifisch)' and
            Messwert <= 'Prüfbericht-Assistent'.'Maximum (kundenspezifisch)'
        else
            if 'Prüfbericht-Assistent'.'Kundenspezifische Toleranz' = 1 and
                'Prüfbericht-Assistent'.Messtyp = 4 then
                Messwert >= 'Prüfbericht-Assistent'.'Winkel-Min. (kundenspezifisch)' and
                Messwert <= 'Prüfbericht-Assistent'.'Winkel-Max. (kundenspezifisch)'
            end
        end
    end
end

Nun wie die Profis bestimmt schon festgestellt haben ändert sich die Antwort im "OK?" Feld, wenn ich den Messytp ändere. Allerdings möchte ich Werte von verschiedenen Messtypen messen, die in die Untertabelle eingetragen werden, und das "OK?" Feld soll sozusagen mit dem Messtyp berechnen, der bei der Werteintragung ausgewählt war.
Das Ziel ist es mehrere Teile für eine Kategorie zu messen, und dann zur nächsten Kategorie (Messtyp) zu gehen, ohne dass sich die Antworten bei "OK?" ändern. Ich hänge euch noch eine Kopie der Datenbank an. Vielleicht kann mir ja jemand helfen!
Liebe Grüße, Jan

4 Antworten

null
    • pma_mgmt
    • vor 21 Stunden
    • Gemeldet - anzeigen

    Ich würde wie folgt vorgehen: 

    Eine Untertabelle Messungen erstellen mit Feldern: 
    kundenspezifische Toleranz
    Messtyp
    Messwert
    ja/nein-Feld Resultat mit "schreibbar wenn" "false" (kann nur durch Skripte geändert werden, nicht durch Menschen).

    Dann würde ich in Trigger nach Änderung in alle drei Felder schreiben 

    if Toleranz!=null and Messtyp!=null and Messwert!=null then
    HIER DEINE LOGIK, z.B. if Messwert>Minimum and Messwert<Maximum then true else false end
    end
    

    Dann hast du nämlich zu deinem spezifischen Prüfpunkt alle relevanten Parameter fest geschrieben. 

    Anschließend kannst du mit einer Formel 

    if cnt(Messungen[Resultat=false])>0 then "Messungen ungültig" else "Messungen gültig" end
    

    auf Ebene des Prüfobjektes prüfen, ob alle Untermessungen zum Objekt in Ordnung sind

    Grüße Peter

    • Jan_Heine
    • vor 18 Stunden
    • Gemeldet - anzeigen

    Hey Peter,
    danke für deine Antwort, aber ich glaube ich kann dir nicht ganz folgen. Was genau bewirkt das if-Statement damit das ja/nein Feld gleichbleibt?
    Liebe Grüße, Jan

      • pma_mgmt
      • vor 7 Stunden
      • Gemeldet - anzeigen

       Wenn ich dein Problem verstanden habe, dann gelten zum Zeitpunkt der Prüfung für das Prüfobjekt und für den Prüfpunkt gewisse Regeln. Diese Regeln musst du zum Prüfpunkt bzw. Prüfobjekt speichern, denn sollte sonst jemand in 5 Jahren die Toleranzen anpassen, dann würden plötzlich entweder alle bisher geprüften Objekte als ungültig definiert werden oder aussortierte Objekte plötzlich genehmigt werden. -> Deshalb keine Formel, sondern ein Datenfeld das sich berechnet auf Basis der aktuell gültigen Regeln.

      Dann würde ich eben als "'Prüfpunktergebnis':=if Regel1>Minimum and Regel1<Maximum then true else false end" hinter einen Trigger nach Änderung in die Felder schreiben, die für diesen Prüfpunkt relevant sind. Solltest du also messen, dann feststellen, dass es eigentlich doch ok ist, wenn für diesen Prüfling/Prüfpunkt größere Toleranzen gelten, dann würdest du die relevanten Felder ändern und die Prüfung würde erneut gerechnet werden. 

      Ich würde die Prüfung nicht als Formelfeld machen, denn ein Formelfeld ist ein Feld das jedes Mal auf dem Client berechnet wird. Wenn du also z.B. "Formel:=a+b+c+d" hast oder nur "Formelergebnis" abrufst, muss dein Client in der ersten Version sich alle a, b, c, d holen und rechnen und bei der zweiten Version einfach nur "Formelergebnis" laden. Auf der App kaum ein Problem, im Browser bei komplexen Prüfungen ein Problem. 

      Stell dir vor du willst ein Diagramm darstellen mit 100 Prüflingen die jeweils 1.000 Prüfungen haben. Dann müsstest du in Variante 2 100*1000 Werte von Ninox abfragen um das Diagramm darzustellen. Wenn du aber Variante 1 machst, dann müssten die 1000 Werte erst ihr Prüfergebnis berechnen aus weiteren 5 Elementen pro Prüfung -> 100*1000*5 Werte die von Ninox geladen und dann berechnet werden müssen. Noch einfacher wäre es dann: Wann immer du eine Prüfung hinzufügst, fügst du ein "Gesamtergebnis" auf Ebene des Prüflings ein. Dann brauchst du für das Diagramm nur 100 Abrufe.

    • Jan_Heine
    • vor 32 Minuten
    • Gemeldet - anzeigen

    Okayokay vielen Dank, dass du dir die Zeit genommen hast! Ich werde mal versuchen das irgendwie in Code zu realisieren! Ich melde mich dann!
    Vielen vielen Dank, Jan