Textfeld Kürzen

Moderator: ModerationP

Textfeld Kürzen

Beitragvon HomerX1 » 28. Okt 2021, 15:07

Hallo zusammen,
Ich würde euch um Hilfe bitten.
System Windows 10
Office 2013

Im Formular habe ich das Testfeld "POEingabe"
Darin Steht Zb. PO2211022 oder PO11245 und es kann auch sein das das Textfeld leer ist.
In einem Ungebundenem Textfeld habe ich stehen bei Steuerelementinhalt:
Code: Alles auswählen
=Rechts([POEingabe];2)

was mir den Wert 22 bzw. 45 bringt und das ist gut so.

Jetzt möchte ich in einem ungebundenen Textfeld aber die Werte ohne die 2 letzten stellen haben PO22110 bzw. PO112 ?
Habt ihr eine Idee dazu?
mfg
HomerX1
 

Re: Textfeld Kürzen

Beitragvon derArb » 28. Okt 2021, 15:15

Hallo,
ermittele die Länge des Strings und ziehe 2 Stellen davon ab,
Aus dem Kopf heraus (Luftcode)
Code: Alles auswählen
= Left (PoefEingabe; Len(PoefEingabe)-2)
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14694
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Textfeld Kürzen

Beitragvon HomerX1 » 28. Okt 2021, 15:20

Dein Luftcode funktioniert einwandfrei nur wenn das Textfeld "POEingabe" aber leer ist bekomme ich "#Typ!" ?
HomerX1
 

Re: Textfeld Kürzen

Beitragvon derArb » 28. Okt 2021, 15:31

Hallo,
benutze die Nz-Funktion, welche leere Einträge mit Ersatzwerten abfangen kann
einfach mal googeln
https://www.google.com/search?q=Nz-Funk ... nt=gws-wiz
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14694
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Textfeld Kürzen

Beitragvon HomerX1 » 28. Okt 2021, 15:43

OK
Danke für die Hilfe.
Code: Alles auswählen
=Links([POEingabe];Länge(Nz([POEingabe]))-2)
HomerX1
 

Re: Textfeld Kürzen

Beitragvon Gast » 29. Okt 2021, 22:26

Hallo,
geht zwar, ist aber unlogisch, da bei einem leeren Feld sich die Länge -2 ergäbe, was falsch ist.
Gruß Lars
Gast
 

Re: Textfeld Kürzen

Beitragvon knobbi38 » 30. Okt 2021, 13:32

Hallo,

als Ausdruck müßte das ungefähr so aussehen (air code):
Code: Alles auswählen
= nz(links(POEingabe,-(länge(nz(POEingabe,0)) > 1)*(länge(nz(POEingabe,0))-2)),"")


Ulrich

Edit:
Vergleichsausdruck korrigiert: > 0 muß richtigerweise > 1 sein.
Zuletzt geändert von knobbi38 am 30. Okt 2021, 19:35, insgesamt 2-mal geändert.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3603
Registriert: 02. Jul 2015, 14:23

Re: Textfeld Kürzen

Beitragvon kathyv » 30. Okt 2021, 17:06

