Benutzer mit den meisten Antworten
Print #-Anweisung

Frage
-
Ich schreibe in einer Date einen Inhalt in etwa so
Print #1, "020" & Documentenart; AK!Intern; Spc(35 - Len(AK!Intern)); Format(Date, "yyyymmdd");
Documentenart ist eine StringVariable
AK!Intern ist ein Integer den ich mir über einen Recordset hole
und genau der macht ein Problem - und zwar habe ich vor dem AK!Intern immer ein Leerzeichen
wenn ich mit MSGBOX Len(AK!Intern) abfrage bekomme ich das richtige Ergebnis - also ohne Leerzeichen
Beispiel AK!Intern = 10 dann Len(AK!Intern) = 2 aber in der Print ist es dann " 10"
gelöst habe ich es gerade mit Trim
Print #1, "020" & Documentenart; Trim(AK!Intern); Spc(35 - Len(AK!Intern)); Format(Date, "yyyymmdd");
So nun die frage
wieso ist das so und gibt es da irgendwo eine regel die ich verstehen muss
Antworten
-
Irgendwie siehst Du es verkehrt; wie kann ein numerischer Integer ein führendes Leerzeichen haben, das geht schon mal gar nicht?
Ganz so ist das nicht. In Access wird bei der impliziten Konvertierung das Leerzeichen bei positiven Werten vorgehalten, ähnlich Str(), bei negativem Wert stünde da -10 und nicht " 10". Die bereits erwähnte Lösung (neben "Trim" als Workaround) sollte die explizite Konvertierung per CStr sein, also
Print #1, "020" & Documentenart; CStr(AK!Intern); Spc(35 - Len(AK!Intern)); Format(Date, "yyyymmdd");
Gruss - Peter
- Bearbeitet Peter DoeringMVP, Moderator Samstag, 15. Dezember 2018 16:41
- Als Antwort markiert MCDPone Dienstag, 18. Dezember 2018 14:38
Alle Antworten
-
AK!Intern ist ein Integer den ich mir über einen Recordset hole
und genau der macht ein Problem - und zwar habe ich vor dem AK!Intern immer ein Leerzeichen
Irgendwie siehst Du es verkehrt; wie kann ein numerischer Integer ein führendes Leerzeichen haben, das geht schon mal gar nicht?
Das ist so ein Problem, das entsteht, wenn man nicht typsicher programmiert, was man in VBA leider einfach machen kann.
Es liegt also an der Formatierung der Ausgabe. Wandel den Integer Wert vorher mit der CStr Funktion in einen String um.
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Samstag, 15. Dezember 2018 06:58
-
Irgendwie siehst Du es verkehrt; wie kann ein numerischer Integer ein führendes Leerzeichen haben, das geht schon mal gar nicht?
Ganz so ist das nicht. In Access wird bei der impliziten Konvertierung das Leerzeichen bei positiven Werten vorgehalten, ähnlich Str(), bei negativem Wert stünde da -10 und nicht " 10". Die bereits erwähnte Lösung (neben "Trim" als Workaround) sollte die explizite Konvertierung per CStr sein, also
Print #1, "020" & Documentenart; CStr(AK!Intern); Spc(35 - Len(AK!Intern)); Format(Date, "yyyymmdd");
Gruss - Peter
- Bearbeitet Peter DoeringMVP, Moderator Samstag, 15. Dezember 2018 16:41
- Als Antwort markiert MCDPone Dienstag, 18. Dezember 2018 14:38