[Gelöst] Indicator Problem

16. November 2007 22:39

Hallo liebes Forum,

ich habe ein Problem mit Indicatoren die in einer SubForm zur Verwendung kommen.

Wenn ich in der Mainform auf den nächsten Datensatz navigiere der weniger Zeilen hat als der Vorherige, bleiben die Indicatoren vom voherigen Datensatz "stehen".

Zum Beispiel:

aktuelle Datensatz hat 4 Zeilen, somit 4 Indicatoren und der nächste Datensatz hat nur 2 Zeilen und es erscheinen dennoch 4 Indicatoren (2 werden korrekt angezeigt und 2 vom letzten Datensatz).

Erst wenn ich irgend ein aktives Fenster (z.B. Windows Explorer) über die Form schiebe und wieder zurück nehme, wird es korrekt angezeigt. Es scheint mir eine Art "Refresh" Problem zu sein. Ich habe einige Befele bereits ausprobiert wie z.B. UPDATECONTROLS aber egal was ich versuche, es scheint nix zu bringen.

Hatte vielleicht jemand ein ähnliches Problem und konnte dieses lösen?

Gruß
Pierre
Zuletzt geändert von PierreC82 am 17. November 2007 17:00, insgesamt 3-mal geändert.

16. November 2007 22:47

Hast du schon den Befehl CurrForm.UPDATE(FALSE); ausprobiert?

16. November 2007 23:13

Ich hatte diesen Befehl auch mal versucht, habe allerdings eine Fehlermeldung bekommen:

"Sie haben nicht genug Stackspeicher, um die Aktivität auszuführen"

Ich habe diesen Befehl im OnAfterGetRecord Trigger gesetzt, oder muss/sollte der Befehl woanders aufgerufen werden?

16. November 2007 23:16

Nimm mal den OnAfterGetCurrRecord.

16. November 2007 23:29

Hallo Natalie,

es erscheint leider immer noch der Fehler, auch im OnAfterGetCurrRecord Trigger :(.

16. November 2007 23:37

Also nochmal, du hast eine klassische Main-/Subformkonstellation?

Wenn die Zeilen nicht richtig aktualisiert werden, liegt das (nach meiner üblen Erfahrung nach) eigentlich nur daran, dass du für die Subform keinen Subformlink angegeben hast. Ohne den aktualisiert sich die Subform aber nicht von allein.

Dein Problem war aber ein anderes, oder?

17. November 2007 00:10

Ja genau ich habe eine klassiche Main-/Subformkonstellation und habe diese verlinkt.

Das Problem ist, wenn ich in der Mainform auf den nächsten Datensatz navigiere, dass die Zeilen(der Indicator) in der SubForm stehen bleibt, wenn der nächste Datensatz weniger Zeilen hat als der Vorherige.
(Beispiel für die Indicatoren)
1. Datensatz hat 4 Zeilen
a = 10%
b = 20%
c = 30%
d = 40%

2. Datensatz hat jetzt nur 2 Zeilen
a = 50%
b = 60%

und jetzt kommts, es werden trotzdem c = 30 % und d = 40% vom voherigen Datensatz angezeigt obwohl der Datensatz nur 2 Zeilen hat.

Ich hoffe ich konnte mich verstädlich ausdrücken, ansonsten mache ich gerne mal einen Screenshot davon
Zuletzt geändert von PierreC82 am 17. November 2007 00:12, insgesamt 1-mal geändert.

17. November 2007 00:11

Aaaaaaaaaaaaah jetzt erst versteh ich das mit den Indikatoren *g*
Jaja, spät am Abend .... Hm.
Screenshot kann zumindest nicht schaden.

17. November 2007 00:18

Hm ich konnte das Phänomen auf ganz anderer Ebene nachstellen:

Hab testhalber in die Form 46 (Subform) einen Indikator eingefügt (zeigt auf die "Line No.", Minimum 10000, Maximum 50000) und die Form alleine gestartet (also über alle VK-Zeilen).
Nach der letzten VK-Zeile gehen die Indikatoren mit unterschiedlichen Werten einfach weiter obwohl keine Daten mehr vorliegen.
Klicke ich auf diese Zeilen, aktualisieren sie sich.

Ob das das gleiche Problem ist?

17. November 2007 00:23

Hallo Natalie,

hört sich exakt so an genau!

Ich versuche mal die Screenshots reinzusetzen...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

17. November 2007 00:28

Hm, ich glaube jetzt einfach mal, dass wir beide das gleiche Indikator-Problem haben.
Und leider muss ich dir sagen: Keine Lösung gefunden :-(

17. November 2007 00:35

Trotzdem vielen Dank für die Hilfe!

Eigentlich ist das ein ganz primitives Problem...aber doch sehr hartnäckig :)

17. November 2007 10:45

Nun, es gibt eine Möglichkeit. Diese ist allerdings eher ein Hack. Hier am Beispiel der Sales Order:

Code:
  PROPERTIES
  {
[...]
    TimerInterval=150;
[...]
   }

    OnAfterGetCurrRecord=BEGIN
                           UpdateInfoPanel;
                           AllowFormRedraw := TRUE;
                         END;

    OnTimer=BEGIN
              IF AllowFormRedraw THEN BEGIN
                CurrForm.SalesLines.WIDTH(CurrForm.SalesLines.WIDTH - 20);
                CurrForm.SalesLines.WIDTH(CurrForm.SalesLines.WIDTH + 20);
                AllowFormRedraw := FALSE;
              END;
            END;

      AllowFormRedraw@1140000 : Boolean;


Kurz: Globale Variable vom Typ Boolean, TimerInterval der Form auf ca. 150, Variable im OnAfterGetCurrRecord auf TRUE, im Timer Event das kleine Codestück.

Dieser Hack funktioniert in ca. 90% aller Fälle. Manchmal gibt es allerdings kein Update. Getestet unter NAV 5.00.

17. November 2007 16:58

Hallo Carsten,

ich habe es gerade in Navision 4.01 getestet und es funktioniert auch hier.
Ich habe den TimerInterval was höher gesetzt, auf 700 und hierduch konnte ich fast immer ein richtiges Update erzielen. Einziger kleiner Nebeneffekt ist, dass die Form beim navigieren ein wenig nachzieht manchmal, aber damit kann ich gut leben, wenn die Form jetzt richtig dargestellt wird.

Tausend Dank für den Tipp!

Gruß
Pierre