jhaustein
Goto Top

Access Abfrage kommt nicht zum nächsten Dastensatz

Hallo Gemeinschaft,

könnt ihr mir bitte helfen - bei dem loop einer Abfrage komme ich nicht zum nächsten DS

Private Sub Muellsystem_Click()
Dim strSQL As String
Dim wert

Dim DB As dao.Database
Dim rs As dao.Recordset
Dim strDatei As String, strWhere As String
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim Betreff As String: Betreff = "Ihr Monatlicher Bericht"  
Dim Nachricht As String, an As String, ATT1
Dim oApp As New Outlook.Application
Dim oEmail As Outlook.MailItem
Dim fileName As String, todayDate As String
   
   
ATT1 = "S:\test1.csv"  
 'exportincsv  
HöchsterWert = DMax("RGNummer", "Rechnungsnummern")  
umeinserhöhenhöchsterwert:
HöchsterWert = HöchsterWert + 1

    Set DB = CurrentDb
    strSQL = "SELECT * FROM Müllsystem"  
    Set rs = DB.OpenRecordset(strSQL, dbOpenDynaset)
    Do Until rs.EOF
    
  Set objOutlook = CreateObject("Outlook.Application")  
  Set objOutlookMsg = objOutlook.CreateItem(0)
  
   strDatei = "S:\ausgangsrechnung\" & HöchsterWert & ".pdf"  
        Anrede = rs.Fields("Anrede")  
        mailadresse = rs.Fields("Email").Value  
        Vorname = rs.Fields("Vorname").Value  
        NameE = rs.Fields("Name").Value  
        Strasse = rs.Fields("Straße").Value  
        Postleitzahl = rs.Fields("Postleitzahl").Value  
        Ort = rs.Fields("Ort").Value  
        Objekt1 = rs.Fields("Eigentümer.Objekt-Nr").Value  
        Verwaltung = rs.Fields("Verwaltung").Value  
        
        
     
        strWhere = strSQL & " WHERE [Eigentümer.Objekt-Nr] = '" & rs![Eigentümer.Objekt-Nr] & "' "  
        DoCmd.OpenReport "Müllsystem", acViewDesign  
        Reports![Müllsystem].RecordSource = strWhere
        DoCmd.OpenReport "Müllsystem", acViewPreview, , strWhere, acWindowNormal  
        DoCmd.OutputTo acOutputReport, "Müllsystem", acFormatPDF, strDatei, False  


Set DBG = CurrentDb()


Set rsg = DBG.OpenRecordset("Rechnungsnummern", dbOpenDynaset)  
 
    rsg.AddNew
        rsg!RGNummer = HöchsterWert
        rsg!Objektnummer = Objekt1
        
       
    rsg.Update
rsg.Close

DBG.Close
      

    Loop
    rs.Close
    'rs.Update  
    Set rs = Nothing

    Set DB = Nothing

End Sub

Content-Key: 6096442328

Url: https://administrator.de/contentid/6096442328

Printed on: April 28, 2024 at 04:04 o'clock

Member: SlainteMhath
SlainteMhath Feb 23, 2023 at 08:10:09 (UTC)
Goto Top
Moin,

keine Ahnung was das genau bedeuten soll, aber versuch mal ein
rs.movelast
rs.movefirst
einzubauen nach dem das RecordSet geöffnet wurde.

lg,
Slainte
Member: jhaustein
jhaustein Feb 23, 2023 at 08:12:32 (UTC)
Goto Top
keine Änderung - bleibt immer beim ersten Datensatz
Member: SlainteMhath
Solution SlainteMhath Feb 23, 2023 at 08:21:58 (UTC)
Goto Top
rs.movenext ist dein Freund :D
Mitglied: 6017814589
6017814589 Feb 23, 2023 updated at 09:00:14 (UTC)
Goto Top
Muellsystem_Click()
Click, "muellrausbring" ...click, "explorer, db löschen" ...click
Set objOutlook = CreateObject("Outlook.Application")
Und das innerhalb der Schleife, autsch 😂, der Bus in Richtung Hölle wird dich in den nächsten Minuten abholen 😈, umsteigen überflüssig.
Des weiteren erhöhst du den Zähler bei jedem Durchlauf nicht, wird also alles immer in die selbe Datei ausgegeben, und die Outlook Nachricht nutzt du übrigens auch nicht, also ziemliches Durcheinander, da ist der Name Programm.
Member: SlainteMhath
SlainteMhath Feb 23, 2023 at 09:03:09 (UTC)
Goto Top
der Bus in Richtung Hölle wird dich in den nächsten Minuten abholen
Schon alleine wegen fehlender Transaktionssteuerung und Fehlerbehandlung bei Code der Rechnungen "schreibt" face-smile
Member: jhaustein
jhaustein Feb 23, 2023 at 09:13:22 (UTC)
Goto Top
@ SlainteMhath - lieben dank ->klappt
@6017814589 - wie würdest du es denn machen - die einzelnen mails zu versenden
Mitglied: 6017814589
6017814589 Feb 23, 2023 updated at 09:27:22 (UTC)
Goto Top
Naja als erstes mal das Erstellen des Outlook Objektes aus der Schleife raus werfen, das muss nicht für jeden Datensatz neu erstellt werden, es reicht wenn man das einmalig zu Beginn erstellt, so baust du dir nämlich ein schönes Memory-Leak.
Sieht für mich alles nach kreuz und query durchs Web per Copy n Paste zusammenkopierter Code aus ohne sich mal eingehender damit zu beschäftigen.
Denke ein VBA-Kurs wäre wohl am Ende nachhaltiger https://www.vba-tutorial.de/
Vor allem für die Firma die offensichtlich dahinter steht 🙃. Mein Beileid übrigens.

Und wech ... 🐟