| |

Visual-Basic Einsteigereine clevere Suchfunktion | |  | Autor: Sophus | Datum: 29.03.10 23:42 |
| Nun, was Access-Datenbank anbelangt, kenne ich schon zwei funktionsfähige Suchfunktionen-Varianten.
Ich stelle sie euch mal vor... zur Verständnishalber im späteren Verlauf:
Variante 1
Inhalt des Projektes:
- Form1
- Textbox (Text1)
- Schaltfläche (Command1)
- Projektverweis: Microsoft DAO 3.51 Object Library
Form1
Option Explicit
Dim mdb As Database
Dim dynn As Recordset
Private Sub Form_Load()
Set mdb = OpenDatabase(sKeyNames17.Text)
'In der Textbox (sKeyNames17) steht nun der Pfad, welcher
'zur Datenbank führt.
Set dynn = mdb.OpenRecordset("dates", dbOpenTable)
'Die Tabelle (dates) soll geöffnet werden
End Sub
Private Sub Command1_Click()
Call Prz_Sreach 'Prozedur wird nun aufgerufen
End Sub
Sub Prz_Search()'die aufzurufende Prozedur
On Error Resume Next
Dim Tex As String 'Eine von mir ausgedachte Variable
Tex = Text1.Text 'Meine ausgedachte Variable wird nunr definiert
Dim mName
mName = Tex
dynn.Index = "telefon"
dynn.Seek "=", mName
If dynn.NoMatch Then
MsgBox "Nichts gefunden"
Else
Kontakt.Show'Der Datensatz eines Kontaktes wird in DER Form ausgegeben
End If
End Sub Fazit:
Diese Suchefunktion eignet sich eigentlich eher dafür, wenn man - in meinem Beispiel - die Telefonnummer genau weiss, und nun wissen will, wer hinter dieser Nummer verbirgt. Allerdingst ist die Suche recht starr. Das heißt, die Telefonnummer muss exakt genau eingegeben werden. Es darf keine Abweichung geben, ansonsten tut er so, als gäbe es diese Nummer nicht.
Variante 2
Inhalt des Projektes:
- Form1
- Textbox (Text1)
- Combobox (Combo1)
- Schaltfläche (Command1)
- DBGrid (DBGrid1)
- Data (Data1)
- Projektverweis: Microsoft DAO 3.6 Object Library
Form1
Option Explicit
Private daoDB36 As Database
Private rs As DAO.Recordset
Private Sub Form_Load()
Combo1.AddItem "Telefon"
End Sub
Private Sub Command1_Click()'Start der Abfrage
On Error Resume Next
Dim Abfrage As String
Dim Sel As String
Dim Cbo As String
Dim Tex As String
Dim sPath As String
Sel = "SELECT * FROM dates WHERE "
Cbo = Combo1.Text
Tex = Text1.Text
'Wichtig ist der Operator "LIKE"
'weil mit " = " nur übereinstimmende Einträge
'gefunden werden.
Abfrage = Sel & _
Cbo & " LIKE " & "'" & Tex & "*'"
''%" & suchbegriff & "%'
sPath = App.path & "\address.mdb"
Set daoDB36 = DBEngine(0).OpenDatabase(sPath)
'Abfrage ist der gesamte SQL-String! _
sonst werden alle Datensätze gefunden !
Set rs = daoDB36.OpenRecordset(Abfrage)
Data1.DatabaseName = sPath
Set Data1.Recordset = rs
Data1.Recordset.MoveLast Fazi:
Diese Suche ist etwas eleganter. Sie ist nicht ganz so starr. Beispiel: Du hast die Telefonnummer nicht mehr komplett im Kopf, weißt aber, dass die Vorwahl irgendwie mit "038" anfing Du gibst sie einfach ein, und die Suche spuckt dir alle Kontakte über DBGrid1 aus, deren Telefonnummer ebenfalls mit '038'beginnt. Allerdings ist diese Suche nicht so ganz elegant, wie ich es mir vorstelle... und dazu kommen wir jetzt
Variante 3
Ich habe schon an meiner 2. Variante versucht rumzuwerkeln, dennoch bin ich jedesmal kläglich gescheitert.
[u]1. Szenario
Wir stellen uns vor, man kann bei jedem Kontakt eine längere Anmerkung hinterlassen. Das Feld der Datenbank hat den Typ 'Memo'. Nun schreibe ich unter einem bestimmten Kontakt einen längeren Text, und drücke dabei beiläufig die Enter-Taste, schliesslich ist die Textbox, worin ich meine Anmerkung über den Kontakt niederschreibe, unter Multiline auf True gesetzt. Nun speicher ich den Kontakt ab, und möchte ihn aber nicht über 'Telefon' suchen, sondern über die Anmerkung. Die Anmerkung kann folgendermaßen aussehen:
Dieser Kontakt ist ein netter Mensch.
Jetzt habe ich die Enter-Taste betätigt.
Diesen Kontakt habe ich im Club BLUBB kennengelernt.
Und nun möchte einen Kontakt suchen, wo in der Anmerkung das Wort 'Club' vorkommt. Meine Variante 2 findet diesen Kontakt nicht. Gebe ich aber bei der Suche 'Dieser' ein, findet er ihn wieder.
[u]2. Szenario
Bei meiner Suche unter Variante 2 habe ich mehrere Kontakte, derren Telefonnummer mit '038' beginnen. Ich möchte aber, dass das Suchergebnis nicht über DBGrid1 ausgespuckt wird, sondern über Listview1. Einfach weil es schöner aussieht und sich besser bedienen lässt.
Kann mir da dann jemand helfen diese beiden Szenarien irgendwie unter Variante 2 unterzubringen?
Ich bedanke mich jetzt schon mal. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) 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. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
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.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|