Datensatz (Lagereintrag) mittels Script anlegen und Produkt aus verknüpfter Tabelle selektieren
Mein Scripts sieht aktuell wie folgt aus:
let recNeu := (create '6_Lager');
recNeu.(Lagerort := "Horgen");
recNeu.(Lagermenge := 15);
recNeu.'3_Artikel'.('Produkt Nr.' := varProdukt); ==> ?!
Es wird wie erwartet ein Datensatz in der Tabelle '6_Lager' angelegt und die Felder Lagerort und Lagermenge korrekt abgefüllt.
Die letzte Codezeile funktioniert allerdings nicht:
Die Tabelle '6_Lager' ist mit der Tabelle '3_Artikel' verknüpft. Die Tabelle '3_Artikel' hat eine Feld 'Produkt Nr.'. Ziel Wäre nun den Datensatz aus '3_Artikel' mit einer bestimmten Artikelnummer (varProdukt) im neu angelegten Datensatz der Tabelle '6_Lager' zu speichern.
Wie müsste diese letzte Codezeile aussehen damit dies möglich wird?
Besten Dank für eure Unterstützung Michel
4 Antworten
-
Mehr Input wäre hilfreich.
Von wo wird das Script ausgeführt?
Um welcher Art Verknüpfung handelt es sich? (Untertabelle, 1:n, m:n)
Ich rate jetzt mal und gehe davon aus, dass das Script aus der Tabelle '3_Artikel' ausgeführt wird und es sich in Tabelle '6_Lager' um eine n:1 Verknüpfung zu '3_Artikel' handelt.
Meine Annahme ist, daß der Artikel mehrfach im Lager abgelegt sein kann.let vNr := this;
let recNeu := (create '6_Lager');
recNeu.(Lagerort := "Horgen");
recNeu.(Lagermenge := 15);
recNeu.(Artikel := vNr)
=> Damit wird die Verknüpfung des Artikels mit dem neuen Datensatz im Lager hergestellt.
Was es jetzt mit der Produktnummer aufsich hat weiss ich nicht, da ich deine DB-Struktur nicht weiter kenne und nicht erahne woher die Variable varProdukt kommt.
Meine Annahme kann aber auch völlig falsch sein.
Deshalb, mehr Input bei der Frage. -
Hallo Uwe, erst mal herzlichen Dank für dein rasches Feedback... grossartig!
Nun zu den Fragen:
- Das Script wird aus einer völlig anderen Tabelle angestossen, welche ebenfalls eine Verknüpfung zu Artikel und Lager hat und der korrekte Artikel in einem Datensatz selektiert wurde (Tabelle Lagerbewegungen).
- Verknüpfung Lager Artikel kann n:m sein.
- Annahme, daß der Artikel mehrfach im Lager abgelegt sein können ist korrekt.
Da das Script aus einer völlig anderen Tabelle angestossen wird dürfte "let vNr := this;" nicht funktionieren. Es stellt sich somit die Frage wie ich ein Pointer einer verknüpften Tabelle übergeben kann?
Grüsse Michel
-
Hallo Michael
Woher soll man beim Anlegen eines neuen Datensatzes wissen, welcher Record einer weiteren Tabellel zugehörig ist?
Da muss man bei Scripterstellung erstmal alle Daten zusammensuchen, die bei der Erstellung benötigt werden.
Ich kann ohne Kenntnis des DB-Modells nur raten und darin bin ich wie oben gesehen schlecht.
Wenn du eine Dummy-DB hier reinstellst ist es mit Sicherheit leichter deine Frage zu beantworten. (bspw. mit SwissTransfer.com)) -
Salü Uwe
Jetzt kommt es ganz gut, als ich die Problematik zwecks Dokumentation, wie von dir vorgeschlagen, in einer separaten DB nachgestellt habe, konnte das Problem zugleich gelöst werden. Der Trick ist simple, der Code sieht wie folgt aus:
let varLagerort := Lagerort;
let varMenge := Menge;
let varArtikel := Artikel;
let recNeu := (create Lager);
recNeu.(Lagerort := varLagerort);
recNeu.(Menge := varMenge);
recNeu.(Artikel := varArtikel)Der springende Punkt war, das ich nicht ein spezifisches Feld in der Artikeltabelle ansprechen muss (Bsp. Artikel.ProdNr) sondern einfach den Pointer auf den Datensatz der entsprechenden Tabelle (siehe letzte Position). So wurde schliesslich ein Eintrag in der Tabelle Lager erstellt mit korrektem Verweis auf das referenzierte Produkt aus der verlinkten Tabelle Artikel.
In diesem Sinne hat sich diese Anfrage erledigt, ich möchte dir an dieser Stelle aber trotzdem ganz herzlich für dein Intresse an meinem Problem und deinen Bemühungen Bedanken ;-).
Grüsse aus der Schweiz
Michel
Content aside
-
1
„Gefällt mir“ Klicks
- vor 2 JahrenZuletzt aktiv
- 4Antworten
- 132Ansichten