Hallo Ulrich,
müsste das nicht mit "Wenn" gehen?
Im Sinne von Wenn (isNull(Feld),"",Left(...)
Wozu dient das Malzeichen ?
Gruß Kathy
Gruß Kathy
kathyv
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 01. Dez 2020, 14:50

Re: Textfeld Kürzen

Beitragvon knobbi38 » 30. Okt 2021, 19:31

Hallo Kathy,

im Prinzip hast du recht, =Wenn() sollte eigentlich reichen, aber dieser Fall ist etwas speziell. Zunächst muß man wissen, daß bei =Wenn() immer sowohl der True- als auch der False-Zweig bewertet werden. Das führt zu Problemen, wenn der String die Zustände NULL, Leer (entspricht "") und eine postive Länge annehmen kann. =Links() kann zwar mit NULL umgehen, aber nicht mit negativen Längenangaben. Die entstehen aber, wenn =Länge(MyString)-2 negativ wird, z.B. wenn MyString ein Leer-String ist.
Der Trick ist nun, daß FALSE dem numerischen Wert 0 und TRUE dem numerischen Wert -1 entspricht. Damit wird der Ausdruck
Code: Alles auswählen
-(länge(nz(MyString,0)) > 1)
erst dann 1, wenn MyString mindestens 2 Zeichen lang ist:
Code: Alles auswählen
MyString = NULL :  -Länge(nz(MyString,0))>1 => 0
MyString = ""   :  -Länge(nz(MyString,0))>1 => 0
MyString = "A"  :  -Länge(nz(MyString,0))>1 => 0
MyString = "AB" :  -Länge(nz(MyString,0))>1 => 1

also genau das, was im vorliegenden Fall benötigt wird. Die tatsächliche Länge wird mit dem Ergebnis dieses Ausdrucks mulipliziert und ergibt dann eine berechnete Länge von {0,2..n}.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3603
Registriert: 02. Jul 2015, 14:23

Re: Textfeld Kürzen

Beitragvon kathyv » 31. Okt 2021, 10:10

Hallo Ulrich,
ich bekomme bei
Code: Alles auswählen
= nz(links(POEingabe,-(länge(nz(POEingabe,0)) > 1)*(länge(nz(POEingabe,0))-2)),"")

Die Meldung
Der von ihnen eingegebene Ausdruck ist syntaktisch falsch.
Sie haben einen Operanden oder Operator nicht angegeben, Sie haben ein ungültiges Zeichen oder Komma eingegeben, oder Sie haben einen Text eingegeben, ohne diesen in Anführungszeichen zu setzen.

Bisher kein Erfolg, den Fehler zu finden. :(
Gruß Kathy
Gruß Kathy
kathyv
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 01. Dez 2020, 14:50

Re: Textfeld Kürzen

Beitragvon derArb » 31. Okt 2021, 14:04

Hallo,
...geht zwar, ist aber unlogisch, da bei einem leeren Feld sich die Länge -2 ergäbe, was falsch ist....

Was passiert denn Gefährliches, wenn man sich mit "geht zwar" von Lars einfach zufrieden gibt und es so anwendet?
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14694
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Textfeld Kürzen

Beitragvon Gast » 31. Okt 2021, 15:50

Hallo,
Was passiert denn Gefährliches...und es so anwendet

Das läuft auf CP hinaus. Auf lange Sicht hat man nichts davon.
Einfaches Bsp: z/n mag lange gut gehen, aber dann passiert es irgendwann mit Sicherheit (n=0). Bei diesem Bsp. wird der Fehler durch die Meldung ja klar, aber hier ist sie sehr allgemein (Ausdruck ist syntaktisch falsch ...)
z=6
n=5
?z/n
Gruß Kathy
Gast
 

Re: Textfeld Kürzen

Beitragvon Mister Stringer » 31. Okt 2021, 21:13

Hallo,

ich habe auf meinem aktuellen Rechner kein Access, von daher konnte ich die einzelnen Codes nicht nachstellen.
Für meinen Teil würde ich es vermutlich so lösen, daß ich den Inhalt des Textfeldes links mit zwei Leerzeichen auffüttere, die ich dann nachher mit Glätten() wieder entferne. Also ungefähr so (ungetesteter Luftcode):
Code: Alles auswählen
txtLinkerTeil = Glätten(Links("  " & [POEingabe];Länge([POEingabe])))
txtRechterTeil = Glätten(Rechts("  " & [POEingabe];2))

Damit habe ich immer einen Ausgangsstring mit ausreichender Länge und brauche mir über Null-Werte oder negativen Längen keine Gedanken machen.

Gruß
Klaus
21 ist nur die halbe Wahrheit.
Mister Stringer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 372
Registriert: 11. Aug 2010, 23:26

Re: Textfeld Kürzen

Beitragvon knobbi38 » 01. Nov 2021, 13:55

Hallo Kathy,

ich hatte doch geschrieben, daß das Air-Code ist. In einem Ausdruck mußt du natürlich die englischen Schlüsselwörter durch deutsche und Kommas durch Semikolen ersetzen. Spätestens der Syntaxerror hätte dich stutzig machen sollen.

Die Formel ist so in der Form getestet und sollte auch funktionieren. Überprüfe auch mal in der Tabellendefinition für das Feld, ob "Leere Zeichenfolge" auf JA steht und ggf. könnte das auf NEIN geändert werden. Dann wird aus einem Leerstring eine NULL, so daß ein Leerstring nicht mehr gesondert behandelt werden müßte.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3603
Registriert: 02. Jul 2015, 14:23


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste