Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: liederstern am Februar 11, 2019, 11:01:53

Titel: CInt / ZInteger in Abfrage in Kombi mit if
Beitrag von: liederstern am Februar 11, 2019, 11:01:53
Hallo zusammen,
in einer Abfrage nutze ich den Ausdruck 9: ZInteger(Asc(Teil([NAME];9;1))) um mir den Zeichencode des 9. Buchstabens der Zeichenfolge ausgeben zu lassen. Funktioniert. Ausgabewerte sind Zahlen.
Da jedoch nicht alle Feldinhalte gleich lang sind läuft bei kürzeren Namen "#FUNKTION!" auf. Um dies zu umgehen, ergänzte ich den Ausdruck zu 9: Wenn(Länge([name])<9;"";ZInteger(Asc(Teil([NAME];9;1)))). Nun allerdings ist das Ergebnis keine Zahl mehr (rechtsbündig), sondern ein String (Zahlenwert wird linksbündig angezeigt).
Den Feldname "NAME" habe ich nicht zu verantworten.  ;)
Wo liegt mein Fehler?
Danke für jeden Tipp!
Titel: Re: CInt / ZInteger in Abfrage in Kombi mit if
Beitrag von: ebs17 am Februar 11, 2019, 11:07:45
ZitatWenn(Länge([name])<9;""; ...
Hier erklärst Du das Ergebnis  als Text.
Titel: Re: CInt / ZInteger in Abfrage in Kombi mit if
Beitrag von: liederstern am Februar 11, 2019, 11:16:43
Danke ebs17, aber er soll ja nur "" schreiben (also Feld leer lassen), wenn die auszuwertende Zeichenfolge kürzer ist als 9 Zeichen.

EDIT: Habe den Ausdruck jetzt wie folgt geändert 9b: Wenn(Länge([name])<9;Null;ZInteger(Asc(Teil([NAME];9;1)))) und jetzt klappt es.
Titel: Re: CInt / ZInteger in Abfrage in Kombi mit if
Beitrag von: MzKlMu am Februar 11, 2019, 12:03:14
Hallo,
das Ergenis wird Text auch wenn nur ein Teil der Bedingung erfüllt ist.
Außerden ist ein Feld mit "" nicht wirklich leer, es enthält einen Nullstring und ist nur scheinbar leer.
Versuche es mal mit NULL statt dem "".
Titel: Re: CInt / ZInteger in Abfrage in Kombi mit if
Beitrag von: liederstern am Februar 11, 2019, 12:04:38
danke, Klaus.
Auf den Ansatz war ich parallel auch gerade gekommen. :)