none
Print #-Anweisung RRS feed

  • 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

    Freitag, 14. Dezember 2018 12:32

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



    Samstag, 15. Dezember 2018 15:48
    Moderator

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]


    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



    Samstag, 15. Dezember 2018 15:48
    Moderator