Die "AutoComplete"-Funktion kennt man i.a.R. nur vom Internet-Explorer - genauer gesagt von der Adresszeile, bei der versucht wird, die Eingabe automatisch zu vervollständigen. Eine solche Funktion lässt sich sehr leicht auch für ein normales Text-Eingabefeld nachbauen, wobei die Inhalte in unserem Beispiel in einer Datenbank gespeichert sind. Nehmen wir an, Sie verwalten eine große Provisionsdatenbank mit sehr vielen Vertretern. Wird ein neuer Auftrag geschrieben, geben Sie in einer Textbox zunächst den Namen des Vertreters ein. Jetzt wäre es doch schön, wenn das Programm bereits während der Eingabe versucht, den Namen zu "erraten", indem es in der Datenbank nach dem bisher eingegebenen Anfangsnamen sucht, und Ihre Eingabe autom. vervollständigt. Also - worauf warten wir noch Nehmen wir an, der Name ist in der Datenbank in zwei Feldern gespeichert - "Name" und "Vorname". Hier der Code Option Explicit ' Datenbank-Objektvariablen Private Db As Database Private Rs As Recordset Beim Laden der Form öffnen wir die Datenbank und erstellen das Recordset - und zwar als Dynaset, da wir dann eine Suchanfrage bequem über die FindFirst-Methode starten können. Private Sub Form_Load() ' Datenbank öffnen Set Db = DBEngine.OpenDatabase(App.Path & "\VERTRETER.MDB") ' Recordset öffnen (Dynaset) Set Rs = Db.OpenRecordset("Vertreter", dbOpenDynaset) End Sub Um die Eingabe des Vertreter-Namens automatisch vervollständigen zu können, müssen wir im Change-Event der TextBox nach dem ersten Eintrag suchen, der mit der bisherigen Eingabe übereinstimmt. Wird ein Eintrag gefunden, so vervollständigen wir die bisherige Eingabe und markieren genau diesen Teil der Eingabe, so dass der durch das Programm vervollständigte Rest beim nächsten Tastendruck überschrieben wird - ganz wie unser Vorbild - die Adresszeile des Internet Explorers. ' Eingabe autom. vervollständigen Private Sub txtVertreter_Change() Dim SQL As String Dim lPos As Long Dim sName As String Dim sVorname As String Dim sPos As Long With txtVertreter If Trim$(.Text) = "" Or _ .Tag = "NoAction" Then Exit Sub ' aktuelle Eingabeposition merken sPos = .SelStart ' Komma vorhanden? lPos = InStr(.Text, ",") If lPos > 0 Then sName = Left$(.Text, lPos - 1) sVorname = Trim$(Mid$(.Text, lPos + 1)) Else sName = .Text: sVorname = "" End If ' SQL-Kommando erstellen If sVorname = "" Then SQL = "Name LIKE '" & sName & "*'" Else SQL = "Name = '" & sName & "' AND " & _ "Vorname LIKE '" & sVorname & "*'" End If ' Abfrage! Rs.FindFirst SQL If Not Rs.NoMatch Then ' Eintrag gefunden! .Tag = "NoAction" ' Vollständigen Namen in die TextBox schreiben .Text = Rs("Name") & ", " & Rs("Vorname") ' Eingabe markieren: von der aktuellen ' Eingabeposition bis zum Ende der Eingabe .SelStart = sPos .SelLength = Len(.Text) - sPos .Tag = "" End If End With End Sub Wird die Form geschlossen, schließen wir die Datenbank und setzen die Objektvariablen zurück: Private Sub Form_Unload(Cancel As Integer) ' Datenbank schlißen Rs.Close Db.Close Set Rs = Nothing Set Db = Nothing End Sub Dieser Tipp wurde bereits 10.013 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - Online-Update-Funktion u.v.m. |
Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB Buchempfehlung Tipp des Monats Dieter Otter Snapshot einer Webseite erstellen Mit dieser Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird. sevAniGif (VB/VBA) ![]() Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||


Eingabe autom. vervollständigen




