Study-Board.de
  1. Suche
  2. Startseite
    1. Deals
      1. Social Deals
      2. Amazon Deals
      3. Prime Angebote
  3. Forum
    1. Dashboard
    2. Unerledigte Themen
    3. Datenbanken
    4. Gamification
    5. Umfragen
  4. Tippspiel
    1. Rangliste
    2. Tippgemeinschaften
    3. Tipper-Übersicht
    4. Meine Statistik
    5. Hall of Fame
    6. WM-Wertung
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Forum
  • Artikel
  • Seiten
  • Termine
  • Galerie
  • wcf.search.type.de.flexiblelist.wsc.entry
  • wcf.search.type.com.amp.advancedpoll.search
  • Erweiterte Suche
  1. Study-Board.de
  2. Forum
  3. Beruf, Weiterbildung & Fernstudium
  4. Einsendeaufgaben

DBA06B Hilfe

  • BettieZ
  • 17. April 2013 um 11:36
  • Erledigt
  • BettieZ
    Anfänger
    Beiträge
    8
    • 17. April 2013 um 11:36
    • #1

    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.

    Code
    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, " ")
         '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
         pSQL = pSQL & Suchstring
    
        'Altes Recordset schließen
        rs.Close
    
        'Neues Recordset öffnen
        rs.Open pSQL, Conn, adOpenDynamic, adLockOptimistic, adCmdText
    
        'Recordset dem Formular wieder zuweisen
        Set Me.Recordset = rs
    
        GrößenSummieren
    
    
     End Sub
    Alles anzeigen

    Bekomme aber entweder die "BOF/EOF Fehlermeldung

  • HaPe
    Profi
    Reaktionen
    52
    Trophäen
    3
    Beiträge
    884
    • 18. April 2013 um 07:10
    • #2

    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

  • BettieZ
    Anfänger
    Beiträge
    8
    • 18. April 2013 um 14:43
    • #3

    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

  • HaPe
    Profi
    Reaktionen
    52
    Trophäen
    3
    Beiträge
    884
    • 19. April 2013 um 07:24
    • #4

    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

  • BettieZ
    Anfänger
    Beiträge
    8
    • 19. April 2013 um 11:11
    • #5

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Hier die Dateien, müsste einige löschen da sie zu groß war

    [ATTACH=CONFIG]1051[/ATTACH]

    Dateien

    Aufgabe.jpg 81,51 kB – 0 Downloads
  • HaPe
    Profi
    Reaktionen
    52
    Trophäen
    3
    Beiträge
    884
    • 22. April 2013 um 07:26
    • #6

    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

  1. Tutor Lv. 5 2.624 XP
  2. admin Lv. 2 150 XP
  3. cklawitter Lv. 1 30 XP
  4. 4
    sieger81 Lv. 1 10 XP
Vollständige Bestenliste
  1. Dealfuchs.info
  2. Impressum
    1. Datenschutzerklärung
    2. Verhaltenskodex
      1. Learn to Post
  3. Mediadaten
  4. Study-Talk.de - Rabatte nicht nur für Studenten
  5. Kontakt
Community-Software: WoltLab Suite™