[Gelöst] [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 07:27

Hallo liebe Community,
Ich habe die Ansicht "Artikel nach Lagerort" Form 490 nachgebaut und auf unsere Bedürfnisse angepasst. Hierfür fülle ich eine temporäre Tabelle und zeige diese in einer Form an.
Die temporäre Tabelle wird bei veränderten Eingaben aktualisiert, insofern, dass ich sie komplett lösche und die Daten erneut lese und einfüge.
Das Problem ist, dass nach jeder Aktualisierung sobald der Nutzer in eine andere Zeile klickt die Meldung "Wollen Sie diesen Datensatz umbenennen?" erscheint.
Ich glaube, dass es daran liegt, dass an der Position des Zeigers nach der Aktualisierung ein anderer Datensatz steht als vorher und er deswegen denkt, jemand wolle den Datensatz umbenennen.

Ich weiß nur nicht so recht wie ich das Problem lösen soll. Ich habe ein CurrForm.UPDATE schon an diversen Stellen ausprobiert. Leider ohne Erfolg.
Habt ihr eine Idee?
Zuletzt geändert von ThomasM am 18. Oktober 2019 10:12, insgesamt 1-mal geändert.

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 07:38

Hallo,

nach dem Einlesen "CurrForm.Update(FALSE)". Das sollte dafür sorgen, das die Form mit den neunen Daten gefüllt wird, ohne den alten speichern zu wollen.

Gruß Fiddi

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 07:53

Hi Fiddi,
Danke, aber das funktioniert leider nicht. Ich bekomme immer die Meldung "CurrForm.UPDATE kann von hier nicht aufgerufen werden." Ich schreibe die Datensätze bei der Aktualisierung direkt in die "Rec" Variable (vorher werden ber DELETEALL alle gelöscht). Füge dann neue Datensätze vie COPY & INSERT ein und rufe noch RESET und ein FINDFIRST auf um ganz oben zu stehen & alle vorherigen Filter zu entfernen.

Code:
RESET;
DELETEALL;


lItem.SETFILTER("Location Filter",gLocationFilter);
lItem.SETFILTER(Inventory, '<>0');
InsertRecords(lItem);


InsertRecords:
Code:
IF piItem.FINDSET THEN
  REPEAT
    IF NOT GET(piItem."No.") THEN BEGIN
      Rec.COPY(piItem);
      Rec.INSERT;
    END;
  UNTIL piItem.NEXT = 0;


Gruß,
Thomas

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 08:01

Wo hast du das CurrForm.Update denn eingefügt?

Das muss in der Form unmittelbar nach dem InsertRecords aufgerufen werden.

Gruß Fiddi

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 08:24

Hi,
ich rufe die Funktion "InsertRecords" mehrfach auf. Ich muss das auf mehrere 50000er Feldern filtern die keine FlowFields sind bzw. nicht durch FlowFilter eingegrenzt werden können.
Bekomme aber immer die Fehlermeldung, dass ich das CurrForm.UPDATE(FALSE) hier nicht aufrufen darf.

Die Ansicht hat Checkboxen:
Artikel_Nach_Lagerort.JPG


je nachdem welche Checkbox gesetzt ist laufe ich durch eine andere Bedingungen in meiner Update Funktion:
Artikel_Nach_Lagerort2.JPG

Code:
IF gExternalLocationOnly THEN BEGIN
  lItem.SETFILTER(lItem."Item Category Code", '<>''''');
  lItem.SETFILTER("Location Filter",gLocationFilter);
  lItem.SETFILTER(Inventory, '<>0');
  InsertRecords(lItem);
  CurrForm.UPDATE(FALSE);
END;


An der Stelle des UPDATE'S kommt dann schon wie Fehlermeldung. Aufgerufen wird die Funktion zur Aktualisierung aus dem OnValidate Trigger der Checkbox.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 08:49

Wo rufst du CurrForm.Update auf, in der Form oder irgendwo anders im Record oder in einer Codeunit?
Bau den Update mal direkt in die Form ein.

Gruß Fiddi

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 08:58

Hi,
Die Funktion zur Aktualisierung ist in der Form enthalten (UpdateInvCalc) und wird direkt im OnValidateTrigger der CheckBox auf dem Bild ausgerufen. Alles innerhalb des Form Objekts. Ich nutze keine Funktionen aus der Tabelle oder eine Codeunit.
Ich hatte auch versucht das UPDATE am Ende des OnValidate Triggers aufzurufen, bekam dabei aber die selbe Meldung.

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 09:08

Ist denn "SourceTableTemporary" überhaupt auf "Yes"?
Ansonsten sind hier noch zwei mögliche Fehlerquellen:
https://support.microsoft.com/en-us/hel ... ose-the-av

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 09:42

Hi Kowa,
Ich glaube das der Link nicht auf mein Problem zutrifft da er nur ein Fehlerverhalten beim Reservieren von Mengen für Verkaufsaufträge beschreibt. :-(

Die SourceTableTemporary Eigenschaft ist auf "Yes"!

Ich war anfangs auch der Meinung, dass CurrForm.UPDATE die Lösung ist. Konnte es aber nirgends aufrufen :-(

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 09:53

Hi,
ich bin einen Schritt weiter. Rufe ich die Funktion zur Aktualisierung der Datensätze nicht direkt im OnValidate Trigger der Checkbox auf klappt das "CurrForm.UPDATE". (beispielsweise über einen separaten Button auf dem Form).
Also ist nur der Aufruf direkt aus dem Trigger ein Problem.

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 10:12

Ich habe die Lösung!
Ich war im "falschen" Trigger. Ich habe den Aufruf zur Aktualisierung in den OnPush Trigger verlagert und bekomme keine Fehlermeldung mehr.
Es ist also im OnValidate Trigger nicht erlaubt ein CurrForm.UPDATE aufzurufen.

Grüße & Danke für eure Unterstützung!
Thomas

Re: [CC] Form & temp. Source Table -> Aktualisierung?

18. Oktober 2019 10:31

ThomasM hat geschrieben:Es ist also im OnValidate Trigger nicht erlaubt ein CurrForm.UPDATE aufzurufen.

Da nicht, aber im OnAfterValidate-Trigger.