Home › Forum › Nuclos Konfiguration › Maskenlayouts › Valuelist-Provider mit 2 oder mehr Parametern
- Dieses Thema hat 13 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Jahre, 1 Monat von
Markus Glitzner.
-
AutorBeiträge
-
5 April 2012 um 11:12 Uhr #5438
Frank Pavlic
TeilnehmerHallo zusammen,
ich habe eine Maske Bestellung mit Subform Bestellpositionen. In den Bestellpositionen benötige ich eine Combobox für den Preis, welcher abhängig vom Artikel _und_ Lieferant ist. Das heisst ich benötige einen Valuelist-Provider, welcher 2 Input-Parameter benötigt, ArtikelId und LieferantId. Leider finde ich nichts, wie ich das hinbekomme. Zwar gibt es tatsächlich zwei Parameter-Zeilen und für die ArtikelId ist es ja auch selbsterklärend, nur wie komme ich nun an die LieferantId aus der Entität „Bestellung“?
Gibt es globale Variablen oder Zugriffsmöglichkeiten auf die Hauptentität, so dass ich die LieferantId irgendwie im entsprechenden Parameter-Feld eintragen kann, z.B. $context.hauptentitaet.field.LieferantId (Achtung Pseudocode 😉 ).Oder ist das ein typischer Fall für Groovy?
Danke im Voraus.
Gruß
Frank
5 April 2012 um 12:01 Uhr #5439Claudia Mangstl
TeilnehmerHallo Frank,
so etwas geht leider momentan nicht. Man kann immer nur eine ID über eine Layoutregel an einen Valuelist-Provider schicken.
Ist aber ein interessantes Thema für eine Erweiterung.
Viele Grüße,
Claudia5 April 2012 um 15:33 Uhr #5443Markus Glitzner
TeilnehmerHallo Frank!
Wenn ich das richtig interpretiere, sollte das kein Problem sein, so etwas hab ich auch schon mehrfach umgesetzt.
Ich gehe mal davon aus, dass du bei deinen Artikel einen Lieferanten zugeordnet hast und als Unterformular die unterschiedlichen Preise.
Dann benötigst du zwei VLPs, einen für die Artikel und einen für die Preise. Den Artikel VLP wie gewohnt mit einem Parameter (INTID_LIEFERANT)
Deinen VLP für die Preise joinst du mit dem Lieferanten, den Artikel und den Preisen und setzt zwei Parameter, einen für den Lieferant (INTID_LIEFERANT) und einen für den Artikel (INTID_ARTIKEL).
In der Bestellung benötigst du dann ein Referenzfeld für den Lieferanten (hast du vermutlich) mit einer Regel, die den Artikel VLP im Unterformular aktualisiert. Und bei den Artikel im Unterformular noch eine Regel, die deinen Preis VLP aktualisiert.
Einzige was du machen musst, ist das Artikel und Preis Attribut im Unterformular explizit als Combobox angeben, da sonst bei der Regel etwas nicht ausgewählt werden kann (weis leider adhoc nicht was das war). Könnte ein Problem bei der aktuellen BEta werden, da hier die Eigenschaften der Attribute im Unterformualr nicht mehr über den Designer bearbeitet werden können)
Das wars
Gruß
Hugo5 April 2012 um 15:43 Uhr #5444Frank Pavlic
TeilnehmerHallo Claudia,
ich erachte es ebenfalls als sinnvoll. Im Falle von Groovy wird ja bereits mit einem context gearbeitet, welche den Zugriff die Felder und Unterformulare erlaubt. Ich denke auch, es dürfte für die serverseitige Regelverarbeitung sicherlich auch sehr sinnvoll sein. Valuelist-Provider sind sehr mächtig, allerdings mit nur einem Input-Parameter wird die Mächtigkeit ganz schnell klein 🙁Kannst Du das in die Future-Feature-Liste mitaufnehmen?
Danke.
Gruß
Frank5 April 2012 um 16:08 Uhr #5448Frank Pavlic
TeilnehmerHallo Hugo,
wir haben die gleiche Idee, so weit hatte ich auch alles,allerdings hänge ich nun genau an dem Punkt: Die zwei Input-Parameter INTID_LIEFERANT und INTID_ARTIKEL.Wenn ich Preise-VLP nun am Preise-Feld hinterlege, wähle ich Preise-VLP aus. Nun habe ich zwei Parameter-Zeilen, die ich ausfüllen kann. Allerdings habe ich keine Chance, INTID_LIEFERANT als Input der Preise-VLP mitzugeben.
Deine und meine Idee funktioniert nur, wenn der Artikel genau von _einem_ Lieferant geliefert wird.
Das Problem was ich habe, ist, das ein Artikel von mehreren Lieferanten geliefert werden kann. Aktualisierung der Artikel-VLP geht ja noch.
Lege ich nun eine Bestellposition an, wähle ich einen Artikel aus, damit wird die Preise-VLP aktualisiert. Allerdings werden nun auch die Preise von anderen Lieferanten gefunden und in der Preise-Combobox zur Verfügung gestellt. Die Abhängigkeit zum Lieferanten fehlt hier, da ich ja nur die INTID_ARTIKEL an Preise-VLP mitgeben kann. Ich kann nicht noch zusätzlich die ausgewählte INTID_LIEFERANT mitgeben.Zum Problem Eigenschaften: Wenn du im Subform-Eigenschaften die Toolbar einmal auf horizontal umstellst, ok klicken. Dann wird der Toolbar-Button „Hinzufügen“ in der Subform wieder aktiv.
Dann klickst du auf „Datensatz hinzufügen“. Eine Zeile wird eingefügt. Zu diesem Zeitpunkt kommst Du wieder in die Eingeschaften der Subform-Felder.
Kurz: „Datensatz hinzufügen“ der Subform muss aktiv sein -> anklicken -> Eigenschaften der Spalten editierbar. Habe ich heute Nacht herausgefunden, kurz bevor ich mein Laptop fast zu einem Wurfgerät umfunktioniert habe 👿Gruß
Frank
5 April 2012 um 16:27 Uhr #5449Markus Glitzner
Teilnehmer[quote=“f.pavlic“ post=4547]Zum Problem Eigenschaften: Wenn du im Subform-Eigenschaften die Toolbar einmal auf horizontal umstellst, ok klicken. Dann wird der Toolbar-Button „Hinzufügen“ in der Subform wieder aktiv.
Dann klickst du auf „Datensatz hinzufügen“. Eine Zeile wird eingefügt. Zu diesem Zeitpunkt kommst Du wieder in die Eingeschaften der Subform-Felder.
Kurz: „Datensatz hinzufügen“ der Subform muss aktiv sein -> anklicken -> Eigenschaften der Spalten editierbar.[/quote]genial …es genügt auch das Subform zu deaktivieren, mit ok zu bestätigen, dann wieder aktivieren, wieder mit ok bestätigen, Neuen Datensatz im Subform hinzufügen und die RICHTIGE spalte anklicken, denn wenn man eine andere Spalte anklickt, ist wieder alles deaktiviert :S
Ist halt schon ziemlich zäh!
Wegen der anderen Geschichte muss ich mal nachschauen, wie ich das gelöst habe, sollte aber meiner Meinung nach trotzdem möglich sein.
5 April 2012 um 16:42 Uhr #5451Frank Pavlic
Teilnehmerdas mit der falschen Spalte habe ich schon wieder verdrängt. Zäh ist es allemal, allerdings besser als gar nichts. Gibt es hierfür bereits einen Bug-Report?
Danke dir schon einmal im Voraus fürs Nachschauen.
Gruß
Frank
5 April 2012 um 16:44 Uhr #5452Frank Pavlic
TeilnehmerJIRA-Eintrag gibt es bereits – NUCLOS-365 ist die Nummer.
5 April 2012 um 16:51 Uhr #5457Markus Glitzner
Teilnehmerbei mir ist es in der Tat so, dass ein Artikel nur von einem Lieferanten sein kann.
Allerdings besteht mein VLP in den Bestellpositionen auch aus zwei Parametern. Zur Erklärung: Die Bestellung hat ein Referenzfeld zum Auftrag und zum Lieferanten. In den Bestellpositionen sollen jetzt nur Auftragspositionen mit dem Lieferanten der Bestellung und des jeweiligen Auftrags angezeigt werden. Ist im Prinzip dasselbe, wie bei dir.
vielleicht helfen dir die Screenshots weiter …
Attachments:5 April 2012 um 18:57 Uhr #5460Frank Pavlic
TeilnehmerHallo Hugo,
danke für deine Beschreibung und Screenshots, aber das ist nicht ganz das ,was ich lösen muss. Dadurch, dass Du eine 1:1 Beziehung zwischen Artikel und Lieferant hast, reicht es in deinem Fall immer aus, mit nur einem Input-Parameter die Informationen entsprechend aufzubereiten. Du hast zwar einen VLP mit zwei Input-Parametern implementiert, allerdings musst Du nur entweder lieferantid _oder_ artikelid als Input mitgeben. In meinem Falle ist es aber so ,dass ich dem Preise-VLP lieferantid _und_ artikelid mitgeben muss, dass ich dann auf die richtige Preisliste komme. Und das ist, weil ich eine n:m Beziehung habe zwischen Artikel und Lieferanten, gesteuert über die Preistabelle.
Und das Schlimme ist , dass ich momentan auch keine Designänderung des Tabellenschemas sehe, um evtl. das Problem lösen zu können. Also nun doch Groovy evaluieren …Gruß
Frank
5 April 2012 um 19:22 Uhr #5461Markus Glitzner
Teilnehmerok, verstehe.
bei mir ist es eine 1:n, aber das meintest du vermutlich eh. Wäre blöd, wenn jeder Lieferant nur einen Artikel haben könnte 😉
Das ist schon richtig, dass ich immer nur einen Parameter übergebe, aber erst wenn beide ausgewählt sind, bekomme ich über den VLP die entsprechenden Datensätze.
Eine Idee noch – was ist, wenn du in deiner Preistabelle, neben den Artikel auch den Lieferanten speicherst. Ist zwar nicht mehr ganz sauber von DB Design her, aber ich hab mir so auch schon geholfen, weil zusammengesetzten Fremdschlüsel eben nicht umsetzbar sind.
Gruß
Hugo5 April 2012 um 19:30 Uhr #5462Frank Pavlic
Teilnehmeräähh ja, natürlich 1:n :whistle: .
Das ist ja interessant, dass Du nur eine Liste bekommst, wenn wirklich beide ausgewählt sind. So wie es aussieht, muss ich mein Verständnis der VLP noch einmal überdenken.
Danke dir.
Gruß
Frank
5 April 2012 um 21:35 Uhr #5463Frank Pavlic
TeilnehmerHallo Hugo,
kaum macht man es richtig und schon funktioniert es. Vielen Dank für deinen Info-Input. Es lag am Kopf, welcher vor dem Monitor sitzt, VLPs einfach nicht richtig verstanden. Meine Ursprungsidee war schon richtig nur nicht konsequent durchgeführt. Die Wertelisteaktualisierung für Preis-VLP aus dem Feld Lieferant fehlte noch.
Deine Lösung war goldrichtig. Manchmal wäre es besser, einfach mal zu machen und weniger zu denken B)Nebenbei habe ich mich noch mit dem Build von nuclos beschäftigt die aktuelle Git-HEAD durchgebaut. Yeah, hat sich voll gelohnt, jetzt kann man wieder mit dem Layout-Editor arbeiten.
Gruß
Frank
6 April 2012 um 10:24 Uhr #5464Markus Glitzner
Teilnehmerfreut mich, wenn ich helfen konnte.
etwas gefinkelt sind sie schon, die VLPs, aber man kann interessante Sachen damit machen. z.B. ist es auch möglich, dass ein VLP erst alle Artikel anzeigt und wenn ein Lieferant ausgewählt ist, werden im VLP nur mehr die Artikel, des ausgewählten Lieferanten angezeigt.
Gruß
Hugo -
AutorBeiträge