0

Ansicht über nicht ausgewählte Daten aus verknüpfter Tabelle

Guten Morgen,

für ein Hilfsprojekt in Bolivien möchten wir in unserer Ninox-Datenbank die Essensausgabe für ca 50 Familien dokumentieren (die aufgrund der Corona-Pandemie sich kein Essen mehr leisten können). Dazu haben wir eine Tabelle angelegt mit allen Familien, die sich für die Essensausgabe registriert haben. Eine andere Tabelle zeigt dokumentiert die tägliche Essensausgabe. Beide Tabellen sind nun so mit einander verknüpft, dass wir in der Essensausgabe-Tabelle die Familien aus der Familien Tabelle eintragen können, wenn diese ihr Essen abgeholt haben. Nun wollen die bolivianischen Verantwortlichen während der Essensausgabe sehen, welche Familien nochn nicht da waren. Hat jemand eine Idee, wie ich das hinkriege?

Bildschirmfoto 2020-07-17 um 09.23.41

In dem roten Kasten entsteht dann eine Auflistung der Familien, die schon das Essen abgeholt haben. Darunter soll nun eine Ansicht/Tabelle entstehen, die die Familien auflistet, die noch nicht in der obigen Tabelle eingetragen wurden.

Ich hoffe es ist einigermaßen verständlich.

Wir würden uns sehr über einen Tipp freuen :) Vielen Dank und liebe Grüße

