0

Button erzeugt neuen Eintrag ohne Verknüpfung

Ich habe eine Haupttabelle.

Aus der Haupttabelle heraus möchte ich durch einen Klick auf einen Button die Möglichkeit haben, einen neuen Eintrag in einer rückverknüpften Nebentabelle zu erzeugen. Durch die Formel gelingt mir das auch, allerdings ist dann noch kein Bezug zwischen Haupttabelle und Nebentabelle hergestellt, so dass der Eintrag dann nicht verknüpft ist und eben auch nicht in der Aufzählung auftaucht.

 

 Wenn ich den Eintrag über den blauen Button mit dem Code erzeuge, fehlt die Verknüpfung, die aber da ist, wenn ich unten auf das "+ Datensatz erstellen" klicke. Dass das so ist, ist mir klar, aber wie kann ich die Formel präzisieren, ohne dass ich den Haupttabelle und Nebentabelle nach Klick auf den blauen Button manuell verknüpfen muss. Hinter dem blauen Button steckt folgende Formel: 

let new := (create DokuBlutentnahme);
popupRecord(new)

 

Danke!

5 Antworten

null
    • Pushing the Boundaries of Ninox
    • Gotje_Ing
    • gestern
    • Gemeldet - anzeigen

    Du musst die Verknüpfung (also das Verknüpfungsfeld) aktiv setzen:
    let me := this; 
    let new := (create DokuBlutentnahme);
    new.('Verknüpfungsfeld' := me);
    popupRecord(new)

    Natürlich noch den Namen "Verknüpfungsfeld" durch den des tatsächlichen Feldes tauschen.

      • marcel82
      • vor 11 Stunden
      • Gemeldet - anzeigen

       
      Du merkst, dass ich wirklich nicht mehr als ein interessierter Laie in dieser Hinsicht bin und ich mich mühsam wie ein Eichhörnchen ernähre, in dieser Hinsicht. Umso mehr bin ich Dir für Deine Hilfe dankbar.

       

      Allerdings verstehe ich das mit dem Verknüpfüngsfeld (auch nach Durchstöbern des Forums) nicht so ganz gut. Also:

      Durch die Verknüpfung öffnet sich ja eine andere Tabelle in meiner Datenbank, die Tabelle "DokuBlutentnahme", die ich aus der Ursprungstabelle "Vorgang" geöffnet habe. 

      Wie muss also mein Verknüpfungsfeld lauten?
      Beim Öffnen über den Button bleibt das Feld in der "DokuBlutentnahme" leer.

      wenn ich über die Schaltfläche "Datensatz anlegen" gehe, ist das Verknüpfungsfeld  zur Tablelle "Vorgang" in "DokuBlutentnahme" verknüpft und sieht so aus:

      Ich weiß, es ist vielleicht nicht so schlau, aber ich verstehe nicht, welches DAS Verknüpfungsfeld jetzt genau sein soll, wenn ich quasi den ganzen Datensatz "DokuBlutentnahme", den ich erstellen und mit dem ursprünglichen Vorgang, an dem ich in der Tabelle "Vorgang" arbeite, verknüpfen möchte. 

      Wahrscheinlich muss es nur klick machen, aber das macht es noch nicht. DANKE!

      • Pushing the Boundaries of Ninox
      • Gotje_Ing
      • vor 10 Stunden
      • Gemeldet - anzeigen

       Moin,

      das Verknüpfungsfeld ist in diesem Fall das Feld "Vorgang", das du auch im Screenshot zeigst. 
      Hier ein Versuch es zu erklären.

      In Ninox (und fast jeder anderen Datenbankstruktur) sind Tabellen grundsätzlich erstmal alleinstehend und kennen sich nicht. In Ninox trifft das zu, wenn man links in der Navigation unten auf + Tabelle klickt. Wenn man dagegen "Untertabelle" klickt, wird eine Verknüpfung angelegt. Dazu gleich mehr.

      Wenn man nun zwei Tabellen miteinander verbinden möchte, gibt es Verknüpfungen (oft genannt Relations, daher auch der Name Relational-Databases). 
      In Ninox gibt es nur eine Art der Verknüpfung, sogenannte 1:n Verknüpfungen. Das bedeutet, auf der einen Seite kannst du nur exakt einen Datensatz verknüpfen (Hin-Verknüpfung) und auf der anderen Seite werden dann alle dorthin verknüpften Datensätze angezeigt (Rückverknüpfung). 

      Praktisch erklären kann man es am besten mit Rechnungen.
      Eine Rechnungsposition kann immer nur einer Rechnung zugeordnet sein. Die Hin-Verknüpfung liegt also in den Positionen.
      Eine Rechnung kann mehrere Positionen enthalten. Das ist also die Rückverknüpfung.

      Wenn man in Ninox eine "Untertabelle" erzeugt, also bei eingeschaltetem Bearbeitungsmodus unten rechts den Button klickt, dann entsteht nicht nur eine neue Tabelle, sondern direkt die Verknüpfung.

      Besonderheit bei dem Button Untertabelle im Vergleich zur einer zweiten Tabelle, die manuell angelegt wurde. 
      In Ninox gibt es sogenannte "Kompositionen" bzw. "Cascades" (kann in den Feldeigenschaften gesetzt  oder entfernt werden). Wenn eine Verknüpfung eine Komposition ist, werden beim Löschen des "Parent"-Eintrags auch alle Children gelöscht. Im Beispiel der Rechnung wäre das folgendermaßen.
      Wenn ich eine Position lösche, ist die einfach weg und nichts passiert weiter. 
      Wenn ich die Rechnung lösche, sind automatisch alle Positionen mit gelöscht (und auch deren Children usw., wenn vorhanden).
      Zweiter Effekt:
      Wenn ich aus einem Parent über die Rückverknüpfung einen Eintrag auswähle zum anschauen, dann wird das im Child-Record liegende Verknüpfungsfeld zum Parent ausgeblendet. Das ist manchmal verwirrend. Wenn ich über die linke Navigation gehe, ist das Feld wieder sichtbar. 

      Nun zurück zu der Fragestellung.
      Um eine Verknüpfung (also die Verbindung zwischen zwei Datensätzen, egal ob Komposition oder anderweitig) zu setzen, kann man in Ninox nur die Hin-Verknüpfung beschreiben. 

      Wenn ich dein Beispiel richtig verstehe, dann Hast du Vorgänge, welche der Parent sind (also ähnlich den Rechnungen). Die DokuBlutentnahme sind die Children (also Rechnungspositionen). 

      Im Regelfall, also ohne manuelle Umbenennungen, sind die Verknüpfungsfelder so benannt, wie die Tabelle zu der sie Zeigen. In deinem Fall ist die Verknüpfung, welche in DokuBlutentnahme liegt, "Vorgang" benannt. Auf diese musst du also den Record schreiben, den du verknüpfen möchtest. 

      Wo das Feld liegt, bzw. woher du es beschreiben willst, ist dabei völlig egal. Wichtig ist nur, dass du das richtige drauf schreibst. (Datentyp rid/nid/node (vereinfacht genannt Record) oder number). 

      Das Script lautet also:

      let me := this; 
      let new := (create DokuBlutentnahme);
      new.(Vorgang := me);
      popupRecord(new)

      • marcel82
      • vor 6 Stunden
      • Gemeldet - anzeigen

       

      Moin,

       

      ich danke dir von Herzen für deine wirklich aussagekräftige Antwort. "Vorgang" war meine Idee, aber die Interpunktion war irgendwie anders. Jedenfalls hab ich jetzt deutlich mehr verstanden, dank deiner Ausführungen, und ich bin wieder ein ganzes Stück weiter gekommen. Ganz sicher kommen bald wieder Fragen, danke aber dafür, dass Du mir bei dieser so nett geholfen hast! Schönes Wochenende!

    • Ninox-Projekte für KMU
    • planoxpro
    • vor 9 Stunden
    • Gemeldet - anzeigen

    Unter nachstehendem Link findest du ein kleines Tutorial zum Thema Verknüpfungen. Dabei geht es gerade um die Grundlagen. Vielleicht hilft es weiter.

    Tutorial zu Verknüpfungen

Content aside

  • vor 6 StundenZuletzt aktiv
  • 5Antworten
  • 23Ansichten
  • 3 Folge bereits