Supportnet / Forum / Datenbanken
Suchen in Access
Frage
Hallo zusammen
habe eine Datenbank erstellt, in welcher ich aus dem Formular heraus eine Suche absetzen kann:
Private Sub Bezeichnung_d_m_DblClick(Cancel As Integer)
Dim strText As String
strText = InputBox("Text eingeben", "Suche in Feld Ist-Beschreibung")
If strText <> "" Then
Me.Filter = "Bezeichnung_d_m LIKE '*" & strText & "*'"
Me.FilterOn = True
End If
End Sub
Diese funktioniert ausgezeichnet, solange der Suchbegriff gefunden wird. Wenn kein Datensatz mit dem Suchbegriff gefunden wird, erscheint das Formular ohne Felder (Leer) und die Datensätze werden erst wieder angezeigt, wenn ich den Filter entferne.
Wäre doch schöne, wenn stattdessen eine Meldung erscheinen würde, dass der Suchbegriff nicht gefunden wurde und das Formular im Ursprungszustand angezeigt würde. Ich zerreiss mir noch was beim Suchen nach der Lösung. Kann mir jemand auf die Sprünge helfen?
Besten Dank ...
Antwort 1 von Phantom_Fies
Hast du denn keinen Button eingebaut, der das Filtern wieder rückgängig macht?
Du könntest dir mit dem Trick helfen, dass du die Filterung durch Doppelklick realisierst, und zwar direkt in einem Datenfeld, ohne Suchbegriffeingabe. Wenn in dem Feld dann keine Daten stehen, filtert ja auch keiner danach.
Du musst dann nur den Wert des Feldes auslesen und als Filterbedingung verwenden.
Du könntest dir mit dem Trick helfen, dass du die Filterung durch Doppelklick realisierst, und zwar direkt in einem Datenfeld, ohne Suchbegriffeingabe. Wenn in dem Feld dann keine Daten stehen, filtert ja auch keiner danach.
Du musst dann nur den Wert des Feldes auslesen und als Filterbedingung verwenden.
Antwort 2 von JohnnyLoser
Hi burny,
ich würde die Prozedur wie folgt abändern:
Funzt!
Vielleicht gibt's bessere Lösungen, aber mir fällt keine ein.
Gruß
Johnny
ich würde die Prozedur wie folgt abändern:
Private Sub Bezeichnung_d_m_DblClick(Cancel As Integer)
On Error Goto bdm_err
Dim strText As String, OldFilter As String
OldFilter = Me.Filter
strText = InputBox("Text eingeben", "Suche in Feld Ist-Beschreibung")
If strText <> "" Then
Me.Filter = "Bezeichnung_d_m LIKE '*" & strText & "*'"
Me.FilterOn = True
End If
strText = Me.Bookmark
Exit Sub
bdm_err:
Select Case Err
Case 3021
Me.Filter = OldFilter
Me.FilterOn = True
Case Else
MsgBox Str(Err) & " " & Error
End Select
Resume Next
End Sub
Funzt!
Vielleicht gibt's bessere Lösungen, aber mir fällt keine ein.
Gruß
Johnny
Antwort 3 von burny
Danke für deine Antwort ... hab's so abgeändert. Fuktioniert alles einwandfrei - nur - es erscheint keine Msg-Box wenn ein Begriff nicht gefunden wird. Was hab ich nun wieder falsch gemacht
Antwort 4 von burny
Danke für deine Antwort Phantom ....
Ich hab einen Button, welche den Filter Rückgängig macht.
Ledier kann ich deinen Vorschlag so nicht umsetzen - ich starte den Filter, indem ich auf das Feld doppelklicke und den Suchbegriff in eine "Suchmaske" eingebe ...
Ich hab einen Button, welche den Filter Rückgängig macht.
Ledier kann ich deinen Vorschlag so nicht umsetzen - ich starte den Filter, indem ich auf das Feld doppelklicke und den Suchbegriff in eine "Suchmaske" eingebe ...
Antwort 5 von burny
Hei JohnnyLoser
ich habs geschafft, habe den Code so abgeändert:
Private Sub Bezeichnung_d_m_DblClick(Cancel As Integer)
On Error GoTo bdm_err
Dim strText As String
strText = InputBox("Text eingeben", "Suche im Feld Bezeichnung")
If strText <> "" Then
Me.Filter = "Bezeichnung_d_m LIKE '*" & strText & "*'"
Me.FilterOn = True
End If
strText = Me.Bookmark
Exit Sub
bdm_err:
Select Case Err
Case 3021
Me.FilterOn = False
MsgBox "Leider kein Datensatz mit diesem Suchbegriff gefunden"
End Select
Resume Next
End Sub
Jetzt funktioniert alles so wie ich es mir eigentlich vorgestellt habe! Der Filter wird gelöscht und es werden wieder alle Datensätze angezeigt. Gleichzeitig erscheint die Msg-Box!
Danke für die tolle Hilfe
ich habs geschafft, habe den Code so abgeändert:
Private Sub Bezeichnung_d_m_DblClick(Cancel As Integer)
On Error GoTo bdm_err
Dim strText As String
strText = InputBox("Text eingeben", "Suche im Feld Bezeichnung")
If strText <> "" Then
Me.Filter = "Bezeichnung_d_m LIKE '*" & strText & "*'"
Me.FilterOn = True
End If
strText = Me.Bookmark
Exit Sub
bdm_err:
Select Case Err
Case 3021
Me.FilterOn = False
MsgBox "Leider kein Datensatz mit diesem Suchbegriff gefunden"
End Select
Resume Next
End Sub
Jetzt funktioniert alles so wie ich es mir eigentlich vorgestellt habe! Der Filter wird gelöscht und es werden wieder alle Datensätze angezeigt. Gleichzeitig erscheint die Msg-Box!
Danke für die tolle Hilfe