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
-
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
-
Moin Benjamin,
besten Dank für das Beispiel. Ok, das leuchtet mir ein.
Nach eine Verständnisfrage:
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?
Hier muss ich den ja aus der Liste ALLER Mitglieder auswählen.
Oder habe ich da einen Denkfehler?
Viele Grüße
Markus
-
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
-
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 :-(
-
Hier ist es richtig
https://www.dropbox.com/s/s4boaycf5vrixo1/fuer_Markus.ninox?dl=0
-
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
-
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
-
Freut mich und immer wieder gern! Gutes gelingen :-)
-
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 )
Und somit wird das Feld Teilnehmer in der Untertabelle Geldfluss nicht automatisch gefüllt
Hast du noch eine Idee?
-
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 )
Und somit wird das Feld Teilnehmer in der Untertabelle Geldfluss nicht automatisch gefüllt
Hast du noch eine Idee?
-
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
-
Vielleicht hilft das weiter:
https://www.dropbox.com/s/7yordxa1yc47go0/fuer_Markus%20nr2.ninox?dl=0
-
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
-
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 :-)
-
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
-
noch eine kleine kosmetische Frage, die mir gerade noch aufgefallen ist:
Wenn ich eine neue Buchung vornehme, dann wird alles richtig angezeigt
Rufe ich diesen Datensatz aber nochmal auf, dann wird mir der Name bei Teilnehmer doppelt angezeigt
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?
-
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?
-
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
-
Perfekt, dann weiterhin viel Spaß mit Deiner Datenbank! :-)
-
Besten Dank, werde ich haben
Content aside
- vor 4 JahrenZuletzt aktiv
- 20Antworten
- 2275Ansichten