0

Tabellenspalte nach bestimmten Wert prüfen und Anzahl anzeigen, soo kompliziert?

Hallo hallo Datenbank Experten, 

Nach längerer Pause mal wieder ein Problem, wo Eure Hilfe gebraucht wird ( habe 4 Tage im Forum gesucht, aber dazu nix gefunden, weil es eigentlich so einfach ist # für Euch # )

In "Tabelle1" nur ein Zahlenfeld "Zahl" mit durchaus doppelt vorkommenden Einträgen pro Satz.

In "Tabelle2" nur ein Formelfeld "Zeige" mit einer Abfrage die ich aber nicht hin bekomme.

Mit der Formel sum((select Tabelle1).[cnt(number(Zahl) = 55)])  glaubte ich ,das mir die Gesamt-Anzahl der Einträge mit dem WERT 55 gezeigt wird. 

Ergebnis bei 6 Dateneinträgen in der Tabelle1 = 6 , obwohl die Zahl 55 exakt nur 3 mal vorkommt also 3 richtig wäre.

Dann habe ich verschiedenste  Formelumstellungen probiert, cnt mit count ersetzt,  number weggelassen, auch per Variable  let ....  experimentiert = nix.

Mit  let blabla := if Zahl = 55 then "ja" else "nein" end;
blabla

sogar abgefragt ob 55 vorhanden ist. pro Datensatz steht dann ja oder nein, aber ich brauch die Anzahl.  Mit like auch nicht, da dann 355 wohl auch gezählt würde.

Das schunglieren  mit () und  ,, und [ ] ist der Wahnsinn, falsche Stelle und nix passiert.....auch die rote Fehlerzeile im Editor wirft noch mehr Fragen "Zeile 1 Spalte 37"  statt "Zeile 1 Stelle 37"  etc...

Irgendwas ist mit meiner Syntax richtig?? Weiß jemand Rat?

Danke!

8 Antworten

null
    • Florian_Wisser
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Finde zwar auf anhieb den Fehler nicht aber so geht es

     

    let a := (select Tabelle3 where Zahl = 55);
    cnt(a)

     

    lg

    • OnLimit_Alf
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo, vielen Dank! Ich sagte ja viel zu einfach....... = funktioniert.

    Das Prozedere funktioniert aber nicht, wenn "Zahl" kein Zahlenfeld sondern (habe es mal auf die Spitze getrieben) auch ein Formelfeld ist, welches  z. Bsp.  eine Summe aus anderen Zahlenfelder zieht.

    Oder anders: Zahlenfeld "A" = 22  , Zahlenfeld "B" = 33 ,  Formelfeld  "Zahl" = 55  (Summe aus A und B).

    dann  Formelfeld "Zeige" = 0 (anstatt 1, da ja "55" 1x vorkommt)

    liegt es vielleicht daran, das entscheidend ist welche App Version installiert ist?

    Nutze Ninox auf Handy und auf Tablet, aber unterschiedl. App version

    oder kann man mit einem Formelfeld kein anderes Formelfeld abfragen?

    • Maurice
    • vor 3 Monaten
    • Gemeldet - anzeigen

    In sum((select Tabelle1).[cnt(number(Zahl) = 55)]) der Punkt zu viel. sum und cnt ist wie eine Doppelung.

    Probiere doch mal, ob

    cnt((select Tabelle1)[Zahl = 55])

    was nicht anderes als die Kurzform von Florians Variante ist.

    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo OnLimit_Alf. Auch ein Formelfeld kann abgefragt werden, wenn es vom Typ "number" ist. Wenn Dein Ergebnis nicht plausibel ist, dann gibt es einen Scriptfehler. Oft sind es Veränderungen der Typen, d.h. die Ergebniszahl wird im Formelfeld mit styled() schön farbig gemacht und ergibt dann aber das Format "styled". Das ist dann eine Typumwandlung und Du kannst damit nicht mehr rechnen. Bloß so eine Idee.  Mirko

    • OnLimit_Alf
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Dank für Eure Hilfe. Habe eine einfache Testdatenbank gebastelt, in der Eure Formeln funzen, auch wenn man ein Formelfeld per "Stiloption" hübscher macht.

    Der Fehler liegt wahrscheinlich doch daran ( wie von Mirko erwähnt) , das mein Prozedere zuviel mit Formeln, Mehrfachauswahlfeld. , Verknüpfg.  u.ä. verschachelt ist und irgendwo sich tatsächlich der Datentyp geändert hat.

    Bleibt halt nur, alles umzubasteln.

      • mirko3
      • vor 3 Monaten
      • Gemeldet - anzeigen

      Zum prüfen des Datentyps gibt es zwei Funktionen, die es erleichtern.

      debugValueInfo(Feldname) gibt Datentyp und Inhalt wieder

      typeof(Feldname) nur den Datentyp

      So kann man Teile seines Scripts, das ganze Script, Variablen oder Felder debuggen.

    • Florian_Wisser
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Ich mach mir oft in solchen fällen einfach ein Hilfsformelfeld mit der Zwischenrechnung also z.B. in das schonmal die Nummer als Zahl geschrieben wird und arbeite dann damit weiter. ich weiß das ist umständlicher aber manchmal sind dann die langen Formeln etwas einfacher nachzuvollziehen. lg

    • OnLimit_Alf
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Leute wie auch immer, nochmals Dank an Euch!

    Ich habe es am Ende über eine Subtraktion zweier anderer  Formeln gelöst, also keine direkte Abfrage einer Zelle, sondern ein kleiner Umweg. Hauptsache Ergebnis ist richtig. Für die Bastler da draußen die Ninox auch nur als Hobbydatenbank nutzen, kleiner Tipp, vermeidet möglichst Tabellen und Felderbezeichnungen mit Umlauten wie ä, ü, ö etc.....Denn das mag der Formeleditor anscheinend nicht so gern  (Erklärung: ich hatte die Tabelle "Dashboard" in "Übsi" umbenannt, oder hatte ein Formelfeld "Fahrprämie". Beides wurde im Editor nicht gefunden, obwohl korrekt geschrieben....zumindest in der Android-app.

Content aside

  • Status Answered
  • vor 3 MonatenZuletzt aktiv
  • 8Antworten
  • 78Ansichten
  • 4 Folge bereits