Keycode von Umlauten und SQL-Modifikation durch VBA (Listenfeld-Datenquelle)

15/10/2009 - 21:09 von Helge Ogan | Report spam
Hallo zusammen,

[Kurzfassung]
ich habe Probleme bei dem Versuch, die Datensatzherkunft von
Listenfeldern ber das KeyUp-Event zu modifizieren, wenn Umlaute ins
Spiel kommen.

[etwas ausfhrlicher]
In einem mit vielen Namen gefllten Listenfeld grenze ich die Auswahl
ein, indem ich ber das KeyUp-Event mit VBA die SQL-Anweisung der
Datensatzherkunft „ndere und das Feld neu lade. Dabei wird dem eine
WHERE-Clausel zugefgt, die ein Filter auf eine bei jedem Tastendruck
wachsende Variable (strSuchwort) darstellt. Im Listenfeld werden also
nur noch die Namen angezeigt, die wie das an der Tastatur geschriebene
Wort beginnen.
Mein Code (s. u.) funktioniert prima, nur bekomme ich Probleme, wenn ich
zus„tzlich noch die Umlaute ”„á versuche zu behandeln. Das scheitert
nach meiner Untersuchung wenigstens daran, dass (bei mir) Chr(KeyCode)
<> [gedrckte Taste] ist, wofr ich schon keine Erkl„rung habe.
Obwohl ich mir sicher bin, dass das Problem schon hundertfach
aufgetreten ist, gelingt es mir leider nicht, eine L”sung zu ergoogeln.
Ich wrde mich also auch ber kurze Quellen im Netz zu dem Thema freuen.


Code fr Acc2000/2003 unter WinXP und Win Vista -

Private Sub lf_Kunde_KeyUp(KeyCode As Integer, Shift As Integer)

Dim q As String
Dim t As String

q = """"

If KeyCode > 64 And KeyCode < 123 Then
strSuchwort = strSuchwort & Chr(KeyCode)
t = "SELECT t_Kunden.ID, t_Kunden.Name & " & q & ", " & q & " &
[Vorname] AS Kunde FROM t_Kunden WHERE left(t_Kunden.Name, len(" & q &
strSuchwort & q & ")) = " & q & strSuchwort & q & " ORDER BY t_Kunden.Name
& " & q & ", " & q & " & [Vorname];"
ElseIf KeyCode = 127 Or KeyCode = 27 Then
strSuchwort = ""
t = "SELECT t_Kunden.ID, t_Kunden.Name & " & q & ", " & q & " &
[Vorname] AS Kunde FROM t_Kunden ORDER BY t_Kunden.Name & " & q & ", " & q
& " & [Vorname];"
ElseIf KeyCode = 8 Then
If Len(strSuchwort) = 0 Then
Exit Sub
End If
strSuchwort = Left(strSuchwort, Len(strSuchwort) - 1)
t = "SELECT t_Kunden.ID, t_Kunden.Name & " & q & ", " & q & " &
[Vorname] AS Kunde FROM t_Kunden WHERE left(t_Kunden.Name, len(" & q &
strSuchwort & q & ")) = " & q & strSuchwort & q & " ORDER BY t_Kunden.Name
& " & q & ", " & q & " & [Vorname];"
Else
Exit Sub
End If

Me!lf_Kunde.RowSource = t
Me!lf_Kunde.Requery
Me!lf_Kunde.Selected(0) = True

End Sub

Code -



helge aus Hamburg


http://www.gebaeudefoto.de
 

Lesen sie die antworten

#1 Jens Schilling
15/10/2009 - 21:21 | Warnen spam
Hallo, Helge

Helge Ogan wrote:
ich habe Probleme bei dem Versuch, die Datensatzherkunft von
Listenfeldern ber das KeyUp-Event zu modifizieren, wenn Umlaute ins
Spiel kommen.



Die Darstellung Deines Threads (zumindest ich sehe keine Umlaute) làsst mich
vermuten, dass Du generelle Probleme mit Deinen Umlauten hast.

Unabhàngig davon schau Dir doch mal diese Demo an

variable Suche mit Kombifeldern
http://www.tksoft-online.de/Downloa...egory.html

Eine etwas abweichende Vorgehensweise - aber funktioniert auch mit Umlauten
;-)

helge aus Hamburg



Da bin ich morgen früh wieder - jetzt kommt das Tschüs aus WL
Jens

Ähnliche fragen