[Gelöst] Gewolltes Leerzeichen in Textfeld o.w. Zeichen

19. April 2011 17:36

Guten Abend zusammen,

ich habe gerade ein kleineres "Blackout" und benötige Eure Hilfe!?!

Ich sollte ermöglichen, dass in einem Textfeld ein Leerzeichen eingegeben werden kann, welches dann aber auch als Leerzeichen bestehen bleibt.
Das heisst, ich müsste dann wissen, ob ein Leerzeichen eingegeben wurde oder nicht. Falls kein Leerzeichen eingegeben wurde, dann ist das Feld leer.

Tönt vielleicht ein bisschen komisch, weil leer ist doch eigentlich leer... Aber es sollte in etwas so funktionieren, wie wenn ihr aus Exel einen längeren Wert in ein Textfeld kopiert.
Dann hat es ja manchmal am Schluss auch noch "versteckte" Leerzeichen, welche erst entdeckt werden, wenn man das Feld direkt anspricht.

Gibt es dazu eine Lösung oder wandelt NAV ein Leerzeichen immer als leer um (also nicht wie bei SQL mit NULL)?

Vielen Dank, Beno
Zuletzt geändert von beno am 3. Mai 2011 15:19, insgesamt 1-mal geändert.

Re: Gewolltes Leerzeichen in einem Textfeld ohne weitere Zei

19. April 2011 21:27

Versteckte Leerzeichen kommen über Datenimporte ins System, wenn die Eingabe in NAV normal im Feld erfolgt werden diese entfernt.
Ein richtiges geschütztes Leerzeichen ist nur mit Unicode (und damit ab NAV "7") möglich.

Re: Gewolltes Leerzeichen in einem Textfeld ohne weitere Zei

25. April 2011 18:03

Ich habe vorhin einiges rumprobiert, um das Leerzeichen einzufügen, aber no way meiner Meinung.

Re: Gewolltes Leerzeichen in einem Textfeld ohne weitere Zei

25. April 2011 21:27

Hallo,

wie Kowa schon schrieb... Dataport geht dafür gut. Auch beliebt: CR/LF steht mit im Textfeld durch Kopieren/Einfügen aus Excel. Um das zu verhindern hilft eigentlich nur eine Anpassung in CU1, Funktion MakeText(). Gegen den Dataport der nicht validiert hilft das aber auch nicht... oder Code der sowas erzeugt.

Um das Leerzeichen im Textfeld stehenzulassen hilft nur, die Validierung zu überlisten. Also bei OnValidate() des Feldes eigene Wege gehen.

LG Jens

Re: Gewolltes Leerzeichen in einem Textfeld ohne weitere Zei

3. Mai 2011 14:26

Hallo zusammen,

so ein Mist. Ich sollte ein einziges Blank in einem Textfeld einfügen und dann später abfragen können. Ich erhalte aber immer eine komplettes leeres Feld.
CR+LF funktioniert leider nur, wenn neben diesen Zeichen noch andere Werte vorhanden sind (z.B. am Anfang oder am Schluss). Wenn ich aber nur diese Zeichen in ein Textfeld eingebe, wandelt NAV dies immer als Blank/Leer um.

So wie ich dies sehe, ist dies also mit Dynamics NAV 5.0 nicht möglich.

Oder hat sonst noch jemand eine Idee?

Merci, Beno

Re: Gewolltes Leerzeichen in einem Textfeld ohne weitere Zei

3. Mai 2011 14:44

Hallo Beno,

also ich habs mal testweise codiert, in irgendeiner Stammtabelle (Payment Terms) ein neues Feld ("New Field") vom typ Text, im Form das Feld als Control hinzugefügt. So müssen die Trigger im Control für die Speicherung aussehen:

Code:
Documentation()
OS001  jgl  03.05.2011  Probeimplementierung eines zu speichernden Blanks

New Field - OnActivate()

New Field - OnDeactivate()

New Field - OnFormat(VAR Text : Text[1024];)

New Field - OnBeforeInput()

New Field - OnInputChange()

New Field - OnAfterInput(VAR Text : Text[1024];)
Control1140000_HasBlank:=Text=' ';

New Field - OnValidate()

New Field - OnAfterValidate()
IF Control1140000_HasBlank THEN
  "New Field":=' ';

New Field - OnLookup(VAR Text : Text[1024];) : Boolean

New Field - OnDrillDown()

New Field - OnAssistEdit()


Control1140000_HasBlank ist eine globale Boolean-Variable. Pro Feld wo man sowas braucht benötigt man eine Variable. Der Code sorgt dafür, das wenn genau ein Leerzeichen eingegeben wird dieses nach der Validierung (wo es ja gelöscht wird) wieder eingefügt wird. Ist zwar etwas schmutzig, aber klar geht das :mrgreen:

LG Jens

[Gelöst] Gewolltes Leerzeichen in einem Textfeld o. w. Zeich

3. Mai 2011 15:18

Hallo Jens,

Wahnsinn! Vielen Dank!

LG Beno