0

Datenbank steuern mit Dashboard

Das Dashboard besteht aus einem einzigen Datensatz in der Tabelle "Zentrale" und dieser Datensatz enthält ein f(x)-Feld mit der Bezeichnung "Aktueller Tag" und mit der Funktion today().

Des weiteren gibt es in dieser Datenbank noch zwei andere Tabellen mit den Namen "Tage" und "Aufgaben". Da es an einem Tag mehrere Aufgaben gibt und jede Aufgabe immer nur einem Tag zugeordnet sein soll, besteht zwischen der Tabelle "Aufgaben" und der Tabelle "Tage" eine N:1-Verknüpfung als Komposition. Diese Verknüpfung benötige ich, um einen Ausdruck eines Tages mit den an diesem Tag zu erledigenden Aufgaben zu erstellen.

Die Tabelle "Tage" enthält 365 Datensätze dieses Jahres mit dem Feld "Datum-Tage". 

Wie kann ich nun mit Hilfe einer Befehlsschaltfläche "Neue Aufgabe" im Dashboard einen neuen Datensatz in der Tabelle "Aufgaben" erstellen, sodaß diese neue Aufgabe im Feld "Datum-Aufgabe" das Datum aus dem f(x)-Feld des Dashboards enthält und gleichzeitig mit dem entsprechendem Datensatz (also dem Tag mit dem gleichen Datum) aus der Tabelle "Tage" verknüpft ist?

Mir gelingt es schon nicht, mit Hilfe des folgenden Codes in der Befehlsschaltfläche "Neue Aufgabe" im Dashboard den Tag mit dem dazu gehörendem Datum zu finden:

let DatumHeute := 'Aktueller Tag';
let DatumTagHeute := first((select Tage)['Datum-Tage' = DatumHeute].'Datum-Tage');
alert(DatumTagHeute)

Auch bei der zweiten Variante:

let DatumHeute := 'Aktueller Tag';
let DatumTagHeute := first(select Tage where 'Datum-Tage' = DatumHeute).'Datum-Tage';
alert(DatumTagHeute)

bleibt die Anzeige alert(DatumTagHeute) ohne Inhalt.

Für einen Tip aus der Runde des Forums, mit dem sich das zuvor geschilderte Problem lösen läßt, wäre ich sehr dankbar und käme meinem Vorhaben bei der Erstellung einer Datenbank, mit der ich sämtliche an einem Tag anfallenden Aktivitäten (Aufgaben, Termine, Ausgaben, Budget-Kontrolle, Einkäufe, Ernährung und Kommunikation) planen und festhalten kann einen großen Schritt weiter. 

Bereits vorab herzlichen Dank für die Hilfe.

14 Antworten

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

    Hallo, wenn 'Datum-Tage' in der Tabelle 'Tage' ein Feld vom Typ Datum ist, dann müsste es beim alert() eigentlich auch angezeigt werden. Unter derselben Prämisse sollte das Anlegen einer neuen Aufgabe mit Verknüpfung zur Tabelle 'Tage' rein technisch gesehen z. B. so funktionieren (Button in der Tabelle 'Zentrale'):

    let DatumHeute := 'Aktueller Tag';
    let DatumTagHeute := first(select Tage where 'Datum-Tage' = DatumHeute);
    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.(Tage := DatumTagHeute);
    openRecord(NeueAufgabe)

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Zunächst erst einmal herzlichen Dank für die schnelle Hilfe. Bei dem Feld „Datum-Tage“ in der Tabelle „Tage“ handelt es sich um ein Datumsfeld. Den von Ihnen vorgeschlagenen Code habe ich genau so bereits ausprobiert. Da jedoch dieser Code wie - bereits in meiner Anfrage beschrieben - den entsprechenden Tag schon nicht findet, komme ich so nicht zum gewünschten Ergebnis. Kann es möglicherweise daran liegen, daß es sich bei dem Datum im Dashboard um ein Funktionsfeld und nicht um ein Datumsfeld handelt?

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Meine Vermutung von vorhin (12:42 PM) hat sich leider nicht bestätigt. Ich habe nämlich das f(x)-Feld im Dashboard durch eine echtes Datumsfeld ersetzt und das hat mein Problem in keiner weise gelöst.

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

    Dann bin ich auch ratlos. Ich habe das mal nachgestellt (mit fx-Feld), und bei mir funktioniert der Code. Sowohl im Web als auch auf dem Mac. Man könnte es "spaßeshalber" noch mal mit date() versuchen:

    let DatumHeute := date('Aktueller Tag');
    let DatumTagHeute := first(select Tage where date('Datum-Tage') = DatumHeute);
    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.(Tage := DatumTagHeute);
    openRecord(NeueAufgabe)

    Aber sonst habe ich leider keine Idee (außer natürlich, noch mal alle beteiligten Felder auf den Typ hin zu überprüfen).

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ich habe den Code gerade wie empfohlen - also mit date('Aktueller Tag') - ausprobiert. Das enttschäuende Ergebnis bleibt unverändert. Alle beteiligten Felder habe ich nochmals auf ihren Typ hin untersucht. Da ist alles in Ordnung.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Wenn der Aktuelle Tag immer heute ist, kann man das Feld 'Aktueller Tag' außer Acht lassen.

    ---

    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.Tage:=first(select Tage where 'Datum-Tage'=today());
    popupRecord(NeueAufgabe)

    ---

    Leo

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Leo, herzlichen Dank dafür, daß Sie auch versucht haben, mein Problem zu lösen. Ich habe es gerade genau so wie von Ihnen angeregt ausprobiert. Das Ergebnis ist leider enttäuschend. Die Aufgabe wird zwar erwartungsgemäß erstellt jedoch es fehlt die Verknüfung mit dem zum Datum passenden Tag. Weil im Datumsfeld 'Datum-Aufgaben' der neuen Aufgabe auch das entsprechende Datum stehen soll, habe ich Deinen Code wie folgt um eine Zeile ergänzt:

    ---

    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.('Datum-Aufgaben' := today());
    NeueAufgabe.(Tage := first(select Tage where 'Datum-Tage' = today()));
    popupRecord(NeueAufgabe)

    ---

    Wenn ich nun auf den Button "Neue Aufgabe" in der Tabelle "Zentrale" klicke, wird wieder eine neue Aufgabe erstellt und im Datumsfeld 'Datum-Aufgaben' steht das heutige Datum. Die Verknüpfung mit dem zum Datum passenden Tag fehlt aber immer noch.

    Anschließend habe ich den Code noch wie folgt erweitert:

    ---

    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.('Datum-Aufgaben' := today());
    let GesuchterTag := first(select Tage where 'Datum-Tage' = today());
    let GesuchterTagNummer := GesuchterTag.Nr;
    NeueAufgabe.(Tage := GesuchterTagNummer);
    popupRecord(NeueAufgabe)

    ---

    Am enttäuschenden Ergebnis ändert sich jedoch nichts. Um den Fehler einkreisen zu können, habe ich noch die Code-Zeile:

    ---

    alert("Das Datum des Tages lautet: " + GesuchterTag.'Datum-Tage') 

    ---

    eingefügt, also:

    ---

    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.('Datum-Aufgaben' := today());
    let GesuchterTag := first(select Tage where 'Datum-Tage' = today());
    alert("Das Datum des Tages lautet: " + GesuchterTag.'Datum-Tage');
    let GesuchterTagNummer := GesuchterTag.Nr;
    NeueAufgabe.(Tage := GesuchterTagNummer);
    popupRecord(NeueAufgabe)

    ---

    Nun wird der Text "Das Datum des Tages lautet: " zwar angezeigt, jedoch ohne Datum und die Verknüpfung zum zugehörigen Tag fehlt natürlich immer noch. Scheinbar ist es nicht möglich, aus meiner als Dashboard genutzten Tabelle "Zentrale" heraus auf die Datensätze der Tabelle "Tage" zuzugreifen. Für mich grenzt das schon an Zauberei. Vor allem wenn man sehen kann, daß man mit dieser eigentlich genialen Datenbank Ninox doch sonst so alles anstellen kann.

    Vielleicht findet jemand aus diesem Forum heraus den von mir offensichtlich gemachten Fehler oder findet einen anderen Weg, wie man mein Problem lösen kann.

    Bereits vorab nochmals herzlichen Dank an alle, die bisher versucht haben, mir zu helfen und auch an die, die es hoffentlich auch weiterhin versuchen.

    Bruno

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

    Moin Bruno, lege die Datenbank doch mal irgendwo zum Download auf einen Server, dann können wir mal reinschauen. Ansonsten ist es schwierig, dem Fehler auf die Spur zu kommen, denn an sich ist der Code ja nichts Besonderes und funktioniert bei mir wie gesagt auch problemlos.

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter, ich versuche hier mal, meinen Problemfall über Dropbox freizugeben:

    https://www.dropbox.com/s/xk25a4i6u48x4kv/Tagebuch.ninox?dl=0

    Ich hoffe, daß mir das auf diese Weise gelungen ist und mein rätselhafter Fehler oder eine andere Lösung für mein ganz am Anfang dieses Forums-Beitrages geschilderte Vorhaben gefunden werden kann.

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

    Danke, ich schaue es mir mal an.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Interessant. Die Formel funktioniert nur wenn du statt 'Datum-Tage' - date('Datum-Tage') eingibst. 

    Leo

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

    Der Code hat in deiner DB tatsächlich auch bei mir nicht funktioniert. Nun habe ich beim 'select' noch mal beide Vergleichswerte in date() gefasst, und so geht es. Warum? Keine Ahnung, in dem von mir nachgestellten Szenario ging es auch so. Probier es doch einfach mal bei dir aus:

    let DatumHeute := 'Aktueller Tag';
    let DatumTagHeute := first(select Tage where date('Datum-Tage') = date(DatumHeute));
    let NeueAufgabe := (create Aufgaben);
    NeueAufgabe.(Tage := DatumTagHeute);
    NeueAufgabe.('Datum-Aufgaben' := DatumHeute);
    popupRecord(NeueAufgabe)

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

    Ah, Leo bestätigt es. Hoffentlich funktioniert es jetzt bei dir mit dem date().

    • Bruno_Quinting
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter und Leo. Ich habe eueren Rat befolgt und - oh Wunder - jetzt funktioniert es auch bei mir wie ursprünglich beabsichtigt. Nochmals vielen lieben Dank für euere Mühe und natürlich auch für die Lösung meines doch eigentlich recht kleinen Problems.

    Dieses kleine Code-Schnipsel ist Teil eines viel umfangreicheren Projektes. Ich arbeite schon seit einiger Zeit an der Erstellung einer Datenbank, mit der ich sämtliche an einem Tag anfallenden Aktivitäten (Aufgaben, Termine, Ausgaben, Budget-Kontrolle, Einkäufe, Ernährung und Kommunikation) planen und festhalten kann. Dieses Funktion benötige ich, um einen Ausdruck mit sämtlichen an einem Tag vorgesehenen Aktivitäten und Vorhaben erstellen zu können. Um diese Datenbank aber hier vorstellen zu können, ist es zur Zeit noch viel zu früh und da liegt noch eine Menge Arbeit und sicherlich auch noch einiges an Lernaufwand vor mir.

    Also nochmals: Danke für eure Mühe und für die Lösung.

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 14Antworten
  • 3653Ansichten