0

Kann es sein, dass bei den Berechnungen in Tabellenspalten im Server gerade etwas furchtbar schief läuft?

Ich kann gar ned richtig beschreiben was in unserer Datenbank gerade abgeht, aber ich versuchs mal:

 

Ich habe ein Formelfeld mit folgenem Code:

let recordID := Nr;
if 'Bar / Konto / Kreditkarte' = 3 then
let array1 := 'Rechnung ist folgender Kreditkartenabrechnung zugewiesen';
if count(array1) < 1 then icon("x") else icon("check") end
else
let array2 := (select 'M - Rechnungen - E/A' where Rechnungen = recordID and 'Einnahmen / Ausgaben' != null);
if count(array2) < 1 then icon("x") else icon("check") end
end

und eine Tabellenspalte die den Inhalt dieses Formelfeldes anzeigen soll. Also "check" oder "x".

Bei manchen (den meisten) Datensätzen wird in der Tabelle aber "x" angezeigt obwohl im Formelfeld "check" steht.

 

Bin gerade etwas ratlos, sind wir die einzigen wo solche Probleme auftreten? Das erste Mal bemerkt habe ich es heute um ca. 15.30 Uhr. 

Letzte Woche hat noch alles Funktioniert wie es soll.

???

9 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Stuhrli,

    Das Feld 'Rechnung ist folgender Kreditkartenabrechnung zugewiesen' ist doch ein Verknüpfungsfeld-richtig? Das feld kann enwerder leer sein oder mit einem (nur einem) Datensatz verknüpft.

    Die Tabelle 'M - Rechnungen - E/A' ist aber eine Untertabelle von Rechnungen. und kann auch mehrere Datensätze haben. Wenn die Verknüpfung auch so heißt wie die Tabelle dann würde ich die Formel so schreiben:
    ---
    let me:=this;
    if   'Bar / Konto / Kreditkarte' = 3 and  'Rechnung ist folgender Kreditkartenabrechnung zugewiesen'  or 'Bar / Konto / Kreditkarte' != 3 and cnt('M - Rechnungen - E/A'['Einnahmen / Ausgaben']) >0 then  icon("check") else icon("x")
    end

    ---

    Leo

    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Leonid

     

    Vielen Dank für deine Antwort.

    Es handelt sich bei beiden Arrays um N:N verbindungen mittels Mitteltabelle. Es geht mir auch nicht um die Formel die ich gepostet habe, die funktioniert wie sie soll. Das Ergebnis wird nur in der Tabelle bei manchen Datensätzen nicht richtig angezeigt. Ich denke das angefügte Bild macht es deutlich.

    Des weiteren habe ich festgestellt, dass folgende Formel auch falsch zählt. (Vermutlich so wie in der Tabelle und nicht den tatsächlichen Inhalt des Formelfeldes)

    cnt((select Rechnungen)['Buchungszeile zugewiesen' = icon("x")])

    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen
    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bei anderen Formeln die Datansätze zählen sollten (ähnlich wie oben) sind gestern nachmittag die Werte gesprungen ohne dass Eingaben passiert sind. Heute scheint zumindest das wieder stabil zu sein.

    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Noch ergänzend, wir arbeiten mit der Browser Version.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Versuche es bitte in deiner Formel die where Bedingungen durch Eckklammern zu ersetzen:

     

    let recordID := Nr;
    if 'Bar / Konto / Kreditkarte' = 3 then
    let array1 := 'Rechnung ist folgender Kreditkartenabrechnung zugewiesen';
    if count(array1) < 1 then icon("x") else icon("check") end
    else
    let array2 := (select 'M - Rechnungen - E/A' [Rechnungen = recordID and 'Einnahmen / Ausgaben' != null]);
    if count(array2) < 1 then icon("x") else icon("check") end
    end

    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Dank dass du dir Zeit für mein Problem genommen hast.

    Mit den eckigen Klammern dürfts wieder funktionieren.

    Ist aber nicht gerade vertrauensbildend wenn Formeln von einem Tag auf den anderen nicht mehr funktionieren weil (wie ich vermute) am System was geändert wurde.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Solche Konstrukte haben auch früher nur auf gut Glück funktioniert. die Rechenintensive Funktionsfelder verzügern das System enorm und ab einer kritischen Anzahl an Datensätzen schaft Ninox es nicht mehr, die Daten vom Server auf UI zu laden. Die Verwendung von Eckklammern zwingt Ninox dazu, für die Tabelle ausschließlich die Browser-Speicher zu verwenden, was für solche Darstellungen natürlich viel schneller ist. Ich würde  hier überlegen die Funktionsfelder durch normale Symbolfelder zu ersetzen und diese mit dem Trigger nach Änderung zu steuern.

    Leo

    • EJ Lighting Productions
    • Stuhrli
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Leonid

    Vielen Dank für die Erklärung und den Experten-Tipp.

    Umstellung von Funktionsfeldern auf Symbolfelder werd ich mir anschauen.

    lg

    Stuhrli