[gelöst] Anzeigen aller neu erstellten Datensätze

29. August 2007 16:06

Hallo,
ich hänge schon viel zu lange an folgendem Problem:
Aus einer Form heraus erstelle ich in einem Menue Item neue Datensätze. In der Form ist jedoch zunächst nur der letzte erstellte Datensatz in der ersten Zeile sichtbar. Der Cursor steht in der zweiten Zeile, in der nur das Feld des RunFormLinks belegt ist. Um alle neu erstellten Datensätze zu sehen, muss ich jetzt entweder nach oben scrollen oder erst eine andere und danach wieder die Ausgangsform aktivieren. Das würde ich aber gerne vermeiden. Hat jemand eine Idee, wie ich das lösen kann?
Zuletzt geändert von MF am 12. September 2007 14:01, insgesamt 1-mal geändert.

29. August 2007 16:10

Wenn die Datensätze sich nicht gerade in einer Subform befinden (dann siehe mein ganz ännliches Problem), dann sollte es genügen, im MenuItem-OnPush-Trigger nach deinem Funktionsauftruf ein CurrForm.UPDATE; aufzurufen.
Wenn das nicht helfen sollte, dann hättest du sogar das gleiche Problem wie ich und solltest dir mal die Lösungsansätze ansehen, mit denen ich es bisher probiert habe.

29. August 2007 16:25

Vielen Dank für die schnelle Antwort. Die Datensätze befinden sich nicht in einer Subform. Leider bewirkt CurrForm.UPDATE im MenuItem-OnPush-Trigger nichts. Kann das Problem dadurch verursacht werden, dass die neuen Datensätze in einer REPEAT-UNTIL-Schleife generiert werden, so dass nur der letzte angezeigt wird?

29. August 2007 16:51

MF hat geschrieben:Leider bewirkt CurrForm.UPDATE im MenuItem-OnPush-Trigger nichts.

Hast du es auch NACH deinem Funktionsaufruf (für die Erzeugung der neuen Datensätze) platziert?

Kann das Problem dadurch verursacht werden, dass die neuen Datensätze in einer REPEAT-UNTIL-Schleife generiert werden, so dass nur der letzte angezeigt wird?

Hm kann ich so nicht sagen, aber schau dir doch an, was ich in meinem Thema (siehe erster Antwortbeitrag von mir) bisher dazu gelöst habe. Vielleicht löst es dein Problem.

29. August 2007 17:15

Leider nicht. Habe jetzt alle Trigger mit dem UPDATE-Befehl durch. Ich stecke fest ...

29. August 2007 17:51

Hast du auch die Stelle mit dem FIND ausprobiert ...?

29. August 2007 18:03

Ja, habe ich. Ich versuche gerade zwischenrein die Artikelkarte zu aktivieren und dann wieder zu meiner Problemform zurückzukehren. Wenn ich das von Hand mache, habe ich den gewünschten Effekt. Allerdings kann ich von der Artikelkarte aus nicht mehr die Form aktivieren, da ich dann eine andere CurrForm habe.

29. August 2007 18:11

Jetzt bin ich leider überfragt ...

30. August 2007 09:46

Guten Morgen Markus,

ich habe es gerade mit dem folgenden C/AL-Code probiert:
Code:
Item.RESET;
Item.FIND('+');

Rec.INIT;
Rec."Nr.":=INCSTR(Item."Nr.");
Rec.Beschreibung:='Neuer Artikel';
Rec.INSERT;


Item ist eine Record-Variable. (Die Bezeichnung Rec könnte man auch weglassen)

Den C/AL-Code habe ich hinter dem Button (siehe Abbildung) gelegt. Nach dem Drücken dessen wurde ein neuer Datensatz erzeugt und direkt auch angezegit. Getestet mit der Version 2.6.

Gruß, Marc
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

30. August 2007 12:00

Hallo Marc,

danke für deine Hilfe. Ich glaube, mein Problem ist, dass gleich mehrere Datensätze in einer REPEAT-UNTIL-Schleife erzeugt werden, von denen ich nur den letzten direkt angezeigt bekomme.

Ich versuche nochmal das Problem etwas ausführlicher zu beschreiben:
In der Artikelkarte habe ich unter dem Menu Button 'Artikel' das Menu Item 'Stückliste bearbeiten' erstellt (RunObjekt: Form Stückliste, RunFormView: SORTING(Stücklistenart,Stücklistennr.,Zeilennr.) WHERE(Stücklistenart=CONST(" ")), RunFormLink: Stücklistennr.=FIELD(Nr.)).
Beim Klick auf den Menu Item wird die Form 'Stückliste' geöffnet. In der ersten Zeile ist lediglich die Stücklistennr. vorgelegt (durch RunFormLink). Ich möchte nun die Stücklisten Komponenten der Stücklistenart STL1 (welche die Stückliste der ersten Ebene unter dem Artikel mit der Stücklistennr. darstellen) bearbeiten. Dazu ändere ich die Stücklistenart von STL1 auf 0 ab und füge die neuen Datensätze in die Tabelle Stücklisten Komponente ein. Dazu folgender Code in Form 'Stückliste', Menu Button 'Stückliste', Menu Item 'STL1 laden':
Code:
StücklistenKomponente.SETRANGE(Stücklistenart,Stücklistenart::STL1);
StücklistenKomponente.SETRANGE("Stücklistennr.","Stücklistennr.");
IF StücklistenKomponente.FIND('-') THEN REPEAT
  StücklistenKomponente2.COPY(StücklistenKomponente);
  StücklistenKomponente2.Stücklistenart := 0;
  StücklistenKomponente2.INSERT;
  CurrForm.UPDATE;
UNTIL StücklistenKomponente.NEXT = 0;
CurrForm.UPDATE;

Nach Klicken des Menu Items 'STL1 laden' sehe ich in der Form in der ersten Zeile den letzten erstellten Datensatz und in der zweiten Zeile wird wieder die Stücklistennr. vorgelegt. Möchte ich alle Datensätze sehen, muss ich in der Form nach oben scrollen oder erst die Artikelkarte und danach wieder die Form Stückliste anklicken. Das will ich allerdings vermeiden.

12. September 2007 14:04

Jetzt habe ich die Lösung:
An meinen Code ist die Zeile

Code:
IF find('-') THEN;

anzuhängen. Alle Datensätze werden sofort angezeigt, der Cursor wird im ersten Datensatz platziert.

[Code-Tag hinzugefügt.]

Gruß, Marc Teuber
MSDynamics.de-Team