Umlaute-Tasten behandeln

14/02/2008 - 10:24 von Liane Uebelein | Report spam
Hallo,
ich filtere die Datensàtze eines Formulares mit eines Code (leider weiß ich
nicht mehr woher ich das habe)

Private Sub txtFirma_KeyUp(KeyCode As Integer, Shift As Integer)
Static strLikeText As String
' Taste ermitteln
Select Case KeyCode
Case vbKeyBack ' Ein Zeichen löschen
If Len(strLikeText) > 0 Then
strLikeText = Left$(strLikeText, Len(strLikeText) - 1)
End If
Case vbKeyEscape ' Auswahl löchen
strLikeText = ""
Case 65 To 90 ' Das Zeichen (A-Z) hinzufügen
strLikeText = strLikeText & Chr$(KeyCode)
Case Else
End Select
' Listenfeld-Daten filtern und aktualisieren
If Len(strLikeText) > 0 Then
Me!lstFirmen.RowSource = "SELECT AD_ID, Name1, Ort FROM Adressen
WHERE Name1 Like '" & strLikeText & "*' ORDER BY Name1;"
Else
Me!lstFirmen.RowSource = ""
End If
Me!lstFirmen.Requery
End Sub

Leider gibt es Probleme, wenn der Name mit einem Umlaut beginnt. Hat jemand
vielleicht einen Tipp hierzu?
Gruss
Liane
 

Lesen sie die antworten

#1 Thomas Winkler
14/02/2008 - 10:44 | Warnen spam
Hi,

Select Case KeyCode
Case vbKeyBack ' Ein Zeichen löschen
If Len(strLikeText) > 0 Then
strLikeText = Left$(strLikeText, Len(strLikeText) - 1)
End If
Case vbKeyEscape ' Auswahl löchen
strLikeText = ""
Case 65 To 90 ' Das Zeichen (A-Z) hinzufügen



^^^^

hier prüfst Du nur Zeichen A-Z und fügst sie ggf. an.

da fehlt noch ein Case, was auf umlaute Prüft, also "ß", "à", "Ä" usw.


strLikeText = strLikeText & Chr$(KeyCode)
Case Else
End Select



Allerdings scheint mir das ganze Select-Konstrukt ein bissl überflüssig,
denn es ahmt exakt das Verhalten nach, welches Access-Textfelder sowieso
an den Tag legen. IMHO also überflüssig.

Was willst Du denn damit bezwecken?

Es scheint so, als soll sofort bei Eingabe eines Zeichens eine weitere
Liste aktualisert werden. (Suchfunktion?)

Wenn dem so ist, würde es entweder genügen, in Feld_AfterUpdate deinen
Code zum Generieren der Rowsource zu platzieren. Das wàre performanter,
es würde aber erst beim Verlassen des Eingabefeldes die Liste
aktualisiert werden.

Willst Du die Aktualiserung wirklich "Live" machen sollte in Deinem
KeyUp-Ereignis der Code

If Len(Me!txtFirma.text) > 0 Then
Me!lstFirmen.RowSource = "SELECT AD_ID, Name1, Ort FROM Adressen
WHERE Name1 Like '" & Me!txtFirma.text & "*' ORDER BY Name1;"
Else
Me!lstFirmen.RowSource = ""
End If
Me!lstFirmen.Requery

ausreichen.

HTH

Thomas




Thomas

"Access? Damit arbeite ich nicht. Das ist doch nur ein abgespecktes Excel."

Ähnliche fragen