VB + Access + SQL

VBMichi

Mitglied
Hi ihr.

Ich hab da mal ne Frage und hoffe ihr könnt mir helfen !

Schreibe heute schon seit ner ganzen Weile an nem Programm in VB.
Ist eigentlich ganz simpel. Der Benutzer tippt einen beliebigen Namen / Vornamen / Betrag o.Ä. in ein Textfeld und klickt auf "Suchen".
Wenn dieser Suchbegriff in der Access-Datenbank entdeckt wird, werden alle Daten von diesem "Fund" ausgespuckt. Eine "Kunden-Abfrage" sozusagen.
Nun habe ich schon einen Befehl eingebaut der die Suche vereinfachen soll. Er dient lediglich dazu dass VB den ersten Buchstaben des Suchbegriffes durch den selben Buchstaben in "groß" ersetzt - damit also Groß und Kleinschreibung unrelevant ist.
Nun würde ich noch gerne eine "Teilabfrage" mit einprogrammieren hab aber leider keine Ahnung wie es geht.

Kleines Beispiel:
Der Benutzer tippt (versehentlich) üller statt Müller ein. Nun soll mein Programm einfach noch sowas "ähnlichem" wie üller suchen, und Müller finden.
Ist das möglich?
Ich habe es mit dem SQL Befehl: "LIKE" versucht, bin aber auf noch keinen grünen Zweig gekommen.

Meine Felder lauten wie folgt:

Textfeld = tfName
Datenbank = db1.mdb
Table = Vertreter
Spalte die "ausgesucht" werden soll = VertreterNachname
SQL ist als String gedimt.

Hoffe ihr könnt mir weiterhelfen, weil ich wirklich null der Fachsprache ausm I.net verstehe (bin nochn Vollpfosten-Anfänger :) )


Grüße,
Michi
 
Hallo, versuch´s mal so:
Code:
SQL = "SELECT * FROM Vertreter WHERE VertreterNachname LIKE '%" & tfName.Text & "%'"
oder so:
Code:
SQL = "SELECT * FROM Vertreter WHERE VertreterNachname LIKE '*" & tfName.Text & "*'"
 
Hi wincnc.

Vielen Dank für deine Antwort.
Leider aber weiß ich gar nicht wo ich diesen Befehl nun einbauen muss :)
Ich hab jetzt ein kleines simpleres Programm nochmal geschrieben welches ich hier reinposten kann. Vielleicht kann mir dann jemand genaueres erklären.
Bisher läuft mein Programm so:

Code:
Option Explicit
Dim mdbVertreter As Database
Dim tbVertreter As Recordset
Dim SQL As String
Dim sString As Variant
'
Private Sub cmdSuchen_Click()
    sString = tfName.Text
    sString = Replace(sString, Left(sString, 1), UCase(Left(sString, 1)), 1, 1)
    tfName.Text = sString
        Set mdbVertreter = OpenDatabase(App.Path + "/db1.mdb")
        Set tbVertreter = mdbVertreter.OpenRecordset("Vertreter", dbOpenTable)
         tbVertreter.MoveFirst
            While Not tbVertreter.EOF
             If tfName.Text = tbVertreter!VertreterNachname Then GoTo Gefunden Else tbVertreter.MoveNext
            Wend
MsgBox ("Datensatz konnte leider nicht gefunden werden.")
Exit Sub
'
Gefunden:
    lfListe.AddItem "gefunden"
End Sub

Könnte mir hier jemand sagen wo und wie ich diesen SQL Befehl einbauen muss? :)

Gruß,
Michi
 
Zuletzt bearbeitet:
Hallo Michi,

der SQL-Befehl gehört in die OpenRecordset Methode.

Ich habe deine Routine entsprechend modifiziert:

Code:
Option Explicit
Dim mdbVertreter As Database
Dim tbVertreter As Recordset
Dim SQL As String
'
Private Sub cmdSuchen_Click()
  SQL = "SELECT * FROM Vertreter WHERE VertreterNachname LIKE '*" & tfName.Text & "*'"
  ' ** die folgende Zeile gehört besser nach 'Form_Load' Schliesen und Nothing nicht vergessen!
  Set mdbVertreter = OpenDatabase(App.Path + "/db1.mdb")
  
  Set tbVertreter = mdbVertreter.OpenRecordset(SQL) ' Schliesen und Nothing nicht vergessen!
  lfListe.Clear   ' <-- angenommen lfListe ist eine Combo- oder Listbox
  If tbVertreter.RecordCount > 0 Then
    tbVertreter.MoveFirst
    While Not tbVertreter.EOF
      lfListe.AddItem tbVertreter!VertreterNachname
      tbVertreter.MoveNext
    Wend
    lfListe.ListIndex = 0 ' erster Eintrag anzeigen
  Else
    MsgBox "Datensatz konnte leider nicht gefunden werden."
  End If
End Sub

Grüße
Walter Gutermann
 
Zurück