Wert Null anzeigen

19. Januar 2007 13:42

Hi,
auf einen decimal Feld mit Property BlankZero = Yes,
soll trotzdem Null angezeigt werden wenn tatsächlich Null eingegeben wird.

Hat jemand eine Idee?

Danke.

Gruss
Tirta

19. Januar 2007 13:45

BlankZero auf No setzen ;-)
(bzw. den Wert rauslöschen, dass dort der Default-Wert <No> steht)

19. Januar 2007 13:57

Komischerweise greift der Wert <No> nicht, Nullen werden trotzdem angezeigt. Man muss explizit die Auswahl No treffen (also ohne <>).

Warum weiss ich aber nicht. :roll:

19. Januar 2007 14:05

Danke für eure Antwort.
Das Problem sind gerade die Felder. Alle soll Property BlankZero Yes haben.

Damit Ihr das vorstellen könnt, da sind 20 Reihe von Zahlenfelder. Die Leute wollen keine 0,00 sehen. Erst wenn die Tatsächliche Eingabe folgt, dann soll erst die Werte angezeigt werden.

Ich hoffe dass ich mein Problem richtig ausdrücken kann.

19. Januar 2007 14:08

In diesem Fall empfehle ich, die Anzeige/Eingabe nicht im Dezimal-Feld zu machen, sondern in einem Text-Feld, um danach den Wert in das eigentliche Dezimal-Feld zu schreiben (EVALUATE) ...

19. Januar 2007 14:16

rotsch hat geschrieben:Komischerweise greift der Wert <No> nicht, Nullen werden trotzdem angezeigt. Man muss explizit die Auswahl No treffen (also ohne <>).

Warum weiss ich aber nicht. :roll:


Hi Rotsch,
das ist so und bleibt so... Schon seit Version 2.x.
Alle manuelle Änderungen in Feld Properties funktioniert nur mit ohne <>.
Vielleicht um zu unterscheiden welche originale wert und welche Nachtrag sind.
Zuletzt geändert von navsyst am 19. Januar 2007 14:18, insgesamt 1-mal geändert.

19. Januar 2007 14:17

rotsch hat geschrieben:Komischerweise greift der Wert <No> nicht, Nullen werden trotzdem angezeigt. Man muss explizit die Auswahl No treffen (also ohne <>).

Warum weiss ich aber nicht. :roll:


Ich muss mich hier korrigieren. Natürlich muss BlankZero auf Yes gestellt werden, und nicht auf No, wenn Nullen unterdrückt werden sollen. Da habe ich verkehrt herum gedacht, sorry. :oops:

19. Januar 2007 14:25

stryk hat geschrieben:In diesem Fall empfehle ich, die Anzeige/Eingabe nicht im Dezimal-Feld zu machen, sondern in einem Text-Feld, um danach den Wert in das eigentliche Dezimal-Feld zu schreiben (EVALUATE) ...


Meinst du dass zu jede Decimal-Feld eine Text-Feld anlegen? Aber kannst du vorstellen bei ca. 100 Decimalfelder?!?
Der Formular sieht schon ähnlich wie Steuererklärungsformular aus:)

Ich werde erstmal abwarten ob jemand noch andere Idee haben. Sonst muss ich das ganze umbauen. :evil:

19. Januar 2007 14:33

Hallo!
tirta hat geschrieben:Damit Ihr das vorstellen könnt, da sind 20 Reihe von Zahlenfelder. Die Leute wollen keine 0,00 sehen. Erst wenn die Tatsächliche Eingabe folgt, dann soll erst die Werte angezeigt werden.

So wie die anderen es schon sagten, wird das nicht mit Felden vom Typ Decimal funktionieren. Auch ich würde hier empfehlen für jedes Feld ein zweites Feld (vom Typ Text) anzulegen.

tirta hat geschrieben:Aber kannst du vorstellen bei ca. 100 Decimalfelder?!?
Wenn die Anforderungen es so wünschen, dann muss es wohl so sein.

Gruß, Marc

19. Januar 2007 14:34

Ich befürchte, du wirst umbauen MÜSSEN. Navision kennt keinen Unterschied zwischen einer Intialisierungs-Null und einer durch den Benutzer eingegebenen Null.

Eine andere Lösung als die von stryk fällt mir dazu auch nicht ein ...

19. Januar 2007 14:42

Da fällt mir ein ...

tirta hat geschrieben:Die Leute wollen keine 0,00 sehen. Erst wenn die Tatsächliche Eingabe folgt, dann soll erst die Werte angezeigt werden.
Es gibt diverse Programmanpassungen, die den Kunden (oder wer auch immer sich das wünsch) wieder ausgeredet werden müss(t)en.

Wie wärs mit ner Alternative? ZeroBlank so lassen, dafür aber die Zahlen-Farbe ändern, sobald der Benutzer manuell was eingibt? So unterscheiden sich die Nullen wenigstens voneinander.

PS: Dafür müsstest du in JEDES der decimal-Felder dafür etwas in die Trigger schreiben - ist auch nicht viel weniger Aufwand!

19. Januar 2007 14:54

Natalie hat geschrieben:Da fällt mir ein ...
Wie wärs mit ner Alternative? ZeroBlank so lassen, dafür aber die Zahlen-Farbe ändern, sobald der Benutzer manuell was eingibt? So unterscheiden sich die Nullen wenigstens voneinander.


Genau, wenn die Schriftfarbe dieses Feld Standardmäßig weiß ist, und im OnAfterValidate auf schwarz geändert wird, hilft das....
Um das aber dauerhaft für diesen Datensatz zu ändern, müsste die manuelle Bearbeitung z.B. über ein Bool im Record gespeichert werden und dieses Feld entscheidet dann über die Farbe....

19. Januar 2007 14:57

Hallo,

wie wär's mit jeweils einem bool'schem Feld zu jedem Dezimalfeld,
das wiedergibt, ob bereits eine Eingabe erfolgte.
(z.B. "Dezimalfeld1 eingegeben", wird im OnValidate des Feldes Dezimalfeld1 mit TRUE belegt)
Die Dezimalfelder selbst mit BlankZero = Yes vesehen und im OnFormat jedes Dezimalfeldes den folgenden Code:

Code:
IF NOT "Dezimalfeld1 eingegeben" AND (Dezimalfeld1 = 0) THEN
  Text := '';

19. Januar 2007 14:58

Das Problem ist allerdings, dass wir pro Feld ein Boolean-Feld bräuchten... (Der Benutzer hat Feld 1 manuell geändert, Feld 2 aber nicht), also nochmal 100 Stück??
Dies ließe sich nur umgehen, wenn wir statt neuen Feldern mit einem globalen Array arbeiten würden (vom Typ Boolean).

Ich würd bei dieser Anforderung die weiße Fahne schwenken. Der Aufwand steht doch in keinem Verhältnis zum Nutzwert, oder?

19. Januar 2007 15:00

Danke Natalie für deine Hilfsbereitschaft!

Natalie hat geschrieben:Wie wärs mit ner Alternative? ZeroBlank so lassen, dafür aber die Zahlen-Farbe ändern, sobald der Benutzer manuell was eingibt? So unterscheiden sich die Nullen wenigstens voneinander.


Was meinst du mit ZeroBlank so lassen? Yes or No? Null anzeigen oder unterdrücken?
Zahlenfarbe klingt auch gut an. Aber wie kann ich denn code schreiben?
Kosten 1 - OnFormat(VAR Text : Text[1024];)
IF what then
Updateforecolor();

Natalie hat geschrieben:PS: Dafür müsstest du in JEDES der decimal-Felder dafür etwas in die Trigger schreiben - ist auch nicht viel weniger Aufwand!


Immerhin wäre das natürlich einfacher statt nochmal 100 Felder einfügen, Form anpassen etc...

19. Januar 2007 15:03

Danke Natalie für deine Hilfsbereitschaft!
Ey, vergiss mir die Männer nicht! ;-)

Was meinst du mit ZeroBlank so lassen? Yes or No? Null anzeigen oder unterdrücken?
Anzeigen. Sonst macht die Farbunterscheidung auch keinen Sinn.

Wie gesagt, die Lösung hat den Haken, dass wir für jedes Decimal-Feld eine Boolean-Variable brauchen. Und das wird bei 100 Decimal-Feldern kein Zuckerschlecken, da die Übersicht zu bewahren!

19. Januar 2007 15:16

Ey, vergiss mir die Männer nicht! ;-)


Sorry.. hab eigentlich nicht so gemeint. Natürlich bedanke ich mich auch bei allen für das mitdenken. Ich hab nur direkt auf dein Post geantwortet bevor ich die nächste Beiträge sehe. :oops:

Wie gesagt, die Lösung hat den Haken, dass wir für jedes Decimal-Feld eine Boolean-Variable brauchen. Und das wird bei 100 Decimal-Feldern kein Zuckerschlecken, da die Übersicht zu bewahren!


also... wäre das auch nicht... hmm...... weitermeditieren..... 8-)

19. Januar 2007 21:20

Für den Fall, dass in den Feldern keine negativen Werte erlaubt sind hätte ich eine Lösung:

Die Dezimalfelder könnten bei der Initialisierung des Datensatzes vor der Eingabe negativ initialisiert werden (z.B. -1 über RecordRef/FieldRef Instanzen). Es gibt es das Field Property "BlankNumbers" in Forms, welches u.a. die Option liefert, bei negativem Inhalt das Feld leer anzuzeigen.

Bei der Verarbeitung müssten diese negativen Werte dann abgefangen werden.

Zugegeben keine Lehrbuchlösung, aber ggf. hilft es.

24. Januar 2007 12:56

SilverX hat geschrieben:Für den Fall, dass in den Feldern keine negativen Werte erlaubt sind hätte ich eine Lösung:

Die Dezimalfelder könnten bei der Initialisierung des Datensatzes vor der Eingabe negativ initialisiert werden (z.B. -1 über RecordRef/FieldRef Instanzen). Es gibt es das Field Property "BlankNumbers" in Forms, welches u.a. die Option liefert, bei negativem Inhalt das Feld leer anzuzeigen.

Bei der Verarbeitung müssten diese negativen Werte dann abgefangen werden.

Zugegeben keine Lehrbuchlösung, aber ggf. hilft es.


Hallo SilverX,
danke für deinen Tips.
Aber ich kann leider noch nicht so ganz nachvollziehen. Kannst du nochmal verdeutlichen? Sorry :oops:

26. Januar 2007 23:15

Grundsätzlich haben FormFields vom Typ Decimal eine Eigenschaft "BlankNumbers". Diese bietet u.a. die Option negative Werte nicht anzuzeigen. Das ist die Basis.

Angenommen deine Felder können Werte zwischen 0 und 100 annehmen, so kannst du vor der Bearbeitung alle diese speziellen Felder mit dem Wert -1 belegen. Alle nicht editierten Felder wären leer, 0 würde ggf. angezeigt wenn geändert.

Wichtig dabei ist allerdings, dass bei den zu füllenden Werten keine negativen Zahlen vorkommen dürfen und bei der weitreren Verarbeitung dieses Datensatzes diese Felder explizit auf -1 geprüft werden um Fehlberechnungen zu vermeiden.