On/Am Thu, 30 Sep 2004 05:48:19 -0700, "Nicole Gabriel"
<***@ghoja.ch> wrote/schrieb:
Hallo Nicole,
ich hab' mir vor Jahren mal eine Suchfunktion zusammengestellt, die
universell verwendbar ist.
Hierzu muß lediglich im Formular eine Befehlsschaltfläche positioniert
werden, dem die folgende Funktion (BeimKlicken als Funktion)
hinterlegt ist, also so "=acbSuchen()":
---Anfang
Option Compare Database
Option Explicit
Function acbSuchen()
Dim Ctl As Control, F As Form
Dim strSuchenNach As String, strFeldname As String
Dim strTitel As String, strPrompt As String, intTaste As Integer
Dim strBookmark As String, strTemp As String
On Error Resume Next
Set Ctl = Screen.PreviousControl
Set F = Screen.ActiveForm
Ctl.SetFocus
If Err <> 0 Then
Beep
MsgBox "Fehler beim Aufruf - Funktion kann nur aus einem Formular heraus eingesetzt werden...", _
vbOKOnly + vbCritical, "acbSuchen():"
Exit Function
End If
On Error GoTo 0
strFeldname = Ctl.Name
strTitel = "Suchen in Feld »" & strFeldname & "«:"
NeueSuche:
strPrompt = "Suchbegriff eingeben (Teilbegriff möglich, GROSS/klein spielt keine Rolle):"
strSuchenNach = InputBox$(strPrompt, strTitel, "")
If strSuchenNach = "" Then Exit Function
DoCmd.FindRecord strSuchenNach, acAnywhere, False, acSearchAll, False, acCurrent, True
If InStr(Ctl, strSuchenNach) = 0 Then 'Nichts gefunden...
Beep
strPrompt = "Keinen Eintrag für Suchbegriff »" + strSuchenNach + "« in Feld »" + strFeldname + "« gefunden!" + vbCrLf + vbCrLf
strPrompt = strPrompt + "Neuen Suchbegriff eingeben?"
intTaste = MsgBox(strPrompt, vbYesNo + vbExclamation, strTitel)
If intTaste = vbYes Then GoTo NeueSuche
Exit Function
End If
Weitersuchen:
DoEvents
Beep
intTaste = MsgBox("Weitersuchen?", vbYesNo + vbQuestion, strTitel)
If intTaste <> vbYes Then Exit Function
strBookmark = F.Bookmark
DoCmd.FindNext
DoEvents
strTemp = F.Bookmark
If InStr(Ctl, strSuchenNach) <> 0 And StrComp(strBookmark, strTemp, vbBinaryCompare) <> 0 Then 'Gefunden, weitersuchen?
GoTo Weitersuchen
Else 'Nichts weiter gefunden...
Beep
MsgBox "Suchbegriff »" + strSuchenNach + "« wurde nicht nochmal gefunden...", _
vbOKOnly + vbInformation, strTitel
End If
End Function
---Ende
Damit kannst Du in jedem Textfeld Deines Formulars suchen, indem Du
vor dem Klicken auf diese Schaltfläche den Cursor in das zu
durchsuchende Feld positionierst.
Die obige Funktion ist im Modul "modSuchen" gespeichert, kann aber
natürlich in jedem anderen Modul, das Du in Deiner Datenbank
verwendest, hinterlegt werden.
Falls der Code oben in Deinem Newsreader verstümmelt ankommt, kann ich
ihn dir gerne auch mailen.
--
Gruß
hoe = Friedrich Hoeglmeier
Liebhaber des korrekt verwendeten Apostrophs