Suche in mdb sowie End of DB erreicht?
23.10.2020 14:49:43
Ronald
Wie kann ich die ganze Access-Datenbank oder auch nur eine Tabelle per VBA nach einem Schlüsselwort
durchsuchen lassen? Ich habe es mit Recordset.Seek versucht, jedoch ohne Erfolg. Das sah dann so aus:
Public Sub Suche_KV()
Dim i As Integer
Dim strQuery As String
If frmMain.txtSuchbegriff_KV.Text = "" Then
Else
strSuchbegriff = frmMain.txtSuchbegriff_KV.Text
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\_Privat\HOLZZZWERK\Büro\ _
Holzzzwerk ERP\HOLZZZWERK_ERP.mdb;Persist Security Info=False;"
Set rs = cn.Execute("SELECT * FROM tKunden")
Do While Not rs.EOF
rs.Seek KeyValues:=strSuchbegriff, _
SeekOption:=adSeekFirstEQ
If Not rs.EOF Then
MsgBox Prompt:="Der Suchbegriff " & strSuchbegriff & _
" ist bereits in der Datenbank vorhanden." _
& vbNewLine & _
"Es wird keine Aktualisierung durchgeführt."
End If
'ze = ze + 1
Loop
cn.Close
End If
End Sub
Als Meldung bekam ich Der aktuelle Provider unterstützt nicht die erforderliche Schnittstelle
für die Indexfunktion.
Für diese Suche ist mir auch nicht klar, wozu ich bei der Suche einen Index brauche, resp. wieso ich
einen Primärschlüssel angeben muß.
Also hab ichs ein bissl angepaßt:
Public Sub Suche_KV()
Dim i As Integer
Dim strQuery As String
If frmMain.txtSuchbegriff_KV.Text = "" Then
Else
strSuchbegriff = frmMain.txtSuchbegriff_KV.Text
cn.Open ConnectionString:= _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\_Privat\HOLZZZWERK\Büro\Holzzzwerk ERP\HOLZZZWERK_ERP.mdb;" & _
"Mode=Share Exclusive"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open Source:="tKunden", _
ActiveConnection:=cn, _
CursorType:=adOpenStatic, _
LockType:=adLockPessimistic, _
Options:=adCmdTableDirect
rs.Index = "fKdNummer"
Do While Not rs.EOF
rs.Seek KeyValues:=strSuchbegriff, _
SeekOption:=adSeekFirstEQ
If Not rs.EOF Then
MsgBox Prompt:="Der Suchbegriff " & strSuchbegriff & _
" ist bereits in der Datenbank vorhanden." _
& vbNewLine & _
"Es wird keine Aktualisierung durchgeführt."
End If
Loop
cn.Close
End If
End Sub
und bekam nun eine neue Meldung: 'fKdNummer' ist in dieser Tabelle kein Index.
Was mache ich falsch? Wäre schön, wenn jemand einen Tip für mich hat.
Desweiteren habe ich 2 Buttons, um von Datensatz zu Datensatz entweder vorwärts oder rückwärts zum
jeweils nächsten zu springen. Wie kann ich es hier abfangen, wenn das Ende der Tabelle erreicht ist?
Wenn ich beispielsweise die Kundennummer immer eins erhöhe und hierfür neu abrufe, um diesen Daten-
satz anzeigen zu lassen, funktioniert das gut. Wenns aber eins höher ist, als ich überhaupt Datensätze
drin habe, sollte dies abgefangen werden. Nur wie?
Vielen Dank im Voraus.
Gruß Ronald