DBA06B Hilfe

  • HI Leute, könnte mir jemand bei DBA06B Aufgabe 6 Helfen bekomme den Code nicht hin,Es geht darum, eine Routine zu schreiben, die Fehler bei "Nichts gefunden" abfängt. Hier zur Sicherheit der Code. Danke euch.

    Bekomme aber entweder die "BOF/EOF Fehlermeldung

  • 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

  • Danke für deine Hilfe, steh aber voll auf dem Schlauch, wenn du mir weiter helfen könntest, wäre ich dir dankbar. kann dir die aufgabe auch per E-Mail schicken

  • Pack die Aufgabe in ein ZIP und eventuell weitere Infos und lade diese hier hoch. Dann kann ich mir die runterladen.
    So kannst Du auch Access DB oder andere Dateitypen hier zur Verfügung stellen

    Gruß
    hape

  • Anderer PC, keine Fehlermeldung und der Script funktioniert.

    Also der Fehler passiert, wenn die Abfrage ausgeführt wird.
    Wenn Du nur nach ABBA suchst, werden alle DS mit ABBA aufgelistet.
    Wenn Du z. B. nach ABBA JOHN suchst, wird er das nicht finden.

    Hier kann man nun mit dem Error-Objekt den Fehler abfangen.

    'Neues Recordset öffnen
    On Error GoTo Err
    'Bei Fehler gehe direkt zu der Sprungmarke "Err:". Die Befehle dazwischen werden nicht ausgeführt.

    rs.Open pSQL, Conn, adOpenDynamic, adLockOptimistic, adCmdText

    'Recordset dem Formular wieder zuweisen
    Set Me.Recordset = rs

    GrößenSummieren
    Exit Sub

    Err:
    If MsgBox("Keine Daten vorhanden!", vbOKOnly, "Suche fehlerhaft") = vbOK Then Exit Sub
    'Nach OK wird die Routine abgebrochen und alle DS angezeigt und es kann weitergesucht werden.

    Gruß
    hape