Daten aus einem Recordset mit einem String vergleichen

Ilona85

Mitglied
Ich moechte in einer MySql-Datenbank nach einem in einer Visual.Basic-Textbox eingetragenen Autor suchen.. Dazu hab ich unter Form_Initialize() die Verbindung mit der DB hergestellt.. dann wird in der Textbox der Name des Autors eingegeben, und bei Click auf Command1_Button soll dann gesucht werden, ob der Autor in der MySql - DB vorhanden ist. Da ich leider nicht sehr viel Erfahrung hab mit VB, braeuchte ich da wieder mal Hilfe..
Ich habs mal mit folgendem Code versucht, funktioniert aber erwartungsgemaess nicht, weiss wer wies anders geht?
Code:
Private Sub Command1_Click()
	Dim var As String
	Dim var1 As String
	var = Text1.Text
	var1 = rs.GetString
	If Combo1.Text = "Autor" Then
		For i = rs.BOF To rs.EOF
		   If Left(var, 1) = var1 Then
				MsgBox "Hit found!", vbInformation
			Else
				MsgBox "No hit found!", vbInformation
			End If
		Next i
	End If
End Sub
 
Du musst einen SQL Befehl an die Datenbank schicken.

Code:
 SELECT FeldName1, FeldName2 FROM TabellenName WHERE AutorFeldName Like '%Suchstring%'
 
Hallo Ilona,

aus deinem Code kann ohne eine wahrsagende Kristallkugel zu besitzen keiner so richtig schlau werden und einen Fehler suchen.
Du solltest mehr Code bzw. vollständigen Code zeigen.
Wie und wo öffnest du deine DB Connection.
Wie und wo wird das Recordset instanziert und geöffnet ?
Ein SQL Statement ist wie von mage erwähnt nicht zu erkennen.
Anhand des von dir gezeigten Codes ist es schwer dir da zu helfen.
Klar ein komplettes Bsp. ist kein Zauberwerk, aber da fehlt mir im Moment gerade die Zeit.

Ist das dein Code oder hast du das irgendwo kopiert ?

Gruß
Jens
 
Hallo JensG, danke fuer deine Antwort. Hier nun der Code der "Suchform".. der ist von mir, aber ich bin erst am Einlernen, bzw. Wiedererlernen von VB, und mit Dbs und VB hab ich noch nie gearbeitet..
Code:
Dim rs As ADODB.Recordset
Dim conn As ADODB.Connection

Private Sub Form_Initialize()
	 'Verbindung herstellen
	Set conn = New ADODB.Connection
	conn.CursorLocation = adUseClient
	conn.ConnectionString = "DRIVER=MySQL ODBC 3.51 Driver;" _
		& "SERVER=10.0.5.31;" _
		& "DATABASE=probe;" _
		& "UID=root;" _
		& "PWD= "
	'Verbindung oeffnen
	conn.Open
	'Recordset erstellen
	Set rs = New ADODB.Recordset
	rs.Open "SELECT * FROM buch", conn, adOpenDynamic, adLockOptimistic
	'Textboxen fuer Datenerhalt vorbereiten
	Set Text1.DataSource = rs
	
	Text1.DataField = "lib_aut"
End Sub
 
Private Sub Command1_Click()
	Dim var As String
	Dim var1 As String
	var = Text1.Text
	var1 = rs.GetString
	If Combo1.Text = "Autor" Then
		For i = rs.BOF To rs.EOF
		   If Left(var, 1) = var1 Then
				MsgBox "Hit found!", vbInformation
			Else
				MsgBox "No hit found!", vbInformation
			End If
		Next i
	End If
End Sub
Vielleicht kennst du dich jetzt besser aus.. beste gruesse
 
Hallo Ilona,

schau dir das mal an. Habe etwas geändert.

Code:
Dim rs As ADODB.Recordset
Dim conn As ADODB.Connection

Private Sub Form_Initialize()
     'Verbindung herstellen
    Set conn = New ADODB.Connection
    conn.CursorLocation = adUseClient
    conn.ConnectionString = "DRIVER=MySQL ODBC 3.51 Driver;" _
        & "SERVER=localhost;" _
        & "DATABASE=probe;" _
        & "UID=root;" _
        & "PWD="
    'Verbindung oeffnen
    conn.Open
    'Recordset erstellen
    Set rs = New ADODB.Recordset
    rs.Open "SELECT * FROM buch", conn, adOpenDynamic, adLockOptimistic
    'Textboxen fuer Datenerhalt vorbereiten
    
    'Set Text1.DataSource = rs
    
    'Text1.DataField = "lib_aut"
    
End Sub
 
Private Sub Command1_Click()
    
    rs.Filter = adFilterNone
    rs.MoveFirst
    rs.Find ("lib_aut = '" & Text1.Text & "'")
    
    If rs.EOF Then
        MsgBox "No hit found!", vbInformation
    Else
        MsgBox "Hit found!", vbInformation
    End If
    
    'oder alternativ
    Dim rs2 As New ADODB.Recordset
    rs2.ActiveConnection = conn
    rs2.Source = "Select lib_aut from buch where lib_aut = '" & Replace(Text1.Text, "'", "''") & "'"
    rs2.CursorType = adOpenStatic
    rs2.LockType = adLockOptimistic
    rs2.Open
    
    If rs2.EOF Then
        MsgBox "No hit found!", vbInformation
    Else
        MsgBox "Hit found!", vbInformation
    End If
    
    rs2.Close
    Set rs2 = Nothing
    
    
    

    
    
End Sub

Die Datenbindung habe ich rausgenommen, da sonst bei der Eingabe im Textfeld Text1
sofort die Daten in der DB upgedatet werden.

Gruß
Jens
 
Zurück