Locher
28th June 2005, 11:38
Halle Baan-Programmierer,

ich kann den script-Befehl zum erneuten lesen aller Daten für eine Maske
nicht finden - manuell ist er über "Bearbeiten" + "Neu aufbauen" bzw. Ctrl+R
auszuführen.

Will den Befehl nach
choice.update.db:
after.choice:
aufrufen.

Vielleicht hat kann mir jemand auf die Sprünge helfen? :)

Viele Grüße
H.Locher

hklett
28th June 2005, 12:08
choice.interrupt ist die wahl

bdittmar
28th June 2005, 13:59
Halle Baan-Programmierer,

ich kann den script-Befehl zum erneuten lesen aller Daten für eine Maske
nicht finden - manuell ist er über "Bearbeiten" + "Neu aufbauen" bzw. Ctrl+R
auszuführen.

Will den Befehl nach
choice.update.db:
after.choice:
aufrufen.

Vielleicht hat kann mir jemand auf die Sprünge helfen? :)

Viele Grüße
H.Locher

Ist es das ?
Syntax

void do.all.occ( function_name [, ... ] )

Description

This executes the specified function for all occurrences on the current form. When included in the before.choice subsection of a choice.update.db section, the function is executed only for updated occurrences.

Arguments

function_name The name of the function that must be executed. The function must be of type void.
... Use these optional arguments to pass one or more arguments to the specified function. Use commas (,) to separate the arguments.
Context

4Gl library function.
You can use this function only in 4GL scripts, of types 1, 2, and 3. You can use it in the following event subsections:

before.choice, on.choice, after.choice
before.input, on.input, after.input, check.input
when.field.changes
before.zoom, after.zoom

See also

do.occ(), do.occ.without.update(), on.old.occ()

Example

declaration:
long old_inventory

choice.cont.process:
on.choice:
do.all.occ( update_occurrences, 9999 )

main.table.io:
before.rewrite:
on.old.occ( get_old_inventory )
pctst999.change = pctst999.item - old_inventory

functions:

function void update_occurrences( long new_val )
{
pctst999.special = new_val
}

function void get_old_inventory()
{
old_inventory = pctst999.item

}


oder

BaanERP Programmers Guide


refresh.curr.occ()

--------------------------------------------------------------------------------

Syntax
void refresh.curr.occ()

Description
This reads the current record and refreshes it on screen. All references on the form are read again. For example, in the case of a zoom from a field to a session where the record can be modified, calling refresh.curr.occ() refreshes the occurrence on the parent form also.

Note that the function locks the record before reading it; this is necessary for delayed locks.

Context
4GL library function.

You can use this function only in 4GL scripts. You cannot use it in programs of type 4.


mfg

günther
28th June 2005, 17:19
Ähm, jetzt muss ich doch auch noch was melden. Denn choice.interrupt habe ich noch selten gebraucht, und die multi-occurence Lösung ist auch nicht immer nötig.

Ich würde erst mal bei Ctrl-R / "Neu Aufbauen" auf ein schlichtes "execute(find.data)" tippen.

Gruß Günther

bdittmar
28th June 2005, 17:37
Ähm, jetzt muss ich doch auch noch was melden. Denn choice.interrupt habe ich noch selten gebraucht, und die multi-occurence Lösung ist auch nicht immer nötig.

Ich würde erst mal bei Ctrl-R / "Neu Aufbauen" auf ein schlichtes "execute(find.data)" tippen.

Gruß Günther


Hallo,

wahrscheinlich ist es auch nur ein refresh() ???

mfg

Locher
29th June 2005, 14:08
Nach sovielen Anregungen möchte ich mich zunächst einmal für die Mitarbeit bedanken!!

Ich habe ehrlich einiges probiert, aber vielleicht fehlen mir auch infos
der internen Abläufe von Baanroutinen und deren Abhängigkeiten.

Auf Grund eurer Anregungen konnte ich das Problem in meiner Umgebung
lösen. Nochmals die Ausgangslgage:

Nach Änderung von Inputfeldern und dem drücken des Button "Speichern" sollten alle Felder (auch externe Tabellenfelder) aktuell angezeigt werden.

Zunächst habe ich einiges probiert:

|--------------------------------------------------------------------
| 1. * wäre die beste Lösung aber...


choice.update.db:
after.choice:

execute(find.data) | *ist nicht erlaubt – wegen recursion!

|-------------------------------------------------------------------
| 2. * geht, aber weicht von der Standardbedienung ab...

choice.user.1: | update.db läuft automatisch davor ab -
on.choice: |also ist der Klick auf "Speichern" nicht nötig

execute(find.data)

|* Ist etwas unschön, da der user dafür standardmäßig den Button „Speichern“ benutzt
|-------------------------------------------------------------------

| 3. * so geht’s...

field.tdsls041. oqua:| in Abhängigkeit der Änderung von Inputfeldern der
after.input: | maintable werden Änderungen von anderen
| Maskenfeldern (es sind auch Felder externer tabellen)
| vorgenommen.

display.curr.occ() | Felder werden wohl aktualisiert aber noch
|nicht sichtbar auf der Maske angezeigt

| Nach Klick auf den Button "Speichern" (choice.update.de)
| werden alle Daten aktuell angezeigt!

Ziel erreicht, aber ob der Weg der kürzeste war?

Auf jeden Fall wünsche ich Euch allen einen schönen Tag! :)

Gruß
H.Locher