0

Tabellen "automatisch" verknüpfen

Hallo,

ich nutze die lokale Version von Ninox und stehe noch am Anfang.

Folgende Frage habe ich:

Ich habe zwei Adress-Tabellen importiert Firmenadressen und Mitarbeiterkontakte, jetzt würde die gerne "automatisch" über das Feld Firma (kommt in beiden Tabellen vor) verknüpfen. Somit sehe ich dann immer alle Mitarbeiter einer Firma.

Wie geht das?
Was geht ist, wenn ich alle Kontakte mit den Firmen manuell verknüpfe, dies ist nicht in meinem Fall nicht sinnvoll. 1. Zuviele Datensätze 2. die Verknüpfung lässt sich zu leicht lösen, dh. ein anderer Benutzer klickt aus versehen auf lösen.
3. immer wieder sollen neue Datensätze importiert werden.

Vielen Dank
Nepomuk

12 Antworten

null
    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, noch mal. Inzwischen haben ich rausgefunden (glaube ich) dass es mit Massendatensatzänderung geht. Wenn dies die einzige Lösung ist dann bekomme ich die wie wo anders im Forum beschrieben nicht hin.

    Ich würde gerne 2 Tabellen ("Firma Accounts" und "Mitarbeiter") über das Feld "Firma" verknüpfen.

    In welcher Tabelle führe ich die Massendatenänderung durch?

    Ich habe es in Firma Accounts mit folgendem Ausdruckv probiert.

    let t1 := 'Firma';
    (select Mitarbeiter)['Firma' = t1].Id

    hier steht oben drüber in rot Tabellenspalte wurde nicht gefunden: ID ind Zeile 2, Spalte 34

    Gerne hätte ich diesen Vorgang per Taste als Skript, damit ich das immer wieder machen kann.

    vielen Dank

    Nepomuk

    • Alexander_Koenig
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Nepomuk,

    das sieht sehr gut aus.

    Du musst die Massendatenänderung in der Tabelle Mitarbeiter ausführen (wenn Mitarbeiter auf Firma verlnikt).

    Wähle dann (in Massendatenänderung) das Verknüpfungsfeld auf Firma aus. Hier hinterlegst Du Deinen Code:

    let t1 := 'Firma';
    (select Firma)['Firma' = t1].Id

    Hier ist das Feld mit dem Textwert der Firma gemeint, nicht die Verknüpfung.

    Bei Fragen auch gerne mal an support@ninoxdb.de schreiben oder im Webinar nachfragen:

    https://zoom.us/webinar/register/WN_Asq34-biQxGS93h03BmyfQ

    VG, Alex

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    vielen Dank Alex - es funktioniert

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Alexander,

    noch mal - geht doch nicht?!

    Jetzt habe ich zwei Tabelle lokal mit der Ninox App (Mac) so erfolgreich verknüpft.
    Lade ich jetzt die Datenbank in die Cloud funktioniert dieser Vorgang nicht mehr. Lade ich ein Backup dieser Datenbank wieder runter und öffne dies lokal mit der App geht es wieder?

    Habe ich da was übersehen oder kann es mit den Benutzerrollen zu tun haben?

    VG, Nepomuk

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Nepomuk,

    du hast nichts übersehen – ein Select funktioniert in der Cloud (noch) zu nicht in der Massendatenänderung. Dort kannst du das nur als Skript auf einen Button legen.

    LG Frank

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Oh danke Frank,

    da ich mich noch nicht so auskenne, aber vermute, dass nichts funktioniert, wenn ich die obige Selectfunktion einfach mit Button auslöse, wie müsste die verändert werden? Ich brauche die häufig, immer nach einem Import.

    VD, Nepomuk 

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Nepomuk,

     

    die Verknüpfung direkt beim Import herzustellen ist keine Option?

     

    Wenn nicht: Ich hatte mal eine ähnliche Anwendung, da habe ich ein (verstecktes) Ja/Nein-Feld angelegt und in einem per Button initiierten Script alle Datensätze, die besagtes Ja/Nein-Feld != true hatten in einer Schleife abgearbeitet. Vielleicht ist das ein Ansatz?

     

    lg, Torsten

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Nepomuk,

    entweder legst du einen Button in die Mitarbeitertabelle mit der du nur den aktuellen Datensatz verknüpfst:

    let my := this;
    my.'Verknüpfungsfeld auf Firma' := (select Firma)['Firma' = my.Firma].Id

    Oder du verknüpfst alle Datensätze auf einen Rutsch - dann ist erst mal egal, wo der Button liegt:

    for my in select Mitarbeiter do
      my.'Verknüpfungsfeld auf Firma' := (select Firma)[Firma = my.Firma].Id;
    end

    Hier ruft Ninox dann alle Mitarbeiter ab und nimmt die Verknüpfung in einer Schleife für jeden einzelnen Datensatz vor. Du kannst über das "select Mitarbeiter" natürlich noch Einschränkungen mitgeben um nur einen Teil der Datensätze zu bearbeiten (z. B. nur diejenigen, die noch nicht verknüpft wurden, wenn es mehrfache Importe gibt. Für 'Verknüpfungsfeld auf Firma' musst du natürlich den richtigen Feldnamen deiner Verknüpfung nehmen.

    VG Frank

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

    danke für den Aufruf als Schleife, so was habe ich gesucht, damit ich alle Datensätze auf einmal Verknüpfen kann. 

    Nur leider kommt bei mir die Fehlermeldung "Ausdruck liefert mehrere Ergebnisse zurück" jetzt könnte es sein, dass mein Verknüpfungsfeld auf Firma Nr falsch ist (ich habe da nichts geändert, also Standart)? oder das es gibt ja mehrere Mitarbeiter Datensätze und darin liegt jetzt ein Problem? 

    VD, Nepomuk

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    ah ich habe auch statt
     for my in select Mitarbeiter do
      my.Nr := (select Firma)[Firma = my.Firma].Nr

    for my in select Mitarbeiter do
      my.Firma := (select Firma)[Firma = my.Firma].Nr

    probiert und beides geht nicht.

    vg, Nepomuk

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Nepomuk,

    es kann aber nicht sein dass bei dir in der Tabelle Mitarbeiter das Taxtfeld mit Firmennamen und das Verknüpfungsfeld zu der Firma beide den Namen "Firma" tragen. Das wird Ninox nicht zulassen.

    Leo

    • Nepomuk
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    ich glaube ich blicke da noch nicht durch wie das Verknüpfungsfeld heißt, weil beim Anlegen eines neuen Kontaktes (Mitarbeiter) unter einer Firma funktioniert es der Firmentabelle Name = Account - das ist doch das Verknüpfungsfeld?
    Bei mir sind Kontakt mit Account (N:1) verknüpft.

    let myKontakt := Nr;
    let myFeld1 := NEU;
    let myFeld2 := Firma;
    let myNew := (create Kontakt);
    myNew.(Account := myKontakt);
    myNew.(NEU := myFeld1);
    myNew.(Firma := myFeld2);
    let NeuDateNr := max((select Kontakt).number(Nr));
    openRecord(record(Kontakt,NeuDateNr))

    aber die Funktion einer Verknüpfung als Button 

    for my in select Kontakt do
    my.Account := (select Account)[Firma = my.Firma].Nr
    end

    funktioniert nicht?

    vielen Dank, Nepomuk

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 12Antworten
  • 5579Ansichten