Hallo,
ich habe eine Access-DB mit im Moment 2 Datensätzen
Band:
Pearl Jam
M-M.Westernhagen
Album:
vs.
Keine Zeit (CD2)
Ich habe nun ein Suchformular gebaut, welches nach dem Namen des Künstlers/der Band sucht, mittels * gehen auch Buchstaben.
Das Suchergebniss wandert in ein Recordset, welches ich danach in eine Listview eintragen möchte.
Hier einmal der Code
Private Sub Suchen()
If Suchtext = "" Then
MsgBox "Bitte geben Sie einen" & vbNewLine & "Suchbegriff ein!", _
vbExclamation, "Fehler in der Sucheanfrage"
Exit Sub
End If
'Datenbank öffnen
dbFile = App.Path + "\db_musikcds.mdb"
Set Db = Workspaces(0).OpenDatabase(dbFile, True, True)
'Aktuellen Zeiger innerhalb der Datenbank merken
GetBookmark Tabelle, CurRec, CurIdx
If optSearch1(0) = True Then
SetBookmark Tabelle, CurRec, CurIdx
Set Tabelle = Db.OpenRecordset("tbl_bands")
Tabelle.Index = "band_name"
SQL = "select * from tbl_bands, tbl_albums where band_name like '*" _
& Suchtext & "*'"
Set rs = Db.OpenRecordset(SQL)
If rs.RecordCount > 0 Then
'Suchergebniss(e) in der Listview anzeigen
frmShow.lvwBand.ListItems.Clear
rs.MoveFirst
Do
Set lstItem = frmShow.lvwBand.ListItems.Add(, , rs( _
"band_name"))
lstItem.SubItems(1) = rs("album_title")
rs.MoveNext
Loop Until rs.EOF
Else
MsgBox ("Die gesuchte Band konnte nicht in der" & vbNewLine & _
"Datenbank gefunden werden"), vbInformation, "Kein Ergebniss"
txtSearchText = ""
'Zeiger auf Ausgangswert setzen
SetBookmark Tabelle, CurRec, CurIdx
End If
End If
If optSearch1(1) = True Then
MsgBox ("Nix is")
End If
If optSearch1(2) = True Then
MsgBox ("Nix is2")
End If
'Datenbank schließen
Tabelle.Close
Db.Close
Set Tabelle = Nothing
Set Db = Nothing
End Sub Wenn ich diese Anfrage nun ausführe, so wird das Listview auch gefüllt, allerdings mit dem Künstler und BEIDEN vorhandenen Alben...
Sprich irgendwo muss ein Fehler in der SQL-Abfrage sein, nur leider entdeckte ich den nicht
Suche ich zB nach Pearl Jam, so erscheint das in der Liste:
Pearl Jam - Keine Zeit (CD2)
Pearl Jam - vs.
Es wird also das erste existente Album ausgegeben, danach das zweite usw...
Wo könnte mein(e) Fehler liegen?
Michael |