[Gelöst] Fehler: Option darf kein Leerzeichen sein

9. November 2007 14:27

Hallo,

vielleicht kann mir einer von euch auf die Sprünge helfen.

Ich habe auf der Debitorenkarte ein Feld eingefügt welches eine 2. Form öffnet sobald ich den Lookup Button drücke. Dieser 2. Form werden mehrere Werte übergeben. Unter anderem sollen auch 2 Option Werte übergeben werden. Nun ist es so das ich die Option Strings so eingestellt habe das der erste Wert nur eine Leerzeichen ist. Diese 2 Option sind Anrede und Titel. Ich möchte halt das wenn ein Debitor neu angelegt wird, das diese Felder nicht ausgefüllt sind. Zudem hat ja nicht jeder Debitor einen Titel.
Wenn ich nun aber diese Werte der 2. Form übergeben will kommt der Fehler aus dem Titel (Option darf kein Leerzeichen sein).
Gibt es eine andere Möglichkeit dem Option zu sagen das er ein leeren Default Wert hat der nicht angemeckert wird?
Ich hab leider nix gefunden dazu. Weder hier noch bei mibuso noch im Reference Guide.
Über jeden Tip / jede Hilfe würde ich mich wie immer freuen.
Zuletzt geändert von Heike Bennerscheid am 9. November 2007 16:05, insgesamt 1-mal geändert.

9. November 2007 14:30

Hast Du das in der Table-Proberty InitValue eingetragen?

9. November 2007 14:32

Nein das Leerzeichen ist das erste Zeichen im OptionString.. also

Anrede -> OptionString " ,Herr,Frau"
Titel -> OptionString " ,Dr.,Dr. med.,Professor"

9. November 2007 14:40

Übergib doch einfach den Integerwert 0 anstelle des Anrede::" "
wahrscheinlich ist in der OptionCaption das Leerzeichen nicht vorhanden....

9. November 2007 14:43

Ich übergebe den Wert mit Hilfe einer Funktion.. und die mag irgendwie Integer nicht. Zumindest gibt er mir den Fehler aus das die Typkonvertierung Text zu Intexer nicht gehen würde.

9. November 2007 14:47

Angenommen Dein Optionfeld heißt anrede, und die Optionen " ,Herr,Frau"
Dann kannst du den Herrn sowohl als Anrede:=1 als auch als Anrede:=Anrede::Herr übergeben, oder verstehe ich dein Vorhaben jetzt falsch?

9. November 2007 14:52

Ich habe diese beiden How To's von Mibuso als Vorlage genommen
http://www.mibuso.com/howtoinfo.asp?FileID=7
http://www.mibuso.com/howtoinfo.asp?FileID=9
um die Werte von der einen Form auf die andere zu übergeben (und später auch wieder zurück).

So sieht der Code aus:

Code:
fAnrede := FORMAT(Anrede);
fTitel := FORMAT(Titel);

CLEAR(DebitorenDaten);
DebitorenDaten.fctSetAnrede(fAnrede);
DebitorenDaten.fctSetTitel(fTitel);
DebitorenDaten.fctSetNachname(Nachname);
DebitorenDaten.fctSetVorname(Vorname);
DebitorenDaten.fctSetFirma("Name 2");
DebitorenDaten.fctSetGeburtsdatum(Geburtsdatum);


fAnrede unf fTitel sind vom Typ Text da ich Integer und Option irgendwie nicht übergeben bekomme.

9. November 2007 15:11

wie sieht denn die Parameterkonfiguration z.B. in der Funktion SetAnrede aus und welcher Code wird darin ausgeführt?

9. November 2007 15:15

Code:
fctSetAnrede (pAnrede : Text[30])
txtAnrede := pAnrede;
EVALUATE(optAnrede,txtAnrede);

fctSetTitel (pTitel : Text[30])
txtTitel := pTitel;
EVALUATE(optTitel,txtTitel);


So sieht es derzeit aus. Hatte zwischenzeitlich auch Option und Integer. Ich habe zur Rückübergabe auch noch Funktionen bei denen kann ich aber nicht den Typ Option als Rückgabewert angeben. Nur mit Integer hat es bei mir leider auch nicht geklappt (Wegen dem Fehler den ich schon beim kompilieren kriege das die Typkonvertierung von text zu integer nicht geht)

9. November 2007 15:26

Warum machst du die Funktion nicht so:

fctSetAnrede (pAnrede: Option)
optAnrede:=pAnrede;

und rufst diese mit fctSetAnrede(Anrede) auf?

9. November 2007 15:31

Wie gesagt das hatte ich schon. Aber ich kann der Rückgabefunktion GetAnrede keinen Rückgabewert von Typ Option zuweisen. Nur Text oder Integer

Nachtrag

Zudem sagt er mir jetzt (ich mein das hätte er vorher nicht gemacht) das die Typkonvertierung Text zu Option nicht funktioniert (beim Aufruf der Funktion)

9. November 2007 15:58

Du brauchst weder Format noch evaluate du kannst auch den Parameter von Option nach Integer ändern, ohne irgendwelche Verrenkungen.
und als Rückgabewert gibst du auch integer an

also
FctGetAnrede() :integer
exit(optAnrede);

und rufst diese mit
Anrede:=fctGetAnrede;
auf

9. November 2007 16:04

Jetzt klappt es endlich. Manchmal scheine ich wirklich zu kompliziert zu denken. Bei meinem ersten Versuch mit Option hat mich das wohl so verwirrt das es keinen Rückgabewert dazu gibt, das ich das mit dem Integer total vergessen habe. Und auf die Idee das zu "mischen" bin ich natürlich auch nicht gekommen.

Ein großes Danke an dich Michael.