Discussion:
Erstes Zeichen eines Textfeldes in Großbuchstaben umwandeln
(zu alt für eine Antwort)
Gerhard Martin
2007-12-16 09:31:14 UTC
Permalink
Hallo,

ich habe ein Formular erstellt, über das ein neuer Datensatz eingelesen
wird.
Nun möchte ich bei bestimmten Feldern das erste Zeichen, bereits bei der
Eingabe, den ersten Buchstaben in einen Großbuchstaben umwandeln lassen.
Wie kann ich das am einfachsten realisieren?
Dabei ist es mir egal, ob die Umwandlung über ein "Ereignis" oder das
"Eingabeformat" erfolgt.
Wichtig ist mir nur, dass eine evtl. Änderung gleich sichtbar wird.

Gruß Gerhard
Frank Hügel
2007-12-16 10:55:39 UTC
Permalink
Post by Gerhard Martin
Hallo,
ich habe ein Formular erstellt, über das ein neuer Datensatz eingelesen
wird.
Nun möchte ich bei bestimmten Feldern das erste Zeichen, bereits bei der
Eingabe, den ersten Buchstaben in einen Großbuchstaben umwandeln lassen.
Salü Gerhard

Du nennst deine Access_Version nicht.

Unter Access2003 machei ch so was mit VBA
(Entwickelt mal in der Urzeit 1997 mit A97)

Solltest Du mehr in Access machen wollen, empfehle ich Dir einen VBA-Kursus,
oder mindestens mal das Studium entsprechencder Literatur.
Die Gruppen sind eigentlich mehr Hilfe zur Selbsthilfe, und keine 'Macht mir
mal meine Arbeit'-Gruppen.

im Change-Ereignis einer Textbox :

Private Sub Text0_Change()
If Len(Text0.Text) > 0 Then Text0.Value = FirstCharUcase(Text0.Text)
'Da sonst der ganze text markiert ist (mal ja mal nein=Blinkerprinzip)
Text0.SelLength = 0
Text0.SelStart = Len(Text0.Text)
End Sub

und in ein Modul:

Option Explicit
Public Const MInpErrBase = vbObjectError + 100
Option Compare Database

Public Function FirstCharUcase(sIn As String) As String
' 19970503
' For What : First Char of String Always Upper Case
' Event : Change
' In : String
' Out : Changed String, complete
'-----------------------------------------------------
On Error GoTo ErrHdl
If Len(sIn) < 1 Then Exit Function
Dim sWork As String, sWork1 As String
sWork = Mid$(sIn, 1, 1)
sWork = UCase(sWork)
sWork1 = sWork
If Len(sIn) > 1 Then sWork1 = sWork & Mid$(sIn, 2)
FirstCharUcase = sWork1
On Error GoTo 0
Exit Function
ErrHdl:
Err.Raise MInpErrBase + Err.Number, "fhbase.modInputs.FirstCharUCase",
Err.Number & vbNewLine & Err.Description & vbNewLine & "In:" & sIn
'Stop
'Resume
End Function

Gruß
Frank
Lorenz Hölscher
2007-12-16 11:14:09 UTC
Permalink
Hallo Gerhard,

mir scheint, daß es über ein Eingabeformat nicht hinzukriegen ist,
weil dort nur *alle* Zeichen in Groß/Klein umgewandelt werden können.
Dafür geht es in VBA bedeutend kürzer als Frank es gemacht hat:

__________________
Private Sub edtBeispiel_Change()
If Len(edtBeispiel.Text) > 0 Then
edtBeispiel.Text = UCase(Left(edtBeispiel.Text, 1)) &
LCase(Mid(edtBeispiel.Text, 2))
edtBeispiel.SelStart = Len(edtBeispiel.Text)
End If
End Sub
_______________________

Dabei wird gnadenlos immer das erste Zeichen groß und alle anderen
klein geschrieben.

tschö, Lorenz

--
http://www.cls-software.de/cls_software/TippsAccessVBA.aspx
Josef Poetzl
2007-12-16 11:26:24 UTC
Permalink
Hallo!
Post by Lorenz Hölscher
mir scheint, daß es über ein Eingabeformat nicht hinzukriegen ist,
weil dort nur *alle* Zeichen in Groß/Klein umgewandelt werden können.
Eingabeformat: >C<CCCCCCC

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Lorenz Hölscher
2007-12-16 11:42:41 UTC
Permalink
Hallo Josef,
Post by Josef Poetzl
Eingabeformat: >C<CCCCCCC
1:0 für Dich!

Ich hatte es so mit "L" statt "C" gemacht und war gescheitert.

tschö, Lorenz
Michel Fouquet
2007-12-16 11:45:10 UTC
Permalink
Hallo,
Post by Gerhard Martin
ich habe ein Formular erstellt, über das ein neuer Datensatz eingelesen
wird.
Nun möchte ich bei bestimmten Feldern das erste Zeichen, bereits bei der
Eingabe, den ersten Buchstaben in einen Großbuchstaben umwandeln lassen.
Wie kann ich das am einfachsten realisieren?
Dabei ist es mir egal, ob die Umwandlung über ein "Ereignis" oder das
"Eingabeformat" erfolgt.
Wichtig ist mir nur, dass eine evtl. Änderung gleich sichtbar wird.
die bisher genannten Lösungen erfüllen zwar deine Forderung, dass eine
evtl. Änderung *gleich* sichtbar wird, aber mich stört beim
Change-Ereignis, dass es immer eine gewisse Verzögerung beim Schreiben
gibt. Ich persönlich würde das AfterUpdate-Ereignis verwenden.

Der Code dafür wäre ganz einfach:

Private Sub MeinTextfeld_AfterUpdate()
MeinTextfeld = StrConv(MeinTextfeld, vbProperCase)
End Sub

Näheres zur StrConv-Funktion und ihren Parametern findet sich in der OH
VB. Achtung: diese Funktion wandelt den Anfangsbuchstaben *jedes Wortes*
im einen Großbuchstaben um und ist daher für deine Zwecke ggf. nicht
geeignet.

mfg,
Michel
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm

OH VB: Online Hilfe von VBA im VB Editor (Taste F1)
Loading...