Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

WinUser nach dem Auslesen verkürzt anzeigen

Begonnen von fsimnetz, Februar 14, 2024, 07:09:15

⏪ vorheriges - nächstes ⏩

fsimnetz

Guten Morgen,

gibt es eine Möglichkeit den mit der Funktion/Modul "fGetFullNameOfLoggedUser" ausgelesenen User-Namen verkürzt anzeigen zu lassen? Aktuell: Mustermann, Max (XYZ). Ich benötige nur den Namen ohne die Klammer und den Inhalt.

=Right(fGetFullNameOfLoggedUser, 5)

bringt mir chin. Schriftzeichen im Ergebnis  :o

Gruß

PhilS

Diese Frage solltest du am besten jemandem stellen, der die/das "fGetFullNameOfLoggedUser" kennt.Alternativ könntest hier einen Link zu diesem Ding posten, oder falls es eine überschaubare Funktion ist, auch einfach deren Quellcode.

Zitat von: fsimnetz am Februar 14, 2024, 07:09:15Aktuell: Mustermann, Max (XYZ). Ich benötige nur den Namen ohne die Klammer und den Inhalt.


=Right(fGetFullNameOfLoggedUser, 5)
Right(...,5) liefert dir die ersten 5 Zeichen von rechts. Das ist genau das Gegenteil, von dem was du willst.
Eine Kombination aus Left und InStr erscheint hier vielversprechender.

Ich vermute, dass es aber einen sinnvolleren Ansatz gibt, wenn man sich das obskure fGetFullNameOfLoggedUser anschauen würde. Der Sachverhalt mit den "chinesischen Zeichen" deutet auf eine fehlerhafte Implementierung einer API-Funktion hin.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

fsimnetz

...würde doch noch mal darauf zurückkommen.

den betr. Link findest Du unter
FAQ2.24 donkarl (vollständiger Name des Windows-Benutzers)

mit RIGHT möchte ich erreichen, dass lediglich die Klammer entfernt wird. Der Vor - und Nachname der unterschiedlichen User (jetzt noch mit Klammer/Inhalt) wird in einem Textfeld gespeichert. Aus "optischen" Gründen benötige ich nur den Namen.

Gruß




PhilS

Zitat von: fsimnetz am Februar 14, 2024, 13:26:02den betr. Link findest Du unter

FAQ2.24 donkarl (vollständiger Name des Windows-Benutzers)
Das Byte-Array in der Funktion fStrFromPtrW ist falsch dimensioniert.
Ändere mal die Zeile:
ReDim abytBuf(lngLen)Zu:
ReDim abytBuf(lngLen - 1)
Damit ist das Problem mit den "chinesischen Zeichen" gelöst.

Zitat von: fsimnetz am Februar 14, 2024, 13:26:02mit RIGHT möchte ich erreichen, dass lediglich die Klammer entfernt wird.
Wie bereits gesagt: Mit Right erreichst du das Gegenteil.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
ZitatAus "optischen" Gründen benötige ich nur den Namen.
Ich nehme an, nicht den Namen, sondern den Nachnamen. Und der steht ja nach Deiner Beschreibung an 2. Stelle nach dem Vornamen.

Du solltest Dich mal präzise ausdrücken, was Du willst, mit verkürzt anzeigen dürftest D da nicht weit kommen.
Gruß Klaus

fsimnetz

 ;D vielen Dank, nach der Korrektur stimmen auch die Zeichen wieder.

Trotzdem komme ich mit meiner Absicht nicht weiter...

Der Benutzername wird hiermit wie folgt ausgegeben: Mustermann, Max (XYZ). Ich benötige für das betreffende Feld im Datensatz lediglich Mustermann, Max (also Nachname, Vorname).

Mit der Funktion(am Bsp. Mustermann..): =left(fGetFullNameOfLoggedUser, 15) erreiche ich den Wegfall der Klammer.

Doch wie ist das nun bei einem anderen User, dessen Benutzername bspw. Müller, Jakob (XYZ) ist und dieser einen Datensatz unter Angabe seines Benutzernamens (durch Druck Button mit obiger Funktion) im Feld Sachbearbeiter ergänzt. Die Zeichenkette seines Nach-/Vornamen hat ja eine andere Länge...

Habe ich einen Denkfehler?

Gruß

 

ebs17

Einen String zu kürzen ist doch eine einfache Aufgabe.
Beginne mit der Logik.
-> Ermittle Position der Zeichenfolge " ("  => Instr
-> Verringere Positionszahl um 1 und wende Left an

Eine andere Möglichkeit wäre, per Mustersuche den Ausdruck " (...)" zu ermittel und durch Replace mit Nullstring zu eliminieren.
Mit freundlichem Glück Auf!

Eberhard

fsimnetz


ebs17

Zitatbekomme ich nicht hin
Die Logik oder die technische Umsetzung?

X = Left("Mustermann, Max (XYZ)", Instr(1, "Mustermann, Max (XYZ)", " (") - 1)
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,

=Left(fGetFullNameOfLoggedUser,InStr(fGetFullNameOfLoggedUser," (")-1)
Gruß Klaus

fsimnetz