Es ist etwas schwierig bei solchen Aufgaben zu helfen, aber:
Private Sub cmdSuch_Click()
Dim Zähler As Integer
Dim pSQL As String
Dim varSuchteile As Variant
Dim Suchstring As String
varSuchteile = Split(Me.txtSuchbegriff, " ")
=> Hast Du schon versucht, z. B. über Msgbox zu prüfen, ob in txtSuchbegriff etwas angezeigt wird?
=> Wo kommen die Daten her?
=> Unter (1) wird ein recordset geschlossen, wo wird es geöffnet?
=> Hier fehlen Infos, z.B. Dim db As DAO.Database; Dim rs As DAO.Recordset; Set rs = db.OpenRecordset("Select* From ....")
'Suchstring aufbauen, der nachher an den SELECT-String angehängt wird
If Me.chkAnfangSuchen = True Then
'Bei Anfangssuche ist nur 1 Suchbegriff erlaubt
If UBound(varSuchteile) > 0 Then
MsgBox "Bei der Suche am Anfang dürfen Sie nur einen Suchbegriff eingeben.", vbInformation, "Kann nicht ausführen..."
Exit Sub
End If
'Suchstring für Anfangssuche vorbereiten
Suchstring = " WHERE Titel LIKE '" & varSuchteile(0) & "%'"
Else
'Suchstring initialisieren
Suchstring = " WHERE Titel LIKE '%"
'Schleife zum Abarbeiten der Suchbegriffe
For Zähler = 0 To UBound(varSuchteile)
Suchstring = Suchstring & varSuchteile(Zähler) & "%'"
'Wenn es weitere Suchbergriffe gibt: AND anhängen
If Zähler < UBound(varSuchteile) Then
Suchstring = Suchstring & " AND Titel LIKE '%"
End If
Next Zähler
End If
'Original-SQL-Anweisung kopieren
pSQL = xSQL
=> Welche Funktion/Inhalt hat xSQL, wird eventuell nicht benötigt, da nicht deklariert.
pSQL = pSQL & Suchstring
'Altes Recordset schließen
(1) rs.Close
'Neues Recordset öffnen
rs.Open pSQL, Conn, adOpenDynamic, adLockOptimistic, adCmdText
=> Diesen Zeilen
'Recordset dem Formular wieder zuweisen
Set Me.Recordset = rs
GrößenSummieren
=> durch diese anpassen/integrieren
With rs
If Not .BOF Then
Do While Not .EOF
Dein Funktionsaufruf
.MoveNext
Loop
End If
.Close
End With
set rs = nothing