[Gelöst] Probleme mit OnFormat Trigger

4. März 2009 19:37

Hallo,

ich habe ein OnFormat Trigger geschrieben, der mit UPDATEFORECOLOR die Farbe in einem Feld in einer Subform ändert. Der Trigger funktioniert auch wunderbar, leider wird in der ersten Zeile die Änderung ignoriert. Bei einer Aktualisierung des Formulars, z.B. durch aufrufen und schließen eines anderen Formulars erscheint dann die Zeile korrekt. Gibt es einen Befehl, der eine Aktualisierung der Spalte bzw. der Subform ausführt oder mache ich irgendwas falsch?
Zuletzt geändert von ZimmerS am 6. März 2009 12:32, insgesamt 1-mal geändert.

Re: Probleme mit OnFormat Trigger

4. März 2009 21:01

In welcher Client-Art besteht das Problem?

Re: Probleme mit OnFormat Trigger

4. März 2009 21:22

Ich benutze den klassischen Client.

Der Quelltext sieht wie folgt aus:

Die Subform greift auf die Tabelle "Sales Invoice Header" zu. Ich besorge mir die zugehörigen Daten aus der "Cust. Ledger Entry" Tabelle.

Code:
CLEAR(rec_CustomerLedgerEntry);

rec_CustomerLedgerEntry.SETCURRENTKEY("Document No.");
rec_CustomerLedgerEntry.SETRANGE("Document No.", "No.");
IF rec_CustomerLedgerEntry.FIND('-') THEN
BEGIN
  IF rec_CustomerLedgerEntry."Closed by Entry No." = 0 THEN
  BEGIN
    CurrForm.col_Ampel.UPDATEFORECOLOR(192);
    txt_Ampel := 'l';
  END ELSE
  BEGIN
    CurrForm.col_Ampel.UPDATEFORECOLOR(32768);
    txt_Ampel := 'l';
  END;
END;
Zuletzt geändert von Timo Lässer am 9. März 2009 23:09, insgesamt 1-mal geändert.
Grund: C/AL-Code der besseren Lesbarkeit halber in [code]-Blöcke gepackt

Re: Probleme mit OnFormat Trigger

4. März 2009 22:57

Nur um "Konzeptionsfehler" als Grund auszuschließen:
Welche Farbe sollte denn gesetzt sein, wenn KEIN CustLedgEntry gefunden wurde? Momentan passiert nichts und die Farbe bleibt wie zuletzt war.

Re: Probleme mit OnFormat Trigger

4. März 2009 23:07

Ich habe gerade den Fall definiert wenn KEIN CustLedgerEntry gefunden wird, der Effekt ist aber der gleiche wie vorhin. Der Datensatz, bei dem ich das Problem habe ist der erste in der Subform. Der Effekt tritt nur auf, wenn ich zum ersten Mal die Subform öffne. Sobald ich dann ein anderes Form aktiviere und wieder zurückspringe wird der erste Datensatz dann korrekt angezeigt.

Re: Probleme mit OnFormat Trigger

4. März 2009 23:13

Hm - in welchem Trigger welchen Feldes auf welcher Form steht dein Quelltext?
Dem Quelltext nach zu erwarten wäre er auf der Subform in der benannten Spalte col_Ampel, welche auf kein Tabellenfeld referenziert, sondern auf eine Variable namens txt_Ampel - richtig?

Hast du bei der Gestaltung der Subform irgend etwas Besonderes gemacht, berechnet, ...?

Probier mal aus, ob du das Fehlverhalten reproduzieren kannst, wenn du versuchst, nach dem gleichen Algorithmus ein echtes Tabellenfeld einzufärben.

Re: Probleme mit OnFormat Trigger

4. März 2009 23:23

Der Effekt tritt so wie es scheint nur bei der Spalte auf, die auf die Variable referenziert ist. Ich habe den Quelltext in eine normale Spalte eingefügt, dort funktioniert es sofort.

Die Subform weist keine besonderen Berechnungen oder ähnliches auf.

Soll ich den Beitrag schließen und diesen Effekt als Bug betrachten, oder gibt es irgendeinen rehresh Befehl für die Aktualisierung einer Subform?

Re: Probleme mit OnFormat Trigger

5. März 2009 11:14

ZimmerS hat geschrieben:Soll ich den Beitrag schließen und diesen Effekt als Bug betrachten, oder gibt es irgendeinen rehresh Befehl für die Aktualisierung einer Subform?

Du könntest auch meine Frage von oben beantworten ;-)

Natalie hat geschrieben:Hm - in welchem Trigger welchen Feldes auf welcher Form steht dein Quelltext?

Steht er in Col_Ampel oder in einem beliebig anderen Feld? Es könnte einen Unterschied machen, wo dieser Quelltext steht, auch wenn du die gleiche Spalte damit einfärbst.

Re: Probleme mit OnFormat Trigger

5. März 2009 14:19

Sorry, das ich deine Frage nicht beantwortet habe.

Der Quelltext steht in col_Ampel. Der Versuch aus einer anderen Spalte die Spalte col_Ampel einzufärben schlug fehl. Es kommt dann die Meldung:

"Die dynamische Eigenschaft 'ColorSet' kann in diesem Kontext nicht geändert werden. Sie haben versucht, für TextBox mit Namen 'col_Ampel' 'ColorSet' in zu ändern."

Ich werde aus dieser Meldung nicht schlau.

Re: Probleme mit OnFormat Trigger

5. März 2009 14:40

ZimmerS hat geschrieben:Ich werde aus dieser Meldung nicht schlau.

OK, die Meldung bestätigte ohnehin meine Befürchtung, dass man Spalten nicht aus anderen Spalten heraus aktualisieren kann.

Hast du das Ganze mal gedebuggt, wenn du die Form erstmalig aufrufst (also den Fehler nachstellst)? Rutscht du wirklich in den Quelltextteil mit der richtigen Farbe?

Re: Probleme mit OnFormat Trigger

5. März 2009 15:26

OK, die Meldung bestätigte ohnehin meine Befürchtung, dass man Spalten nicht aus anderen Spalten heraus aktualisieren kann.


Ich habe an einer anderen Stelle eine Spalte aus einer anderen Spalte heraus aktualisiert und es funktioniert. Wenn ich es richtig beobachtet habe kommt es auf die Reihenfolge der Spalten an, ich kann von einer Spalte andere Spalten, die rechts davon liegen erfolgreich aktualisieren. Andersherum hatte ich Probleme. Das obige Problem hängt meiner Meinung nach damit zusammen, das es sich bei der Spalte col_Ampel nicht um ein Feld der Datenbank handelt.

Hast du das Ganze mal gedebuggt, wenn du die Form erstmalig aufrufst (also den Fehler nachstellst)? Rutscht du wirklich in den Quelltextteil mit der richtigen Farbe?


Ich habe es gerade im Debugger nachverfolgt. Der Quellcode korrekt wird durchlaufen.

Re: Probleme mit OnFormat Trigger

5. März 2009 15:54

Ich würds MS melden ...

Re: Probleme mit OnFormat Trigger

6. März 2009 12:31

Ich habe jetzt nach vielem probieren doch eine Lösung gefunden:

Wenn in der Spalte col_Ampel in den Properties den SourceExpr auf 'l' gesetzt wird (unter Windings ist das ein ausgefüllter Kreis) statt auf die Variable txt_Ampel, funktioniert die Farbänderung ohne Probleme.

Hallo Natalie, vielen Dank für Deine Hilfe.

Steffen