0

Ein neuen Datensatz über eine Befehlsschaltfläche in Untertabelle anlegen funktioniert nicht

Guten Morgen,

in möchte gerne mit Hilfe einer Befehlsschaltfläche einen neuen Datensatz für einen Teilnehmer in einer Untertabelle erstellen. 

Dadurch sollen zwei Felder direkt gefüllt werden, die ich ansonsten mit dem Plus-Zeichen neu anlegen oder mit der Lupe suchen kann.

Mit folgendem Code habe ich es versucht. Die beiden Felder werden aber nicht gefüllt:

let me := this;
let newGF := (create Geldfluss);
newGF.Teilnehmer.(Name := me);
newGF.'Kicktipp Saison'.(Tippername := me);
popupRecord(newGF)

Wo ist denn da der Fehler in der Formel.

Viele Grüße
Markus

20 Antworten

null
    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Markus,

    Deine Zuweisung der Variablen ist nicht ganz richtig. Ich habe Dir mal ein Beispiel hochgeladen:

    https://www.dropbox.com/s/rgcq6gsxgy5ebir/fuer_Markus.ninox?dl=0

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Benjamin,

    besten Dank für das Beispiel. Ok, das leuchtet mir ein.

    Nach eine Verständnisfrage:

    Mitglieder1

    Wird nicht eigentlich durch die Zeile

    myNewEntry.(Mitglieder := this.Mitglieder);

    erreicht, dass schon der richtige Datensatz, aus dem heraus ich einen neuen Eintrag in der Untertabelle „Geldfluss" anlege, dort ausgewählt wird? 

    Mitglieder2

    Hier muss ich den ja aus der Liste ALLER Mitglieder auswählen. 

    Oder habe ich da einen Denkfehler?

    Viele Grüße

    Markus

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Markus,

    mit der Zeile "let me := this" weist Du der Variablen "me" den kompletten Inhalt des Datensatzes zu, weshalb Du mit "me.Name" an den Namen des richtigen Datensatzes kommst. Also ja, Du hast vollkommen Recht, das der richtige Datensatz dadurch zugewiesen wurde, da in der Variablen "me" auch die Nummer bzw. ID des Datensatzes enthalten ist.

     

    In dem Feld "Mitglieder" der Tabelle Geldfluss ist also die richtige Verknüpfung zum richtigen Datensatz gesetzt. Damit Du aber die Daten in die Felder Vorname und Nachname bekommst, musst Du Ninox das auch sagen, dazu dient dann die Zeile "myNewEntry.(Vorname := me.Vorname)". Vorname = Das Feld in der Untertabelle Geldfluss und me.Vorname ist der Inhalt des Datensatzes Vorname aus der Tabelle Mitglieder.

     

    Ich hoffe ich hab das nicht zu kompliziert erklärt :-P

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ach ja jetzt hab ich gesehen was Du meinst. Folgende Zeile musst Du in dem Button abändern.

     

    myNewEntry.(Mitglieder := me); statt Mitglieder := this.Mitglieder

     

    Mein Fehler :-(

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen
    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Benjamin,

    kein Problem  😜 und sehr cool. Mit deiner Erklärung habe ich das jetzt auch verstanden und sollte in der Lage sein, das in meine Datenbank zu übertragen. Genauso hab ich mir das vorgestellt.

    Bestem Dank für deine Hilfe 👍🏼

    Sonnige Grüße

    Markus

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Benjamin,

    kein Problem  😜 und sehr cool. Mit deiner Erklärung habe ich das jetzt auch verstanden und sollte in der Lage sein, das in meine Datenbank zu übertragen. Genauso hab ich mir das vorgestellt.

    Bestem Dank für deine Hilfe 👍🏼

    Sonnige Grüße

    Markus

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Freut mich und immer wieder gern! Gutes gelingen :-)

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Benjamin,

    bei der Umsetzung für meinen Anwendungsfall klappt das allerdings mit der automatischen Übernahme des Teilnehmers noch nicht. Meine Formel sieht jetzt so aus:

    let me := this;
    let newGF := (create Geldfluss);
    newGF.('Kicktipp Saison' := me);
    newGF.'Kicktipp Saison'.Teilnehmer.(Name := me.Teilnehmer.Name);
    newGF.'Kicktipp Saison'.(Tippername := me.Tippername);
    newGF.'Kicktipp Saison'.(Saison := me.Saison);
    popupRecord(newGFpopupRecord(newGF)

    Das Feld Teilnehmer.Name ist zwar in 'Kicktipp Saison' vorhanden, allerdings aus der Verknüpfung mit der Tabelle Teilnehmer. Ich könnte mir vorstellen, dass das der Grund ist und ich in der Formel diesen Umstand auch noch einbauen muss (hätte ich vielleicht auch in meiner Beschreibung erwähnen können 😇)

    Datenbank

    Und somit wird das Feld Teilnehmer in der Untertabelle Geldfluss nicht automatisch gefüllt

    Buchung

    Hast du noch eine Idee?

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Benjamin,

    bei der Umsetzung für meinen Anwendungsfall klappt das allerdings mit der automatischen Übernahme des Teilnehmers noch nicht. Meine Formel sieht jetzt so aus:

    let me := this;
    let newGF := (create Geldfluss);
    newGF.('Kicktipp Saison' := me);
    newGF.'Kicktipp Saison'.Teilnehmer.(Name := me.Teilnehmer.Name);
    newGF.'Kicktipp Saison'.(Tippername := me.Tippername);
    newGF.'Kicktipp Saison'.(Saison := me.Saison);
    popupRecord(newGFpopupRecord(newGF)

    Das Feld Teilnehmer.Name ist zwar in 'Kicktipp Saison' vorhanden, allerdings aus der Verknüpfung mit der Tabelle Teilnehmer. Ich könnte mir vorstellen, dass das der Grund ist und ich in der Formel diesen Umstand auch noch einbauen muss (hätte ich vielleicht auch in meiner Beschreibung erwähnen können 😇)

    Datenbank

    Und somit wird das Feld Teilnehmer in der Untertabelle Geldfluss nicht automatisch gefüllt

    Buchung

    Hast du noch eine Idee?

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hey Markus,

    ich lege mir für Verknüpfungen immer eine zweite Variable an. z.B. let myTeilnehmer := Teilnehmer. 

    Ich vermute der Button befindet sich in der Tabelle Kicktipp Saison, in die eine Verknüpfung zum Teilnehmer existiert. Dann sollte es folgendermaßen funktionieren:

     

    let me := this;
    let myTeilnehmer := Teilnehmer -> angepasst
    let newGF := (create Geldfluss);
    newGF.('Kicktipp Saison' := me);
    newGF.'Kicktipp Saison'.(Name := myTeilnehmer.Name);  -> angepasst
    newGF.'Kicktipp Saison'.(Tippername := me.Tippername);
    newGF.'Kicktipp Saison'.(Saison := me.Saison);
    popupRecord(newGFpopupRecord(newGF)

     

    let myTeilnehmer := Teilnehmer: myTeilnehmer ist die Variable und Teilnehmer das Verknüpfungsfeld

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen
    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Benjamin,

    jetzt wird es mir zumindest immer klarer, wie das funktioniert. Genau, der Button befindet sich in der Tabelle Kicktipp Saison mit der Verknüpfung zu Tabelle Teilnehmer.

    Jetzt habe ich es genauso gemacht (Button Geldbuchung), klappt allerdings nicht:

    let me := this;
    let myTeilnehmer := Teilnehmer;
    let newGF := (create Geldfluss);
    newGF.('Kicktipp Saison' := me);
    newGF.'Kicktipp Saison'.Teilnehmer.(Name := myTeilnehmer.Name);
    newGF.'Kicktipp Saison'.(Tippername := me.Tippername);
    newGF.'Kicktipp Saison'.(Saison := me.Saison);
    popupRecord(newGF)

    Auch diese Variante für einen Test klappt nicht:

    let me := this;
    let myTeilnehmer := Teilnehmer;
    let myNewEntry := (create Geldfluss);
    myNewEntry.('Kicktipp Saison' := me);
    myNewEntry.Teilnehmer.(Name := myTeilnehmer.Name);
    popupRecord(myNewEntry)

    Aber das Feld Teilnehmer wird zum Verr... nicht gefüllt - das gibt es doch gar nicht! Irgendwo ist bestimmt wieder ein kleiner Fehler drin.

    Möchtest du der Einfachheit halber einmal selber reinschauen? Ist vielleicht einfacher 

    https://www.dropbox.com/s/1f2z61rgd2130eh/Kicktipp%20ZAHLUNG%20Test.ninox?dl=0

    Habe mal alle Daten bis auf Testdaten rausgenommen. Über Kicktipp-Saison geht´s zu den Buttons.

    Würde mich freuen, wenn du den Fehler findest 

    Danke Dir

    Markus

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ah super, das vereinfacht das ganze etwas.

    https://www.dropbox.com/s/2cmsi04x6tves6d/Kicktipp%20ZAHLUNG%20Test2.ninox?dl=0

     

    Sollte nun passen. Habe Dir die beiden Buttons bei Kicktipp Saison angepasst. Schau mal drüber :-)

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Benjamin,

    perfekt, besten Dank für deine Hilfe. So sollte es sein. Wenn ich das richtig sehe, war es mehr oder weniger dann „nur" der Aufbau dieser Zeilen:

    myNewEntry.('Kicktipp Saison' := me);
    myNewEntry.(Teilnehmer := myTeilnehmer);

    Das finde ich leider auch nicht immer so einfach mit dem Aufbau der Zuordnung. Aber irgendwann werde ich das vielleicht auch noch checken 😬

    Beste Grüße

    Markus

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    noch eine kleine kosmetische Frage, die mir gerade noch aufgefallen ist:

    Wenn ich eine neue Buchung vornehme, dann wird alles richtig angezeigt

    Buchung neu

    Rufe ich diesen Datensatz aber nochmal auf, dann wird mir der Name bei Teilnehmer doppelt angezeigt

    doppelt

    Und das Feld Kicktipp Saison fehlt in der Anzeige ganz, obwohl es über „Feld bearbeiten" zur Verfügung steht 🤨

    Woher kommt das jetzt schon wieder?

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Markus,

    wenn Du in der Tabelle Geldfluss einmal in die Bearbeitung von dem Verknüpfungsfeld Teilnehmer gehst (Schraubenschlüssel), dann ändere die Formel von 

    'Kicktipp Saison'.Teilnehmer.Name

    zu

    Name

     

    In der Beispieldatenbank von Dir ist das Feld Kicktipp Saison sichtbar. Hast Du vielleicht bei den Feldeigenschaften mit "Feld nur anzeigen wenn" etwas hineingeschrieben?

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Benjamin,

    das mit dem Namen hat geklappt und die fehlende Anzeige, wenn ich den Datensatz aus Kicktipp Saison aufgerufen habe, lag wohl an der Einstellung Komposition, die stand auf JA. 

    Jetzt sieht alles richtig aus - vielen Dank 😊 

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Perfekt, dann weiterhin viel Spaß mit Deiner Datenbank! :-)

    • Markus.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Besten Dank, werde ich haben 😬

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 20Antworten
  • 2258Ansichten