Suche verfeinern

bomber080674

Mitglied
Hallo!

Nun habe ich es langsam mit der DB verstanden und bräuchte jetzt euren weiteren Rat.

Ich habe eine Suchfunktion in meiner DB eingefügt die auch funktioniert.

Jetzt habe ich aber das Problem das ich haargenau den Namen eingeben muss und nicht abkürzen kann z.b Name Müller steht drin aber wenn ich z.b mül angebe musste er mir das auch anzeigen wie geht dieses über vb.net?

In meiner PHP-Programmierung weiss das ich Suchstring in einer Variable packe und dann vor der Variable ein Prozentzeichen setze und dahinter! Wie ist denn das Zeichen bei vb.net?

Code:
     Dim name As String
        name = Replace(TextBox1.Text, "''", "'")

        Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source =telefonbuch.mdb;" & "User ID = Admin;")


Dim daadresse As New OleDb.OleDbDataAdapter("Select * from teilnehmer where tel_name = ' " & name & "  '", conn)

Danke euch! Gruß Mike
 
Das wäre eigentlich eine Frage für das SQL Forum.
Unter Access wirst Du statt des '%' Zeichens, das '*' Zeichen verwenden müssen.

Ansonsten solltest Du aus Sicherheitsgründen vermeiden SQL Strings selbst zusammenzubauen -> SQL Injektion.

Besser sind dafür sind parameterisierte Abfragen, was im Moment meines Wissenstandes mit PHP und MySQL nicht geht.
 
Hi

Danke für deine Antwort. Nur mach ich es nicht direkt über Access sondern in vb.net.

Dort gibt mir eine Fehlermeldung an:

Ist der String denn so richtig?

("Select * from teilnehmer where tel_name LIKE = '*' " & name & " ''*'", conn)

Danke für deine Antwort

Gruss Mike
 
Ich gesteh ehrlich ich seh bei den ganzen Hochkommatas nicht recht durch. Ja den Stern anstatt des Prozentzeichens verwenden.

Beispiel aus der MSDN umgebaut siehe OleDBAdapter

Code:
  Dim da As OleDbDataAdapter = New OleDbDataAdapter()
  Dim cmd As OleDbCommand

  ' Create the SelectCommand.

  cmd = New OleDbCommand("SELECT * FROM teilnehmer WHERE tel_name LIKE @TName", conn)

  cmd.Parameters.Add("@TName", OleDbType.VarChar, 50).Value = "*" & name & "*"
 
  da.SelectCommand = cmd
 
Hallo Bomber080674,

so sollte auch dein Select funktionieren, falls du keine Parameter
verwenden möchtest.

Code:
("Select * from teilnehmer where tel_name LIKE  ' % " & name & " % ' ", conn)

das Beispiel von Mage ist aber auch eine saubere Lösung.

Jens
 
Hi!

Sorry das ich mich erst jetzt melde. Also ich habe bei Varianten versucht.


Bei der Variante von Mage bekomme ich die Fehlermeldung das der OleDBcommand

nicht definiert ist.

Bei meinem veränderten Suchstring erhalte ich zwar keine Fehlemeldung aber wenn ich die Suche starte zeigt er mich keinen Treffer an obwohl der Name aufjedenfall in der DB gespeichert ist.

"Select * from teilnehmer where tel_name LIKE ' % " & name & " % ' ", conn)

Selbst wenn ich den Namen haargenau eingebe zeigt er mir nichts mehr obwohl dies vorher funktioniert hat.

Was habe ich denn falsch gemacht?

Danke

Mike
 
Wenn Du den Fehler bekommst, dass etwas nicht definiert ist, fehlt entweder der Namesraum(Namespace) oder Du hast Dich verschrieben :).

Beim fehlenden Namesraum entweder über
Imports System.Data.OleDb einbinden oder
direkt über
cmd = New System.Data.OleDb.OleDbCommand("..
ansprechen.
 
Zurück