16 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, klingt nach 'nem guten Projekt. Wenn ich es inhaltlich richtig verstehe, dann soll jeden Tag bei der Essensausgabe direkt vor Ort jede abholende Familie quasi abgehakt werden.

    Die naheliegendste Möglichkeit, die mir dazu einfällt, wäre eine Tabelle, in der für jeden Tag und jede Familie ein Datensatz existiert. Dort könnte man ein Ja-/Nein-Feld namens "Abgeholt" oder so erstellen und entsprechend auswerten.

     

    Ich habe der Einfachheit halber mal eine kleine, simple Beispiel-DB dazu erstellt. Sie enthält drei Tabellen: 'Familien', 'Tageslisten' und 'Essensausgabe', wobei über letztere die Tageslisten erstellt und "abgehakt" würden.

    https://www.dropbox.com/s/3wqj34slphmt219/BOL_Essensausgabe.ninox?dl=0

    • Julius
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Guten Abend,

    vielen vielen Dank! Ich habe mir gerade die DB angeguckt. Das ist schon ziemlich perfekt und so schon sehr gut für uns nutzbar.

    Ein paar Fragen kamen uns noch auf:

    - habe ich es richtig verstanden, dass ich zur Dokumentation von der Tabele der Familien ausgehe und dann jede Familie durchgehe und ankreuze, ob sie ihre Portionen abgeholt haben, oder nicht? Am besten wäre es für uns, wenn wir von der Tabelle "Essensausgabe" ausgehen. Nur sind die Ansichten (offen und abgeholt) hier leer und ich kann keine Familie hinzufügen. Gut wäre, wenn prinzipiell alle Familien erstmal in der Ansicht "offen" stehen würden und man dann in der Ansicht auf die Familie klickt und die Auswahl auf "abgeholt" ändert. Ist das irgendwie möglich? Vielleicht mit einer Befehl-Taste, die man am Anfang der Essensausgabe anklickt, sodass sich die Ansicht "offenen" füllt?n

    - ist es möglich die Anzahl an abgeholten Portionen einer Familie manuell zu verändern? Es kommt wohl beispielsweise gelegentlich vor, dass eine Familie ausnahmsweise einige Portionen mehr mitnimmt. Das Feld der "Portionen" ist ja eine Berechnung, daher weiß ich nicht, wie ich die Anzahl der Portionen in Ausnahmefällen individuell für nur einen Tag anpassen kann.

    - Ist es möglich in einer der Tabellen eine Grafik (als Ansicht) anzeigen zu lassen, wo fortlaufend angezeigt wird an welchen Tagen (X=Datum) wie viele Portionen (Y=Summe der Portionen) abgeholt wurden? Ich bekomme es leider nicht hin. Ansonsten geht es natürlich auch über Excel.

    Herzlichen Dank für die tolle Hilfe und dein Engagement!

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, was heißt "am besten WÄRE ES für uns, wenn wir von der Tabelle 'Essensausgabe' ausgehen". Mich irritiert der Konjunktiv, denn genauso ist es ja gedacht (siehe Screenshot):

    Nachdem man im Formular 'Essensausgabe' per Button eine Tagesliste für das vorgegebene Datum erstellt hat, erscheinen in der Ansicht "Offen" alle Familien. Wählt man eine Familie aus, öffnet sich der dazugehörige Datensatz für diesen Tag. Dort klickt oder tippt man auf 'Abgeholt' = "Ja", dann wird dieser Datensatz aus der Ansicht "Offen" entfernt und statt dessen in "Abgeholt" aufgelistet.

    Ich hatte beim Test Tageslisten für den 15., 16. und 17.07.2020 erstellt. Wenn du eines dieser Daten wählst, dann müssten sich die Ansichten entsprechend füllen. Und wenn du bspw. den 18.07.2020 einstellst, dann sind sie Ansichten erst mal leer, solange man keine Tagesliste per Button erstellt.

    Was die anderen Punkte betrifft: Klar, in der Tagesliste ein Zahlenfeld für die Menge der tatsächlich abgeholten Portionen hinzuzufügen, wäre überhaupt kein Problem.

    Auch eine grafische Darstellung der geplanten und abgeholten Portionen wäre machbar. Ich würde aber gerne erst mal klären, ob das bisher so klappt wie oben beschrieben.

     

    NX_BOL_Essensausgabe01

    • Julius
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi,

    danke für deine Nachricht. Ich hatte das falsch verstanden. ich bin fälschlicherweise davon ausgegangen, dass man die Tagesliste am ende des Tages drückt. Genau so, wie du sagst funktioniert es für uns gut.

    Ich probiere das mal mit dem Zahlenfeld der abgeholten Essensportionen und der Grafik dazu.

    Hast du noch eine Idee, wie man die abgeholten Portionen in Ausnahmefällen manuell verändern kann?

    Vielen vielen Dank nochmal für deine tolle Hilfe!

    Lieben Gruß und einen guten Wochenstart

    Julius

    • Tacho
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Copytexter,

    wie müßte der Code für eine Befehlsschaltfläche in der Tabelle Essensausgabe aussehen, welche alle offenen Einträge des gewählten Datums auf abgeholt setzt?

    Gruß
    Tacho

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Julius: Ok, dann bin ja schon mal beruhigt, dass wr dasselbe meinen. ;)

    Die Sache mit der abgeholten Menge ist relativ einfach machbar: Einfach ein entsprechendes Zahlenfeld in der 'Tagesliste' erstellen (siehe Screenshot).

    Damit das in der Situation vor Ort aber möglichst effizient geht, würde ich dieses neue Feld mit der Zahl der vorgesehenen Portionen vorbelegen. Dann muss man die nur ändern, wenn sie auch wirklich abweicht. Dazu kann man einen Trigger "Nach Änderung" im Ja-/Nein-Feld 'Abgeholt' nutzen:

    if Abgeholt = true then
        Portionen_geholt := Portionen_geplant
    end

    Zusätzlich könnte man für das Feld 'Portionen_geholt' unter "Nur anzeigen, wenn" auch noch angeben:

    Abgeholt = true

    Das hieße, sobald 'Abgeholt' auf Ja gesetzt würde, erschiene das Feld 'Portionen_geholt' mit der Anzahl der geplanten Portionen und könnte ggf. geändert werden.

     

    Und um die Sache abzurunden, könnte man das Feld 'Portionen_geholt' auch noch mit der Zahl 0 vorbelegen. Dazu müsste man in das Buttonscript zum Erstellen der Tagesliste nach dem "create" nur folgende Zeile einfügen:

    [...]
       newTA.(Portionen_geholt := 0)
    [...]

    Dann könnte man auch das Feld 'Portionen_geholt' für Auswertungen nutzen.

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Tacho: Die einfachste Lösung wäre wohl

    let myDate := Datum;
    (select Tageslisten where Datum = myDate and Abgeholt = false).(Abgeholt := true)

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ups, Screenshot vergessen ... 🤭

     

    NX_BOL_Essensausgabe02

    • Klaus_Oppermann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Super Axel, klasse Support :-) und auch ein tolles Projekt, Julius!

    • Tacho
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Copytexter,

    merci!

    Tacho

    • Julius
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielen Vielen Dank für die tolle Hilfe. Die Dokumentation klappt super und das bolivianische Team kommt mit der Eingabe gut zurecht.

    Nur einen Wunsch konnte ich den Bolivianern noch nicht erfüllen: Sie wünschen sichneben der Ansicht der "offenen" Familien ein Suchfeld, wo sie nach einem Nachnamen suchen können. DIe Bolivianer haben gerne viele Nachnamen. Die Familien geben bei der Essensausgabe nicht unbedingt den Nachnamen an, der bei Ninox in dem Textfeld "NAchnamen" an erster stelle steht. Daher ist es wohl manchmal etwas zeitaufwendig die richtige Famile in der Ansicht "offene Familen" rauszusuchen, um die Abholung einzutragen. Gibt es eine Möglichkeit ein Suchfeld einzurichten, welches auf die Ansicht der offenen Familien zugreift und in dem Feld "Nachnamen" nach dem gesuchten Nachnamen sucht? Die Suche müsste eben aus dem Textfeld "Nachnamen" auf alle Nachnamen suchen, nicht nur nach dem Namen, der an erster Stelle steht. 

     

    Ansonsten sind wir aber sehr froh und dankbar über die tolle Unterstützung und dass die EIngabe schon su super funktioniert :)

    Herzlichen Dank und liebe Grüße

    Julius            

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, ich hatte deine Frage übersehen, sorry. Für die Suchfunktion kannst du ein einfaches Texfeld hinzufügen ('Namenssuche'), über der Ansicht "Offen" platzieren und den Code in der Ansicht selbst wie folgt ergänzen:

    let myDate := Datum;
    if Namenssuche = null then
        select Tageslisten where Datum = myDate and Abgeholt = false
    else
        let myName := lower(Namenssuche);
        select Tageslisten where Datum = myDate and Abgeholt = false and contains(Familien.lower(Name), myName)
    end

     

    Bedeutet: Wenn im Feld 'Namenssuche' etwas eingetragen wurde, dann wird die Ansicht auf jene Datensätze gefiltert, bei denen im Namen die zu suchende Zeichenfolge vorkommt. Klein- oder Großschreibung wären dabei egal. Bei der Eingabe "pad" beispielsweise würden nur noch Datensätze der Familien mit "Padilla" angezeigt.

     

    Um das Suchfeld schnell wieder zu leeren (und wieder alle "offenen" anzuzeigen), könnte man daneben zusätzlich einen Button mit folgender Formel platzieren:

     

    Namenssuche := null

     

    Das wäre aber optional, man kann das Feld natürlich auch manuell leeren (hineinklicken und Inhalt löschen).

     

    Ach so, die Feldbezeichnung 'Name' beim "select" müsstest du eventuell durch 'Familienname' ersetzen. Um nicht durcheinander zu kommen, habe ich hier die Bezeichnungen aus meiner Tabelle genommen. 

    • Julius
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi. Entschuldige die späte Antwort. Ich bin jetzt erst dazu gekommen die Suchfunktion einzurichten. Es hat etwas gebraucht, weil die Bezeichnungen in meinen Tabellen mitlerweile auf Spanisch sind und ich das erst verstehen musste. Aber jetzt funktioniert es super. Vielen Dank!

    Wir sind nun noch am aufstocken und nehmen neue Familien in die Essensausgabe auf. Nun haben wir das "Problem", dass die Tagesliste am Anfang der Essensausgabe ausgelöst wurde und sich danach neue Familien registrieren, die dann nicht in der bereits laufenden Tagesliste auftauchen. Gibt es eine möglichkeit die aktuelle Tagesliste der laufenden Essensausgabe zu aktuallisieren, sodass eine zwischendurch neu registrierte Famile in der Tagesliste auftaucht?

     

    Nochmal vielen vielen Dank! und ein schönes Wochenende

    Julius

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, damit der Vorgang des Erfassens während der Essensausgabe möglichst schnell geht, würde ich das direkt in der Tabelle 'Essensausgabe' machen. Man nehme:

     

    1 Ja-/Nein-Feld 'NeueFamilie' ("Standardwert": Nein)
    1 Schaltfläche "Neue Familie" ("Feld nur anzeigen, wenn:" NeueFamilie = false)
    1 Textfeld 'Name' ("Feld nur anzeigen, wenn:" NeueFamilie = true)
    1 Zahlenfeld 'Portionen' ("Feld nur anzeigen, wenn:" NeueFamilie = true)
    1 Schaltfläche "Anlegen"  ("Feld nur anzeigen, wenn:" NeueFamilie = true)

     

    Code für die Schaltfläche "Neue Familie":

     

    NeueFamilie := true

     

    Code für die Schaltfläche "Anlegen":

     

    if Name then
        let me := this;
        let newF := (create Familien);
            newF.(Name := me.Name);
            newF.(Portionen := me.Portionen);
        let newT := (create Tageslisten);
            newT.(Familien := newF);
            newT.(Datum := me.Datum);
            newT.(Abgeholt := true)
    end;
    NeueFamilie := false;
    Name := null;
    Portionen := null

    Sichtbar ist normalerweise nur die Schaltfläche "Neue Familie". Klickt man darauf, erscheinen die Felder 'Name' und 'Portionen' sowie die Schaltfläche "Anlegen". Nun trägt man die beiden Werte ein und klickt auf "Anlegen". Daraufhin wird sowohl in der Tabelle 'Familien' ein Datensatz angelegt als auch in der 'Tagesliste' unter "Abgeholt".

     

    Wenn man die Schaltfläche "Neue Familie" versehentlich betätigt hat, lässt man das Feld für den Namen einfach leer und klickt gleich noch mal auf "Anlegen". Dann verschwinden die Felder wieder und es passiert gar nichts.

    • Julius
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi!

     

    super, vienen Dank!

    Der Code für die Schaltfläche "Neue Familie":  NeueFamilie := true  funktioniert irgendwie noch nicht. Sonst scheint alles gut zu funktionieren.

    Kann ich die Schaltfläche "Neue Familie" nicht auch einfach weglassen und nur das Ja-/Nein-Feld 'NeueFamilie' benutzen? Darauf bauen ja nie anderen Felder auf.

     

    Vielen Dank und einen schönen Abend!

    Lieben Gruß! Julius

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Julius, ich sehe gerade, dass ich oben vergessen hatte, das Ja-/Nein-Feld zu "verstecken" (mit der Angabe "false" bei "Nur anzeigen, wenn"). Wenn es ständig sichtbar ist, stellt sich in der Tat die Frage, warum man zum Umschalten zusätzlich noch eine Schaltfläche braucht. ;)

     

    Aber eigentlich war es so gedacht, dass das Ja-/Nein-Feld NICHT sichtbar ist und quasi als versteckter Schalter fungiert. Denn unter der Prämisse, dass die Lösung von verschiedenen Personen genutzt wird, ist so eine Schaltfläche für die Bedienung m. E. deutlich transparenter. Mir ist auch nicht klar, was an der Zeile "NeueFamilie := true" falsch sein könnte (wobei 'NeueFamilie' halt für den Namen des Ja-/Nein-Feldes steht). Wie äußert sich denn dieses "funktionert irgendwie noch nicht"?

     

    Davon abgesehen kannst du die Schaltfläche aber natürlich auch weglassen und direkt mit dem Ja-/Nein-Feld arbeiten, wenn dir das lieber ist.

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 16Antworten
  • 2078Ansichten