Record übernehmen in Form und wieder zurück

16. September 2011 13:45

Hallo,

ich übernehme einen Record in einer Form, bearbeite ihn dort:

Rec.Feld := 'tralala';

if form.runmodal(Rec) = ACTION=OK then begin //jetzt Rec.Feld := 'blabla'; )
Rec2.Feld := Rec.Feld;...


Jetzt will ich aber den Wert in Rec2 übernehmen den ich in der Form bearbeitet habe....aber Navision nimmt den Wert von VOR der Form.
Was mache ich denn da falsch?

Re: Record übernehmen in Form und wieder zurück

19. September 2011 07:27

Pegasus hat geschrieben:ich übernehme einen Record in einer Form, bearbeite ihn dort:
Rec.Feld := 'tralala';
if form.runmodal(Rec) = ACTION=OK then begin //jetzt Rec.Feld := 'blabla'; )
Rec2.Feld := Rec.Feld;...


Woher soll der rec aus runmodal wissen, welcher Datensatz es ist?

Oder anders formuliert: rec ist eine (evtl. gefilterte) Tabelle...

Re: Record übernehmen in Form und wieder zurück

19. September 2011 08:31

sollte das nicht heissen
Code:
rec2 := rec;
if form.runmodal(rec2) = action::lookupok then begin

end;

Re: Record übernehmen in Form und wieder zurück

19. September 2011 09:12

In diesem Fall ist die Form eine Form die sich auf EINEN Datensatz bezieht. Und ich möchte eigentlich nach der Bearbeitung in der Form
mit dem bearbeiteten Datensatz weitermachen.

Hilft nur ein Commit in der Form am Schluss? oder geht es auch anders?

Re: Record übernehmen in Form und wieder zurück

19. September 2011 09:21

Hallo,

ich würde es mit:
Code:
rec2 := rec;
if form.runmodal(rec2) = action::lookupok then begin
  form.GETRECORD(rec2);
end;
versuchen.

Re: Record übernehmen in Form und wieder zurück

19. September 2011 09:34

form.getrecord kennt navision so nicht :-(

steht aber auch so in der HIlfe mit form.getrecord.

ich habe aber auch die Form mit beenden geschlossen und will dann mit dem bearbeiteten Record weitermachen.....

Re: Record übernehmen in Form und wieder zurück

19. September 2011 11:06

Pegasus hat geschrieben:form.getrecord kennt navision so nicht :-(

Du musst die Form schon als Variable anlegen. Dann kennt NAV die Funktion GETRECORD auch.

Gruß, Marc

Re: Record übernehmen in Form und wieder zurück

19. September 2011 15:01

Irgendwie hab ich den Faden verloren..... Jetzt habe ich zwar die Form als Variable...bekomme jetzt aber gar nichts zurück.
Fehlt mir da ein Verweis?


IF FORM.RUNMODAL(FORM::"Create Interaction",SegLine,SegLine."Interaction Template Code") = ACTION::OK THEN BEGIN
FormInteraction.GETRECORD(SegLine); .................

Re: Record übernehmen in Form und wieder zurück

19. September 2011 15:17

Hi,

es gibt zwei Möglichkeiten eine Form aufzurufen.
Code:
1: FORM.RUN(FORM::"Form Name");
2: MeineForm.RUN

In der ersten Variante gibst du als Parameter die FormID mit (FORM::"Form Name").
Bei der zweiten Variante legst du eine Variable MeineForm an, diese ist vom Typ Form und hat als Subtype die FormID.
Hier benötigst du das FORM::"Form Name" nicht mehr.
Dafür kannst du in dieser Variante sämtliche globale Funktionen der Form verwenden.

In deinsem Beispiel also:
Code:
If MeineForm.RUNMODAL = Action::OK THEN BEGIN ...

Re: Record übernehmen in Form und wieder zurück

19. September 2011 15:29

aber bei der vorherigen Form hat er mir die Form mit den Daten gefüllt....jetzt nicht mehr...
ein Form.SETRECORD führt da auch nicht zum Erfolg

..............
SegLine.Projekt := "No.";
SegLine.VALIDATE(Date,WORKDATE);
SegLine.INSERT;

FormInteraction.SETRECORD(SegLine);
IF FormInteraction.RUNMODAL = ACTION::OK THEN BEGIN;
//IF FORM.RUNMODAL(FORM::"Create Interaction",SegLine,SegLine."Interaction Template Code") = ACTION::OK THEN BEGIN
FormInteraction.GETRECORD(SegLine);
........

Re: Record übernehmen in Form und wieder zurück

19. September 2011 15:33

Du kannst noch probieren vorher einen Filter auf die Primärfelder von SegLine zu setzen bevor du SETRECORD verwendest.
Das sollte aber nicht nötig sein.

Zeigt er gar keinen Datensatz, oder einfahc nur den Falschen?

Re: Record übernehmen in Form und wieder zurück

19. September 2011 15:50

er übergibt den richtigen datensatz...aber er füllt jetzt die Form mit irgendwelchen anderen DIngen aus.die nichts mit dem datensatz zu tun haben, den ich übergeben will.

Muss wohl irgendwie an der Form liegen ....

Re: Record übernehmen in Form und wieder zurück

19. September 2011 16:02

Ist es eine der der Standard-Forms?
Dann könnte man da ja mal drauf schauen.

Re: Record übernehmen in Form und wieder zurück

19. September 2011 16:14

ja es ist die Form "Create Interaction" die ich füllen will.....UND deren Werte ich nach der Bearbeitung aber auch nochmal benutzen will....

Re: Record übernehmen in Form und wieder zurück

19. September 2011 16:47

Puuh, da hast du dir natürlich eine Spezialform ausgesucht.
Es wundert mich nur, dass es bei FORM.RUNMODAL ging.

Hast du mal den Aufruf mit dem Debugger verfolgt in beiden Varianten?

Re: Record übernehmen in Form und wieder zurück

19. September 2011 16:51

In der ersten Variante mit FORM.RUNMODAL(3 Variablen übergabe) bekomme ich alles rein ...ich bekomme nur nichts raus aus der Form.
Ich möchte aber mit dem bearbeiteten Datensatz noch andere Dinge tun...... (und eigentlich nichts an der Form ändern).

Bei der Version mit Formvariable.runmodal bekomme ich schon nichts mehr rein...........

Re: Record übernehmen in Form und wieder zurück

20. September 2011 08:49

Kannst du debuggen was beim Setrecord genau passiert?
Vielleicht liegt hier der Unterschied bei der Form.

Re: Record übernehmen in Form und wieder zurück

20. September 2011 11:26

per debugger scheint er bei dem SETRECORD nicht die Filter zu übernehmen die eigentlich eingestellt sind.
und kommt dann auf einen ganz anderen Record von dem er dann die daten übernimmt. OBWOHL er den eigentlichen Record
übernommen hat

Re: Record übernehmen in Form und wieder zurück

20. September 2011 12:01

Du kannst höchstens mal eine eigene Funktion in der Form testen:
Code:
Rec := Rec_Par;
SETRANGE("Segemnt No.","Segement No.");
SETRANGE("Line No.","Line No.");

Und die dann anstelle con Setrecord verwenden.

Rec_Par ist hierbei der Parameter der Funktion (vom Typ Record, Subtyp Segemnt Line).

Re: Record übernehmen in Form und wieder zurück

20. September 2011 14:31

Seit wann soll SETRECORD denn die Filter übernehmen? Um die Filter auf die Form zu bekommen brauchst du doch:
Code:
DeinForm.SETTABLEVIEW(Rec)