Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchleiste mit VBA

Suchleiste mit VBA
23.07.2015 10:18:13
Mia
Hallo,
ich bin dabei eine Lieferanten-Datenbank in Access aufzubauen, welche allerdings von einer Maske aus Excel gesteuert wird.
Dort habe ich nun eine Such´leiste angelegt, mit welcher ich die Datenbank mittels Stichwortsuche bzw. Teilsuche nach dem Lieferantennamen oder der SAP-Nummer durchsuchen möchte.
Meine grundsätzliche Codierung sieht bisher folgendermaßen aus:
Dim db_Lieferanten As Database 'Access-Datenbank
Dim rs_Übersicht As ADODB.Recordset 'Tabelle Details in DB
Dim rs_Maßnahmen As Recordset 'Tabelle Audit: Maßnahmen in DB
Dim rs_Reklamationen As Recordset 'Tabelle Reklamationen in DB
Dim rs_Verlauf As Recordset 'Tabelle VDA-Verlauf in DB
Dim objControl As Control
Dim X As Double 'Zählvariable
Dim Y As Double 'Zählvariable 2
Dim SAP As String 'SAP-Nummer
Dim h As String 'Lieferanten-Name
Dim GUID As String 'GUID-Nummer
Dim Suche As String 'Suchvariable
Dim datname As String 'Dateiname der Datenbank
'Lieferantenliste nach bestimmtem Lieferanten durchsuchen: Nach SAP-Nummer oder Namen...

Private Sub Suche2_Click()
datname = "C:\Users\bla\Documents\Datenbank1.accdb"
'Bei Fehlern in jeweilige error-Ausführung springen
On Error GoTo db_open_error
Set db_Lieferanten = OpenDatabase(datname)
On Error GoTo 0
On Error GoTo rs_open_error
Set rs_Übersicht = db_Lieferanten.OpenRecordset("Details")
Set rs_Maßnahmen = db_Lieferanten.OpenRecordset("Audit: Maßnahmen")
Set rs_Reklamationen = db_Lieferanten.OpenRecordset("Reklamationen")
Set rs_Verlauf = db_Lieferanten.OpenRecordset("VDA-Verlauf")
On Error GoTo 0
rs_Übersicht.MoveFirst
CommandButton4.Enabled = False      'VDA-Verlauf-Button kann nicht bedient werden --> Folge:  _
Erst nachdem Lieferant angewählt wurde, werden diese Anzeigen möglich
CommandButton2.Enabled = False      'Zertifizierungs-Button kann nicht bedient werden --> Folge: _
_
_
_
Erst nachdem Lieferant angewählt wurde, werden diese Anzeigen möglich
'Listbox und Textboxen leeren
ListBox1.Clear
ListBox4.Clear
'Suchtext aus Textbox auslesen
Suche = Suche1.Text
'Wenn keine Suche vorgegeben, dann Sortieren nach ID
If Suche = "" Then
rs_Übersicht.Index = "PrimaryKey"
End If
'Wenn die Eingabe nicht rein numerisch ist, als Lieferant suchen
If IsNumeric(Suche) = False Then
rs_Übersicht.Index = "Lieferant"
End If
'Wenn Eingabe nur aus Zahlen, dann Sortieren nach SAP
If IsNumeric(Suche) = True Then
rs_Übersicht.Index = "SAP-Nr"
End If
'Solange das Ende der Tabelle nicht erreicht ist wird Schleife ausgeführt.
Do While Not rs_Übersicht.EOF
'Wenn Suchleiste leergelassen und trotzdem auf "Suche" geklickt, alle anzeigen
If Suche = "" Then
ListBox1.AddItem (rs_Übersicht.Fields("SAP-Nr") & ": " & rs_Übersicht.Fields("Lieferant" _
_
_
_
))
ListBox4.AddItem (rs_Übersicht.Fields("SAP-Nr"))
Else
'Wenn eingegebene/r SAP oder Name dem Suchtext entspricht
If rs_Übersicht.Index = "SAP-Nr" Then rs_Übersicht.Filter , "SAP - Nr Like '*Suche*'" _
_
_
_
If rs_Übersicht.Index = "Lieferant" Then rs_Übersicht.Filter , "Lieferant Like '*Suche*' _
_
_
_

'Wenn Suche nichts ergibt, dann Suchfeld leeren und eine Info-Box mit "Lieferant  _
existiert nicht." ausgeben
If rs_Übersicht.NoMatch Then
Suche1.Text = ""
MsgBox "Lieferant existiert nicht.", vbOKOnly + vbInformation
Exit Do
End If
'betreffenden Namen in der Listbox anzeigen
ListBox1.AddItem (rs_Übersicht.Fields("SAP-Nr") & ": " & rs_Übersicht.Fields("Lieferant" _
_
_
_
))
ListBox4.AddItem (rs_Übersicht.Fields("SAP-Nr"))
End If
rs_Übersicht.MoveNext
Loop
Exit Sub
'Fehlermeldung
db_open_error:
MsgBox "Datenbank konnte nicht geöffnet werden"
rs_open_error:
MsgBox "Recordset konnte nicht geöffnet werden"
End Sub

Der als fett markierte Bereich ist nun mehr oder weniger meine Problemzone. Er sagt grundsätzlich an, dass die Verwendung dieser Eigenschaft unzlässig ist, sobald ich den Durchlauf starten möchte. Da ich wenig Erfahrung mit den Filter bzw. Find-Befehlen habe und bisher immer nur das klassische Seek verwendet habe, komme ich im Moment einfach nicht weiter.
Ich hoffe ihr könnt mir helfen!! :)
Grüße
Mia

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
...*" & Suche & "* ..... owt
23.07.2015 23:10:02
Raphael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige