(CC) Alle Zeilen eines Listforms via trigger aktuallisieren

5. August 2011 14:45

Hallo folgende situation:

Ich habe eine Zeilen-Tabelle die automatisch via "onValidate - trigger" Werte in eigenen Feldern aktuallisiert das Problem ist, dass dabei nicht nur Werte im aktuellen record verändert werden sondern auch werte in anderen zugehörigen Zeilen.

beispiel (fiktiv): ich habe auf der Kopftabelle einen wert: maximaler aufwand, ändere auf Zeile A das Feld "Mindestaufwand" dann müssen auf Zeilen B und C die felder "verfügbarer Restaufwand" berechnet und verteilt werden.

die Berechnung und zuweisung der werte stellt kein Problem für mich dar. Mein problem liegt darin, dass der Anwender die aktuallisierten werte nicht sofort sieht. er sieht sie Erst wenn er mit dem Cursor zur angepassten Zeile wandert, wird der korrekte wert angezeigt.

gibt es eine möglichkeit das listenform als ganzes aktuallisieren zu lassen? wie schon gesagt findet die berechnugn auf der Tabelle statt. CurrForm.update funktioniert natürlich nur auf dem aktuellen subform.

vielen dank für eure Hilfe.

Re: (CC) Alle Zeilen eines Listforms via trigger aktuallisie

5. August 2011 15:42

Was du einmal versuchen kannst (in deinem Beispiel) ist folgendes:

1) Im OnModify-Trigger der Form ein CurrForm.UPDATE

2) Programmiere im OnValidate des Feldes Mindestaufwand ein MODIFY(TRUE) ein (vorausgesetzt die Berechnung ist im OnModify-Trigger der Tabelle).
Anschliessend im OnValidate des Felder ein CurrForm.UPDATE.

2 natürlich nur wenn 1 nichts bringt.

Re: (CC) Alle Zeilen eines Listforms via trigger aktuallisie

5. August 2011 15:50

1) hab ich bereits versucht... die reaktion von NAV ist ein Absturz des clients (und eine blockade des DB-Files bis man dei slave.exe im taskmanager killt)

zur anderen variante: meinst du im form? das problem ist dass das spiel auch vice versa funtionieren muss. Sprich: wenn ich z.b. in Zeile B "verfügbarer restaufwand" steigern würde müsste das in Zeile C den wert senken d.h. ich müsste praktisch auf jedem feld in der tabelle ein currentform update einbauen.


Ich muss jetzt (nach mehrstündiger lösungssuche -.-) wohl sowieso einen anderen lösungsansatz - vermutlich über "Funktion > neu berechen" wählen da dem Kunden nun eingefallen ist, dass er auch die möglichkeit haben will bereits vorhanende Zeilen wieder zu entfernen... zerbrecht euch also nicht mehr all zu sehr den kopf an der sache :-/

Re: (CC) Alle Zeilen eines Listforms via trigger aktuallisie

5. August 2011 16:07

Hallo,

wenn du die Information "vergfügbarer Restaufwand" nicht zum berechnen benötigst, bzw. nur zu Fehlerprüfung, baue dir eine Funktion in den SalesHeader, die zur Laufzeit den "Verfügbaren Restaufwand" berechnet und als return- Wert zurück gibt. Den Aufruf der Funktion packst du dann in die Sourceexpression eines Formfeldes (ob jetzt Subform oder Header sei mal dahingestellt (der Restaufwand sollte ja für alle Auftragszeilen gleich sein))

Gruß, fiddi