vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
eine 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.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
eine clevere Suchfunktion1.662Sophus29.03.10 23:42
Re: eine clevere Suchfunktion900wb-soft30.03.10 10:16
Re: eine clevere Suchfunktion871Sophus30.03.10 15:24
Re: eine clevere Suchfunktion960JAG30.03.10 15:50
Re: eine clevere Suchfunktion890wb-soft30.03.10 15:41
Re: eine clevere Suchfunktion882vbInsider30.03.10 15:50
Re: eine clevere Suchfunktion869Sophus30.03.10 16:09
Re: eine clevere Suchfunktion878wb-soft30.03.10 16:50
Re: eine clevere Suchfunktion835Sophus31.03.10 03:39
Progressbar bei während der Suche?1.002Sophus31.03.10 05:23
Re: eine clevere Suchfunktion839wb-soft31.03.10 10:26
Re: eine clevere Suchfunktion839Sophus31.03.10 13:32
Re: eine clevere Suchfunktion872vbInsider31.03.10 13:36
Re: eine clevere Suchfunktion838wb-soft31.03.10 14:26

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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