[gelöst] Factbox mit temporären Daten

24. November 2015 11:29

Hallo.

Wollte mal fragen ob jmd. eine Möglichkeit kennt eine Factbox mit temporären Daten zu füllen!?

Das Thema gab es schon mal im NAV 2013 Forum ... die Erkenntnis war dort aber, das es wohl eher nicht geht.
Evtl. hat sich dies unter NAV 2015 geändert? Ggf. mit der Property "UpdatePropagation"?

Danke und Gruß,
Mr.`Nav.
Zuletzt geändert von Mr.Nav am 27. November 2015 12:10, insgesamt 1-mal geändert.

Re: Factbox mit temporären Daten

25. November 2015 08:43

Hi,

das ist eigentlich sehr einfach und sollte auch schon unter 2013 oder sogar 2009 (RTC) funktionieren:

  • SourceTableTemporary=Yes
  • In OnFindRecord() aus der Filtergruppe 4 die Filter extrahieren (FILTERGROUP(4); GETFILTER(Feld); FILTERGROUP(0)) und damit neue Daten erzeugen.

Re: Factbox mit temporären Daten

25. November 2015 10:48

Dachte ich ja auch :roll:

Also Ziel ist aktuelle Bestände am Artikel nach Lagerort (nur verwendete Lagerorte).

In Artikelkarte meine Part eingebaut mit SubPageLink auf Artikelnr.
Zusätzlich OnAfterGetRecord in Artikelpage: CurrPage.ItemDetailsFactbox.PAGE.SetItemNo("No.");

In meiner Factbox im OnFindRecord, folgendes:

IF LocationLoc.FINDSET THEN
REPEAT
INIT;
"Item No." := Item."No.";
"Location Code" := LocationLoc.Code;
INSERT;
UNTIL
LocationLoc.NEXT = 0;

Der Bestand ist dann ein Flowfield.

Wenn ich nun die Artikelpage aufrufe ist die Factbox aber leer :cry:

ItemDetails.fob

ItemDetails.txt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Mr.Nav am 25. November 2015 11:11, insgesamt 1-mal geändert.

Re: Factbox mit temporären Daten

25. November 2015 10:57

Kannst du die Page mal anhängen?

Re: Factbox mit temporären Daten

25. November 2015 11:11

SilverX hat geschrieben:Kannst du die Page mal anhängen?

siehe vorheriger Beitrag

Re: Factbox mit temporären Daten

26. November 2015 08:50

SilverX hat geschrieben:Kannst du die Page mal anhängen?


Hallo Carsten.

Konntest du eine Ursache ausmachen?

Danke und Gruß

Re: Factbox mit temporären Daten

26. November 2015 09:48

Hallo,

ich würde ganz auf die Temporäre Tabelle verzichten.

alternativ kannst du als führende Tabelle auch die Lagerhaltungsdaten- Tabelle verwenden, dann hast du nur die Lagerorte in denen der Artikel auch liegt.

EDIT: Der Aufruf von
Code:
CurrPage.ItemAvail.PAGE.SetItemNo("No.");

sollte in Page 31 im OnAfterGetCurrRecord passieren.

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

Re: Factbox mit temporären Daten

26. November 2015 11:55

Sorry, hatte ich gestern nicht mehr gesehen...

Ich persönlich stehe auf so wenige Änderungen im Standard wie möglich. Noch eine Funktion jeweils aufzurufen führt nur wieder zur mehr Änderungen dort. In meiner Lösung hab ich das mal rausgenommen. Ich denke allerdings, dass es funktioniert, wenn du die Daten dann im SetItem() neu aufbaust bzw. wie Fiddi ein Update der Page machst.

In der angehängten Lösung wird nur der SubPageLink verwendet:

SubPageLink=Item No.=FIELD(No.);

Im OnFindRecord must du zwingend auch EXIT(FIND(Which)) nutzen, damit die Daten angezeigt warden (wenn die Erzeugung der Daten nicht über SetItem() läuft.

ItemDetailsWorking.txt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Factbox mit temporären Daten

26. November 2015 12:57

SilverX hat geschrieben:Ich denke allerdings, dass es funktioniert, wenn du die Daten dann im SetItem() neu aufbaust bzw. wie Fiddi ein Update der Page machst.

Ich habe die Tabelle nicht neu aufgebaut. Ich verwende keine Temporäre Tabelle, sondern Location oder SKU in Page 50000, beides würde funktionieren, und ohne großen Aufwand das Ergebnis bringen. :-?

Gruß Fiddi

Re: Factbox mit temporären Daten

26. November 2015 16:41

Danke an Euch Beide,

in der Artikelliste funktioniert es einwandfrei.

Das Einzige Problem was ich jetzt noch habe ist die Artikelkarte. Beim Aufruf derselben Page sind die Werte erst "0" und nach Aktualisierung (F5) sind sie wieder da.
Noch eine Idee?

Danke und Gruß.

Re: Factbox mit temporären Daten

26. November 2015 17:10

Welche Objekte benutzt du jetzt?

Wo rufst du "SetItem" auf?

Gruß Fiddi

Re: Factbox mit temporären Daten

27. November 2015 09:13

fiddi hat geschrieben:Welche Objekte benutzt du jetzt?

Wo rufst du "SetItem" auf?

Gruß Fiddi


Hi.

Ich nutze "SetItem" im Moment gar nicht. Lt. der Beschreibung von SilverX habe ich einfach in der Factbox folgenden Aufruf:
Code:
FILTERGROUP(4);
Item."No." := GETFILTER("Item No.");
FILTERGROUP(0);

RESET;
DELETEALL;

IF LocationLoc.FINDSET THEN
REPEAT
  INIT;
  "Item No." := Item."No.";
  "Location Code" := LocationLoc.Code;
  INSERT;
UNTIL
  LocationLoc.NEXT = 0;

EXIT(FIND(Which));


Über den SubPageLink -> Item No.=FIELD(No.) Funktioniert dies in der Artikelliste ... auch wenn ich auf einen anderen Datensatz springe!
Aber bei Aufruf der Factbox in der Artikelkarte ist die Factbox erst komplett leer, aber wenn ich auf F5 drücke zeigt er die Bestände und Lagerorte korrekt an!?

Gruß,
Mr.Nav

Re: Factbox mit temporären Daten

27. November 2015 09:53

Hallo,

das Problem dürfte sein, dass der Artikel in der Artikelkarte beim ersten mal noch gar nicht gelesen ist, wenn du versuchst den Filter abzufragen.

Und wenn du schon dabei bist, teste auch gleich ob die Daten aktualisiert werden, wenn du in der Artikelkarte auf den nächsten Datensatz wechselst.

Gruß Fiddi

Re: Factbox mit temporären Daten

27. November 2015 10:17

Jetzt wird's crazy :shock:

Wenn ich in meinen Code "OnFindRecord" eine Message vor dem
Code:
 EXIT(FIND(Which));
einbaue, sind die Daten korrekt (auch beim Wechsel eines Artikels)???

Woran kann das liegen? Ein CurrPage.Update hilft an dieser Stelle leider nicht.

Re: Factbox mit temporären Daten

27. November 2015 10:42

Nun, die Message führt dazu, dass du den Fokus bzw. das aktive Control wechselst. Was wiederum nach dem schließen der Message zu einem Update der Controls im Hintergrund führt (quasi F5 also).

Ich habe es mir inzwischen, wenn irgend möglich, abgewöhnt auf temporäre Tabellen zurückzugreifen. Gerade wenn du hier mit Record- Links arbeiten möchtest, gibt das immer Probleme.

Übrigens, wenn du meine Page auf SKU umstellst, dürfte Sie auch mit einem Recordlink funktionieren.

Gruß Fiddi

Re: Factbox mit temporären Daten

27. November 2015 12:02

Mr.Nav hat geschrieben:Aber bei Aufruf der Factbox in der Artikelkarte ist die Factbox erst komplett leer, aber wenn ich auf F5 drücke zeigt er die Bestände und Lagerorte korrekt an!?
Du hast Recht, das ist mir noch gar nicht aufgefallen. Wir nutzen die Konstellation auch in unserer neuen Anwendung. Das würde ich erst einmal als Fehler einstufen, wenn auch als wenig problematisch. Denn der Filter ist nur leer, wenn die Karte nicht aus einer Liste aufgerufen wird (also direkt über die Entwicklungsgumgebung z.B.). Wenn dich das stört, dann kannst du den Code folgendermaßen erweitern:
Code:
FILTERGROUP(4);
IF GETFILTER("Item No.") = '' THEN BEGIN
  CurrPage.UPDATE(FALSE);
END;

IF GETFILTER("Item No.") <> '' THEN BEGIN
  Item."No." := GETRANGEMIN("Item No.");
END;
FILTERGROUP(0);


BTW: GETRANGEMIN() ist übrigens sinnvoller als GETFILTER :-D

Re: Factbox mit temporären Daten

27. November 2015 12:10

SilverX hat geschrieben:
Mr.Nav hat geschrieben:Aber bei Aufruf der Factbox in der Artikelkarte ist die Factbox erst komplett leer, aber wenn ich auf F5 drücke zeigt er die Bestände und Lagerorte korrekt an!?
Du hast Recht, das ist mir noch gar nicht aufgefallen. Wir nutzen die Konstellation auch in unserer neuen Anwendung. Das würde ich erst einmal als Fehler einstufen, wenn auch als wenig problematisch. Denn der Filter ist nur leer, wenn die Karte nicht aus einer Liste aufgerufen wird (also direkt über die Entwicklungsgumgebung z.B.). Wenn dich das stört, dann kannst du den Code folgendermaßen erweitern:
Code:
FILTERGROUP(4);
IF GETFILTER("Item No.") = '' THEN BEGIN
  CurrPage.UPDATE(FALSE);
END;

IF GETFILTER("Item No.") <> '' THEN BEGIN
  Item."No." := GETRANGEMIN("Item No.");
END;
FILTERGROUP(0);


BTW: GETRANGEMIN() ist übrigens sinnvoller als GETFILTER :-D


THX, dass war die endgültige Lösung. Vielen Dank!