0

Datenübertragung in Untertabelle

Hallo Zusammen,
ich habe eine Haupttabelle 'Artikel'  in welcher sich zwei Untertabellen befinden 'UT1' (Verknüpfung 1:N)  und 'UT2' (Verknüpfung 1:N).

In den beiden Untertabellen ist jeweils die gleiche Tabelle ('Auswahl')  Verknüpfung N:1 also Combo Box hinterlegt.

Wenn ich einen neuen Datensatz in der Haupttabelle 'Artikel' erstelle und in der 'UT1'  in 'Auswahl'  z.Bsp. Preis1 wähle wird automatisch im Feld 'Zahl1'  eine Zahl berechnet.

Nun möchte ich in der 'UT2', wenn ich in Auswahl auch Preis1 wähle über Trigger nach Änderung das in der 'UT2' im Feld 'Zahl2' die 'Zahl1' von der 'UT1' eingefügt wird.

Über Eure Hilfe würde ich mich sehr freuen.

Liebe Grüße
Antje

8 Antworten

null
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin Antje ,

    ich habe es über den Triggern nach Änderung im Feld AUSWAHL der Tabelle  UT2 folgendermaßen gelöst:

    if first(Artikel.UT1.text(Auswahl)) = text(Auswahl) then
        Zahl2 := first(Artikel.UT1.Zahl1)
    end
    

    Damit wird generell verglichen ob die Auswahlfelder die gleiche Auswahlbezeichnung haben,
    wenn ja, wird der Wert aus UT1 in  UT2 geschrieben...
    Das first ist nötig, da es bei dieser Struktur möglich ist mehrere Einträge in UT1 bzw. 2 zu haben. diese werden bei meiner Betrachtungsweise ignoriert und nur der erste Datensatz von UT1 verwendet.

    Hier noch die DB dazu.

    Vg Ronald

    • juwelen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Roland,

    vielen Dank für Deine Hilfe. Ich habe die Formel ausprobiert. Sie funktioniert soweit. Allerdings habe ich in der 'UT1' sehr viele Datensätze. Das heißt wenn ich in der 'UT2'  in 'Auswahl' einen Wert aussuche solle Ninox alle Datensätze in der 'Artikel.UT1' prüfen wo die 'Auswahl' übereinstimmt und mir diese Zahl dann in Zahl2 übermitteln.

    Ich habe bei deiner Formel das first entfernt. Leider bekomme ich dann immer eine Fehlermeldung im Formel Editor "Der Ausdruck liefert mehrfache Ergebnisse zurück: 

    Artikel.UT1.Zahl1"

     

    if Artikel.UT1.text(Auswahl) = text(Auswahl) then
        Zahl2 := Artikel.UT1.Zahl1
    • juwelen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    PS: noch als kleine Info die 'Auswahl' kommt in 'UT1' auch nur einmal vor.

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    für mein besseres Verständinis:

    Es gibt mehrere Datensätze in UT1 aber nur in einem davon ist die Auswahl=Preis1 und das Skript soll diesen Datensatz finden und den Wert von UT1.Zahl1 in UT2.Zahl2 schreiben?

    • juwelen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Roland,

    genau, so ist es es. Da habe ich mich bei meinem ersten Schreiben wohl etwas falsch ausgedrückt, sorry.

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Antje ,

    dann sollte es dieser Code im Trigger nach Änderung im Feld AUSWAHL der Tabelle  UT2 tun:

    if text(Auswahl) = "Preis1" then
        Zahl2 := first(Artikel.UT1[text(Auswahl) = "Preis1"].Zahl1)
    end
    
      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Du solltest dafür sicherstellen, dass es in UT1 auch nur einmal die Auswahl "Preis1" gibt.
      Dafür könntest du diesen Code im Trigger nach Änderung in AUSWAHL von UT1 verwenden (zusätzlich zu deiner Berechnung)

      let me := this;
      if text(Auswahl) = "Preis1" then
          for i in Artikel.UT1[Nr != me.Nr and text(Auswahl) = "Preis1"] do
              i.(Auswahl := null)
          end
      end
      

      Damit werden alle Auswahlen mit "Preis1" ausser der des aktiven Datensatzes gelöscht, wenn du hier "Preis1" auswählst.

      oder du machst dir ein FX-Feld mit diesem alert:

      if cnt(Artikel.UT1[text(Auswahl) = "Preis1"]) > 1 then
          alert("mehrere Preis1 gewählt, bitte prüfen")
      end
      
    • juwelen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Roland,

    habe es hinbekommen. Vielen lieben Dank für Deine Mühe und auch für deine weiteren Tipps 🙂 Wünsche Dir noch einen schönen Tag und viele Grüße

    Antje