0

Verknüpfte Tabellen

Hallo,

wie muss ich denn bei der N:M Beziehung in dem Beispiel die Tabelle Mitarbeiter mit Datenfeldern bestücken? Ich kann ja einem Datenfeld nicht zwei andere Tabellen zuordnen.

236 Antworten

null
    • NinaGarcia
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Vielen Dank!!! Ich würde das gerne etwas besser verstehen. Der Unique -Befehl ist vermutlich dafür da, Duplikate rauszufiltern?! Aber woher weiss die Formel für welches Gerät die Mitarbeiter gesucht werden? Warum werden hier nicht alle Mitarbeiter ausgeworfen?
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Nina,
    Wenn eine Tabelle ohne "select" angesprochen wird, nimmt Ninox die Verknüpfte Tabelle, und behandelt nur die Datensätze die mit der Haupttabelle verknüpft sind. Hier sucht Ninox nach Einweisungen, welche mit deinem Gerät verknüpft sind, dann geht es weiter in die Verknüpfung "Teilname" und von dort zu der Verknüpfung zu "Mitarbeiter".

    Leo
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Habe die Formel nochmals analysiert. Die Formel wird nur funktionieren, wenn in einer Einweisung ein Mitarbeiter zwei mal aufgeführt ist. Wenn aber ein Mitarbeiter an unterschiedlichen Terminen Teilgenommen hat, dann funktioniert das ganze nicht. "unique" weigert sich die Doppelwerte rauszuschmeißen. Die Korrekte formel wäre dann:
    ---
    unique(split(concat(Einweisungen.Teilname.Mitarbeiter.(" " + Vorname + " " + Nachname)), ", "))
    ---

    split wandelt den Text in einen Array . Dann kann unique wieder eingesetzt werden.

    Leo
    • NinaGarcia
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Stimmt, jetzt funktioniert es einwandfrei. Danke! Wofür ist das ", " in der Formel gut? Ich habe es mal weg gemacht und mal durch ein anderes Zeichen ersetzt, das hat an der Darstellung nichts geändert...?!
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Nina,
    ich muss einen neuen Thread öffnen. Das Komma ist als Trennzeichen für Split-Funktion.
    Es wundert mich, dass du es weg machen kannst.

    Grüß
    Leo
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo

    Von wo kommt jetzt auf einmal dieser Befehl "unique(Array)" her oder wie bist du darauf gekommen?
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    So etwas praktische hätte ich schon lange gebrauchen können ;-)
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    ...gibt es noch weitere solche nicht dokumentierte Befehle?

    Lieber Gruss, nik
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Nik,
    unique habe ich hier im Forum vor ca. 1,5 Jahren gesehen. Es ging damals um eindeutige Einträge bei concat-Funktion. Mit array habe ich einfach ausprobiert -und es ging. Ob es noch etwas schönes gibt - bestimmt.

    grüße
    Leo
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ja bestimmt, nur weis man es nicht. Ninox ist immer wieder für eine Überraschung gut ;-)

    Auf jeden Fall, besten Dank für den Tipp. Ist wieder mal sehr hilfreich.
    • HJS_EMD
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo zusammen,
    bin gerade dabei eine DB für unsere vermieteten Objekte zu erstellen.
    Nach zahlreichen Versuchen stecke ich nun irgendwie fest.
    Bislang war mein Ansatz die Umlagen in einer anzulegen und dann als Positionen in der Abrechnung einzeln anzufügen. Besser wäre es für mich wenn eine Position auswählen könnte hinter der dann alle Umlagen hinterlegt sind.
    Wenn ich dies in einer Untertabelle anlege, kann ich zwar die Position auswählen aber bekomme die einzelnen Umlagen nicht angezeigt.

    Lieben Gruß Heiko
    • email4alles
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo liebes Support-Team. Eine Frage zum Anzeigen von verküpften Tabellen.
    Ich habe eine Tabelle und dort andere Tabellen verküpft. Wenn ich nun einen Datensatz öffne, erscheint ja automatisch von der verknüpften Tabelle ein kleinen Übersicht, siehe Bild. Die Anzahl der dort angezeigten Zeilen scheint auf 5-7 Zeilen festgelegt. Kann man die ändern? Ich würde gerne später große Liste drucken, wo alle Datensätze der verknüpften Tabellen angezeigt werden, nicht nur die 7.

    http://www.bilder-upload.eu/show.php?file=5d6ec0-1518704944.png

    Danke
    • email4alles
    • vor 6 Jahren
    • Gemeldet - anzeigen
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Beheben Sie das Problem wie folgt:
    - Sucher Sie sich einen Datensatz mit mehr als sieben verknüpften Datensätzen.
    - Aktivieren Sie den Admin-Modus durch Klick auf den Schraubenschlüssel oben rechts.
    - Ändern Sie nun die Höhe des Feldes.
    Vergleichen Sie dazu hier:
    http://manual.ninoxdb.de/de/erste-schritte/

    Birger - Ninox Support
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Heiko,
    können Sie mir ( support@ninoxdb.de ) die Datenbank, an der Sie arbeiten einmal also Kopie zuschicken (Hauptmenü -> "Archiv sichern unter...")? Ich schaue dann gerne einmal hinein.

    Birger - Ninox Support
    • email4alles
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ach man wie blöd, da hätte ich auch selber drauf kommen können. Ein Problem hab ich aber noch. Wenn ich nun einen Report erstellen und drucken will, da zeigt er mir leider weiterhin nur 5-7 an. Kann ich das irgendwie ändern?
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo zusammen,

    gegeben sind 3 Tabellen T1, T2 und T3.

    T1 besteht aus nummerischen Feldern F1T1, F2T1 und einer Schaltfläche SF1T1.
    T2 besteht aus einem nummerischen Feld F1T2 und diverse nicht nummerische Felder.

    Wenn man auf SFT1 klickt. wird eine Berechnung mit den Feldern F1T1 und F2T1 durchgeführt und das Ergebnisse mit dem Feld der F1T2 verglichen.

    Wenn

    das Ergebnis nicht übereinstimmt
    soll
    a) eine Meldung erscheinen (irgendwo habe ich eine Formel alert() gesehen, die ich noch nicht ausprobiert habe) : "Falsche Eingabe"
    b) die Eingaben in den Feldern F1T1 und F2T1 leeren
    c) in T1 bleiben um weitere Eingaben in F1T1 und F2T1 zu tätigen

    oder

    wenn

    das Ergebnis übereinstimmt
    zu T3 springen um dort sofort Einträge in den nächsten Datensatz zu tätigen
    (ohne die vorherigen Einträge in T3 zu sehen)

    Danke schon vorab für die Unterstützung

    Georg_0815
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Georg_0815,
    stehen T1 und T2 in einer Beziehung? Welchen Datensatz aus Tabelle T2 sollte man zum Vergleich nehmen?
    Grüße
    Leo
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Guten Morgen Leo,

    nein die Tabellen T1 und T2 stehen in keiner Beziehung zu einander.
    T2 besteht aus einem einzelnen Datensatz.

    (In diesem Model will ich es einfach halten bis das Ganze funktioniert. Durch Deine Frage in welchen Datensatz aus der Tabelle 2 F1T2 verglichen werden soll, komme ich auf die Idee, dass später doch mehrere Datensätze in T2 sein könnten. in dem Fall soll der Vergleich in eine Art Schleife durchgeführt werden, wobei die Berechnung aus T1 mit F1T2 in sämtlichen Datensätzen von T2 verglichen wird und wenn ein einzelner "Treffer" stattfindet, soll weiter so vorgegangen werden wie oben beschrieben)

    Vielen Dank

    Gruß Georg_0815
    PS: Wenn ich auf die Uhrzeit Deiner Antwort schaue...wow
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Georg_0815;
    let myF := F1T1 + F2T1;
    let myCNT := cnt(select T2 where F1T2 = myF);
    switch myCNT do
    case 0:
    (
    alert(''Falsche Eingabe");
    F1T1 := null;
    F2T1 := null
    )
    default:
    (
    let NT := (create T3);
    openRecord(record(T3,number(NT.Nr)))
    )
    end


    Grüße
    Leo
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    Danke, funktioniert sehr gut !!
    (mit Kopieren/Einfügen des Codes muss man die Anführungszeichen in alert(".. manuell eingeben, sie werden nicht richtig übergeben).

    Darf ich noch fragen, als Verfeinerung, wie bekommt man es hin, dass man

    1) im Feld F1T3 (in Tabelle T3) springt ?
    (Ich habe es mit select(T3,F1T3) versucht, allerdings bekomme ich es
    mit der Syntax nicht hin)

    2) Sobald man im Feld F1T3 gesprungen ist, den erzeugten Datensatz in
    T1 komplett löschen, also nicht nur die Werte, so dass T1 immer nur
    kurzfristig aus einem Datensatz besteht?

    Gruß Georg_0815
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Geor_0815,
    soweit ich weiß, kann man bei Ninox den Fokus nicht auf unterschiedliche Felder setzen.
    Zu dem Punkt 2:
    am einfachsten ist es alle Datensätze mit "delete" zu löschen.
    ---
    let myF := F1T1 + F2T1;
    let myCNT := cnt(select T2 where F1T2 = myF);
    switch myCNT do
    case 0:
    (
    alert("Falsche Eingabe");
    F1T1 := null;
    F2T1 := null
    )
    default:
    (
    let NT := (create T3);
    delete select T1;
    openRecord(record(T3,number(NT.Nr)))
    )
    end

    ---
    grüße
    Leo
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Klasse !! (Das ging aber flott)
    Georg_0815
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo (und an Alle natürlich)

    also die Variante mit einen einzelnen Datensatz in T2 funktioniert grundsätzlich.
    Wie sehe die Lösung aus, wenn in T2 weitere Datensätze vorhanden wären und wie ich am Februar 22, 2018 um 6:19 am - beschreibe, dass eine Schleife durchgeführt werden soll die beim ersten Treffer so verfährt wie Du mit einem Datensatz in T2 gelöst hast?
    Gruß Georg_0815
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Georg_0815,
    Die Formel funktioniert auch bei mehreren Datensätzen in T2. Zur Erklärung:
    cnt(select T2 where F1T2 = myF) gibt Anzahl aller Datensätze in der Tabelle T2 zurück, wo der Wert von F1T2 gleich myF (F1T1 + F2T1) ist. Wenn die Anzahl gleich null ist, gibt es Alarm. Wenn aber mindestens eine Übereinstimmung da ist, wird die Tabelle T3 geöffnet.
    Also geht auch ohne Schleife.

    Grüße
    Leo

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 236Antworten
  • 72282Ansichten