Thema Datum  Von Nutzer Rating
Antwort
Rot Access: Laufzeitfehler 3709: Der Suchschlüssel...
18.09.2011 13:46:31 Luc
NotSolved
21.09.2011 06:46:53 Dirk Mika
Solved
22.09.2011 08:29:32 Gast69800
Solved

Ansicht des Beitrags:
Von:
Luc
Datum:
18.09.2011 13:46:31
Views:
5563
Rating: Antwort:
  Ja
Thema:
Access: Laufzeitfehler 3709: Der Suchschlüssel...

Hallo zusammen!

Ich bin mit meinem Latein am Ende und habe schon alle Beschreibungen zu diesem Fehler ausprobiert. Ziel der Access-Applikation ist, allen gespeicherten 1200 Usern eine Email zu schreiben mit einem PDF im Anhang (wird von einem Access-Report generiert).

Folgende Funktionselektiert alle User und startet den Hauptprozess:

Dim strSQL As String
    Dim strCondition As String
    Dim strReportName As String
    Dim intMissingEmails As Integer
    Dim strPDFDest As String
    Dim strSubject As String
    Dim strDatum As Date
    Dim strCountRows As String
    
    '-- Destination für das temporäre PDF File
    strPDFDest = CurrentProject.path & "\reporttopdf\Profil_Check.pdf"
    
    strReportName = "ber-pma-einzelblatt-check"
    strSubject = "Your subject"
    strDatum = Date
    
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    
    Set db = CurrentDb
    
    '--- Alle aktiven User selektieren (rund 1200)
    strSQL = "SELECT [tab-pma].[PMA-NR], [tab-pma].Email, [tab-pma].NamePMA, [tab-pma].VornamePMA, [tab-pma].[PMA-Kat]" & _
        " From [tab-pma] " & _
        " WHERE ((([tab-pma].Email) Is Not Null) And (([tab-pma].[PMA-Kat]) = 1)) And ((([tab-pma].Email) <> '')) " & _
        " ORDER BY [tab-pma].[PMA-NR]"
    
    Set rs = db.OpenRecordset(strSQL)
    
    rs.MoveFirst

    Do While Not rs.EOF
    
        '--- Report löschen falls bereits vorhanden
        If FileExistsFSO(strPDFDest) Then
            Kill strPDFDest
        End If

        strCondition = " [PMA-NR] = " & rs![PMA-NR]

        Call SetReportFilter(strReportName, strCondition)

        '--- Report generieren, auskommentiert zum Testen
        'If (ConvertReportToPDF("ber-pma-einzelblatt-check", vbNullString, strPDFDest, False, False, 150, "", "", 0, 0, 0) = False) Then
        '    MsgBox "Failed to create PDF File. Please contact your administrator."
        '    Exit Sub
        'End If

        If (IsNull(rs![Email]) Or rs![Email] = "") Then
            intMissingEmails = intMissingEmails + 1
        Else
            '--- Email öffnen und versenden
            SendMailCheck "email@email.de", strSubject, strPDFDest, rs![NamePMA], rs![VornamePMA]
        End If
    
        rs.MoveNext

    Loop
    
    rs.Close

Diese Schleife funktioniert soweit. Das Problem liegt meiner Meinung nach in der Funktion SetReportFilter, dort geht der Debugger auch zur Zeile DoCmd.Save acREport, pReportName. 

Sub SetReportFilter(pReportName, pFilter)
    
    Dim rpt As Report
    
    DoCmd.OpenReport pReportName, acViewDesign
    Set rpt = Reports(pReportName)
    rpt.Filter = pFilter
    rpt.FilterOn = True
    
    DoCmd.Save acReport, pReportName
    DoCmd.Close acReport, pReportName
    
    Set rpt = Nothing
End Sub

Die Schleife wird abgearbeitet und funktioniert bis sich 461 Email im Postausgang befinden. Dann wird mit dem Fehler "Laufzeitfehler 3709: Der Suchschlüssel wurde in keinem Datensatz gefunden." abgebrochen, der Report bleibt offen. Ich habe die Datenbank bereits überprüft, neu importiert, komprimiert etc. Habe die Datensätze in diesem Bereich auch schon gelöscht, bricht immer nach 461 Emails ab. Sieht jemand den vielleicht offensichtlichen Fehler im Code, den ich nicht entdecken kann? Hatte jemand einmal ein ähnliches Problem?

Bin um jede Hilfe dankbar!!!

 

 

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Access: Laufzeitfehler 3709: Der Suchschlüssel...
18.09.2011 13:46:31 Luc
NotSolved
21.09.2011 06:46:53 Dirk Mika
Solved
22.09.2011 08:29:32 Gast69800
Solved