0

Mehrere Datensätze durch eine Bedingung von Haupttabelle in Untertabelle übernehmen

Hallo Zusammen,

ich habe eine Haupttabelle und eine Untertabelle und möchte in der Haupttabelle folgende Funktion mit einer Befehlsschaltfläche einfügen, welche mir alle Datensätze die die Bedingung erfüllen in die Untertabelle einträgt. Verknüpfung von Haupttabelle zur Untertabelle 1:N

Leider komme ich trotz einiger Forumeinträge nicht so recht weiter.

Die Bedingung:

select Haupttabelle where Datum > 0 and “Datum 1” = “Datum 2” and “Nummer” = 750

Neuer Datensatz in Untertabelle:

“Lieferant”  (Haupttabelle)  =  “Lieferant U’ (Untertabelle)

”RGN“ (Haupttabelle = ”RGN U’ (Untertabelle)

“Datum” (Haupttabelle = “Datum U” (Untertabelle)

 

Vielleicht kann mir ja jemand helfen :o)

21 Antworten

null
    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Antje,

     

    ohne genauere Kenntnis zu Datenmodell und Feldbezeichnungen:

     

    let myArray := select Haupttabelle [“Datum” and “Datum 1”=“Datum 2” and “Nummer”=750];
    for i in myArray do
       let myNew := create Untertabelle;
       myNew.(“Lieferant U” := i.“Lieferant”;
       “RGN U” := i.“RGN”;
       “Datum U” := i.“Datum”;
       “Haupttabelle” := i)
    end

     

    Feldbezeichnungen, welche ein Leerzeichen und/oder Sonderzeichen enthalten, sind mit einfachen(!) Anführungsstrichen anzuführen, ich hab“s hier mal konsequent durchgängig so gemacht.

     

    lg, Torsten

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    danke für Deine schnelle Antwort. Es sieht soweit ganz gut aus, allerdings gibt er mir eine Fehlermeldung zurück. Ich habe Deine Formel 1:1 übernommen. Vielleicht ist es ja nur eine Kleinigkeit. Ich sende Dir mal einen Screenshot.

    Liebe Grüße Antje

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ...irgendwas scheint mit dem Foto hier nicht zu klappen ich versuche es nochmal.

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ...irgendwas scheint mit dem Foto hier nicht zu klappen ich versuche es nochmal.

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen
    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    das tut mir leid, dass ich dich hier so zu spam. Verstehe nicht warum ich das Foto nicht hochgeladen bekomme - ist normales jpg.???

    Ich versuche es so:

    Datenmodell: Haupttabelle

    Lieferant

    RGN

    Datum

    Nummer

    Datum 1

    Datum 2

    <- Untertabelle

    Lieferant U

    RGN U

    Datum U

     

    Habe deine Formel so übernommen 

    let myArray := select “Haupttabelle” [“Datum 1” > 0  and “Datum 1” = “Datum 2” and “Nummer” = 750];

    for i in myArray do

    let myNew := create “Untertabelle”;

    myNew.(

    “Lieferant U” := i.“Lieferant”;

    “RGN U” := i.RGN;

    “Datum U” := i.’Datum“;

    ”Haupttabelle“ := i) 

    end

    Fehlermeldung: Eine Tabelle wurde nicht gefunden: Untertabelle in Zeile 3, Spalte 35

     

    Habe Untertabelle auch ohne die Zeichen ” “ geschrieben - ändert nichts.

    Hast du noch eine Idee?

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    PS: die Feldbezeichnungen sind natürlich alle in “diesen” Zeichen geschrieben - kommt vielleicht durchs kopieren das der “diese” Zeichen überträgt.

    • Tacho
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wie heißt denn die Untertabelle?

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Tacho,

    sehr peinlich! die Tabelle heißt Untertabelle und ich hatte einen Schreibfehler im Tabellenname. Also ich bekomme keinen Fehlermeldung mehr.

    Allerdings übernimmt er nur den Datensatz in dem ich mich befinde in die Untertabelle nicht alle. Mein Ziel ist es, wenn ich in dem Datensatz wo ich mich befinde die Befehlsschaltfläche klicke sollen mir alle Daten aus der Haupttabelle, die die Bedingung erfüllen, in die Untertabelle des Datensatztes übernommen werden. Gibt es dafür ein Lösung?

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,

    ich versuche mein Problem nochmal übersichtlicher zu erklären.

    Ich habe eine Haupttabelle und eine Untertabelle. Die Untertabelle ist in jedem Datensatz der Haupttabelle eingeblendet: Verknüpfung von Haupttabelle zur Untertabelle 1:N

    In der Haupttabelle habe ich z.Bsp. 100 Datensätze. Wenn ich z.Bsp. einen neuen Datensatz (101) anlege möchte ich, wenn in den anderen 100 Datensätzen eine bestimmte Bedingung erfüllt ist, das die Datensätze per Befehlsschaltfläche in die Untertabelle im Datensatz 101 übernommen werden. Danach möchte ich die 100 Datenfelder in der Haupttabelle löschen (diese Formel habe ich schon in einer extra Befehlsschaltfläche) Alle Felder und Tabellen heißen so wie hier aufgeschrieben.

    Die Bedingung:

    select Haupttabelle where “Datum 1” > 0 and “Datum 1” = “Datum 2” and “Nummer” = 750

     

    Die Felder welche in die Untertabelle übernommen werden sollen:

    “Lieferant”  (aus der Haupttabelle)  =  “Lieferant U’ (in die Untertabelle)

    ”RGN“ (aus der Haupttabelle) = ”RGN U“ (in die Untertabelle)

    ”Datum“ (aus Haupttabelle) = ”Datum U“ (in die Untertabelle)

     

    Datenmodell: Haupttabelle

    Lieferant

    RGN

    Datum

    Nummer

    Datum 1

    Datum 2

    <- Untertabelle

    Lieferant U

    RGN U

    Datum U

    Es wäre echt Klasse wenn mir hier jemand helfen könnte.  :o) 

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

    Hallo Antje,

     

    es mag an mir liegen - aber ich verstehe nicht wirklich, was Dein Ziel ist - bzw. würde wohl erneut meine erstgenannte Lösung unterbreiten. Hast Du die Chance, mal eine Dummy-DB mit Deinem Problem zur Verfügung zu stellen? Vielleicht würde es so deutlicher...

     

    lg, Torsten

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Antje. Aller guten Dinge sind 3. Verwirrend viele Anführungszeichen. M.E. könnte es so funktionieren (beachte den Unterschied doppelte und einfache Anführungszeichen). Für HAUPTTABELLE und UNTERTABELLE die korrekten Namen eingeben.

    *

    for i in select HAUPTTABELLE [“Datum 1” > 0 and “Datum 1” = “Datum 2” and Nummer = 750] do
    (create UNTERTABELLE).(
    “Lieferant U” := i.Lieferant;
    “RGN U” := i.RGN;
    “Datum U” := i.Datum
    )
    end

    *

    Mirko

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    OK. Jetzt sehe ich es. Aus allen einfachen Anführungszeichen werden beim Übertragen auf das Forum doppelte gemacht. Das ist mir neu. Damit kann der Code nicht einfach kopiert werden und aus “ muss ” gemacht werden. Ich lege den Code ohne Formatierung noch mal hier rein um das zu testen. Tut mir leid für den Spam.

    for i in select Haupttabelle [“Datum 1” > 0 and “Datum 1” = “Datum 2” and Nummer = 750] do
    (create Untertabelle).(
    “Lieferant U” := i.Lieferant;
    “RGN U” := i.RGN;
    “Datum U” := i.Datum
    )
    end

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Na super. Ein Bug.

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Mirko, hallo Torsten, ich habe die Formeln beide ausprobiert. Klappen leider nicht. 

    mein Ziel ist es: Ich liste in den Datensätzen Ankäufe auf - brauche aber zum Jahresschluss, nur die gesamte Einkaufssumme und noch ein paar andere Summenwerte aus den Datensätzen in einem neuen Datensatz der gleichen Tabelle (das habe ich auch schon per Befehlsschaltfläche gelöst sum((select etc..) und brauche zu dieser Gesamtsumme die entsprechenden Belege aus den einzelnen Datensätzen und diese sollen in der Untertabelle im neuen Datensatz mit aufgeführt werden. Also im Prinzip Gesamtsummen = Gesamtbelege in einem Datensatz und somit kann ich alle unnötigen Datensätze löschen.

    Das mit den Screenshots hat ja vorhin irgendwie nicht so geklappt oder gibt es eine Trick beim Hochladen von Bildern? Dann könnte ich da gerne mal 2 Bilder dazu senden. Torsten: ich kann dir kurz eine Dummy DB nur mit den wesentlichen Details erstellen (Ninox über Browser) reicht dir dazu der Link? 

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

    Hallo Antje,

     

    wenn Du die DB z.B. via Dropbox zur Verfügung stellen kannst, sollte das genügen.

     

    lg, Torsten 

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    ersteinmal herzliche Dank für deine Hilfe. Ich habe die Datenbank mal so minimalistisch wie möglich als Beispiel dargestellt. Und dir ein Foto mit Beschreibung in Dropbox gelegt. Bekomme das mit dem direkten DB-Link gerade nicht hin. Bzw. öffnet dieser sich beim Test nicht korrekt.

    Ich hoffe das diese Beschreibung dir erstmal weiterhilft. Vermutlich ist es gar nicht so schwierig, aber ich verzweifel langsam daran ;)

    https://www.dropbox.com/s/hw308likxt75ise/Datenbankansicht.png?dl=0

    Also lieben Dank nochmal 

    LG Antje

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo allerseits. Ungewöhnliches Anliegen, in der Tat. Bin mir auch nicht sicher, es richtig verstanden zu haben, werfe aber todesmutig meinen Hut in den Ring:

    let me := this;
    for i in select Haupttabelle where Datum and “Datum 1” = “Datum 2” and Nummer = 750 do
        let newU := create Untertabelle;
        newU.(Haupttabelle := me);
        newU.(“Lieferant U” := i.Lieferant);
        newU.(“RGN U” := i.RGN);
        newU.(“Datum U” := i.Datum);
        delete i
    end

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ... Und natürlich sind auch in meinem Code alle doppelten durch einfache Anführungszeichen zu ersetzen.

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

    Moin Antje,

     

    ich glaube jetzt zu verstehen, worauf Du hinauswillst.

     

    let me := this;
    for i in select Haupttabelle where Datum and “Datum 1” = “Datum 2” and Nummer = 750 do
       for j in i.Untertabelle do
          j.Haupttabelle := me;
          j.“Lieferant U” := i.Lieferant;
          j.“RGN U” := i.RGN;
          j.“Datum U” := i.Datum;
       end;
       delete i
    end

     

    Anführungszeichen wie gehabt durch einfache ersetzen.

     

    Bin gespannt :-)

     

    lg, Torsten

    • Antje
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter, hallo Torsten,

    erst einmal vielen lieben Dank an Euch Beide. Die Formel von Copytexter funktioniert! Dein Hut im Ring hat sich gelohnt. ;o) Bin total begeistert! Die Befehlsschaltfläche macht genau was sie soll. 

    Also herzlichen Dank nochmal an Euch und

    liebe Grüße Antje

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 21Antworten
  • 1538Ansichten