Office: (Office 2019) Access For next Schleife

Helfe beim Thema Access For next Schleife in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Ich habe in einer Tabelle meine Spieler mit einer Spielernummer enthalten. Jeder Spieler hat als Bericht ein "Stammblatt", welches mit der... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Herbert2241, 18. Mai 2021.

  1. Herbert2241 Erfahrener User

    Access For next Schleife


    Ich habe in einer Tabelle meine Spieler mit einer Spielernummer enthalten. Jeder Spieler hat als Bericht ein "Stammblatt", welches mit der Spielernummer aufgerufen wird.
    Ich möchte jetzt gerne alle Stammblätter automatisch mittels "For next" schleife in ein PDF format exportieren.
    Ein einzelnes Stammblatt exportieren funktioniert über nachstehende Anweisung, über welche ich auch den Pfad vorgebe direkt aus dem Bericht.
    Wie muss die Anweisung aussehen, damit alle Stammbätter auf einmal automatisch
    exportiert werden können (etwa 60 Stammblätter)????

    Dim Exportpfad1 As String
    Exportpfad1 = DLookup("[Pfad1]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    Dim Exportpfad2 As String
    Exportpfad2 = DLookup("[Pfad2]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    Dim Exportpfad3 As String
    Exportpfad3 = DLookup("[Pfad3]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    Dim strPfad1 As String
    strPfad1 = ([Forms]![Spielerstammdaten].SPN)
    Dim Berichtsname As String
    Berichtsname = DLookup("[Bemerkung]", "T_Exportpfade_allgStD", "[ID] =" & 3)

    'Sollte dieser Pfad nicht vorhanden sein, wird er automatisch angelegt, andernfalls wird zu diesem Pfad gewechselt'

    If Dir(Exportpfad1, vbDirectory) <> "" Then
    Shell "explorer.exe """ & Exportpfad1 & """", vbNormalFocus
    Else
    MkDir Exportpfad1
    Shell "explorer.exe """ & Exportpfad1 & """", vbNormalFocus
    End If
    ChDir Exportpfad1
    If Dir(Exportpfad2, vbDirectory) <> "" Then
    Shell "explorer.exe """ & Exportpfad2 & """", vbNormalFocus
    Else
    MkDir Exportpfad2
    Shell "explorer.exe """ & Exportpfad2 & """", vbNormalFocus
    End If
    ChDir Exportpfad2

    If Dir(Exportpfad3, vbDirectory) <> "" Then
    Shell "explorer.exe """ & Exportpfad3 & """", vbNormalFocus
    Else
    MkDir Exportpfad3
    Shell "explorer.exe """ & Exportpfad3 & """", vbNormalFocus
    End If
    ChDir Exportpfad3

    If Dir(strPfad1, vbDirectory) <> "" Then
    Shell "explorer.exe """ & strPfad1 & """", vbNormalFocus
    Else
    MkDir strPfad1
    Shell "explorer.exe """ & strPfad1 & """", vbNormalFocus
    End If
    ChDir strPfad1

    'Dann wird der Bericht in den angegebenen Pfad im Format PDF und der angeführten Bezeichnung exportiert

    DoCmd.OutputTo acOutputReport, "Ber_Spielerstammblatt", acFormatPDF, Berichtsname
    DoCmd.Close acReport, "Ber_Spielerstammblatt"
    DoCmd.OpenForm "Stammdatenauswahl", acNormal
    End Sub
    Unter "Pfad1" wird der Spielername als eigener Order erstellt und das Stammblatt in diesen
    Ordner exportiert.
    Für Hilfe wäre ich sehr dankbar
     
    Herbert2241, 18. Mai 2021
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    ich bin mir nicht sicher, ob in deinem Posting alle wesentlichen Informationen enthalten sind.

    Ich habe daher angenommen, dass die Spielerinfomationen, die für die PDF-Ausgabe des Berichtes "Ber_Spielerstammblatt" benötigt werden, in der Tabelle "T_Exportpfad_allgStD" enthalten sind.
    Diese Tabelle wird nämlich von meinem (modifizierten) Makro geöffnet und Satz für Satz durchlaufen.
    In jedem Satz dieser Tabelle wird mit Hilfe der 4 Felder "Pfad1", "Pfad2", "Pfad3" und "Bemerkung" der vorgenannte Bericht ein ein PDF-Format konvertiert und gespeichert.

    Insbesondere habe ich große Bedenken bei der Variablen "strPfad1", deren Inhalt aus einem Formular namens "Spielerstammdaten.SPN" entnommen werden. Dieses Formular unterliegt natürlich nicht der Schleifen-Satz-Steuerung und somit fix für alle Datensätze innerhalb der Schleife.

    Was die 4 MkDir/Shell/ChDir-Aufrufe im Einzelnen bewirken sollen, weiß ich nicht. Oder ob sie besser außerhalb der DO-LOOP-Schleife zu platzieren wären? Ich habe sie vereinfacht, sodass noch immer das Gleiche durch sie ausgeführt wird, aber einfacher.
    Der SUB habe ich den Namen "Ausgabe" gegeben - denn ein solcher SUB-Anfang lag ebenfalls nicht vor.

    Code:
    Sub Ausgabe()
       Dim dbs As DAO.Database, Rst As DAO.Recordset
       Dim tabName As String
       Dim ExportPfad1 As String, ExportPfad2 As String, ExportPfad3 As String
       Dim Berichtsname As String, strPfad1 As String
      
      
       tabName = "T_Exportpfade_allgStD"
      
       'In dbs soll ein Zeiger auf die aktuelle DAO-Datenbank gespeichert werden:
       Set dbs = CurrentDb
      
       'Aus dbs soll eine Tabelle (namens tabName) als Recordset geöffnet werden
       Set Rst = dbs.OpenRecordset(tabName, dbOpenTable)
      
       'Bewege Rst zum ersten Datensatz der Tabelle
       Rst.MoveFirst
      
       'Führe folgende Do-Loop-Schleife solange aus, bis Rst hinter das Ende der Datensätze der Tabelle zeigt
       '(Dann ist Rst.EOF = True und die Schleife wird verlassen):
       Do Until Rst.EOF
          ExportPfad1 = Rst!Pfad1
          ExportPfad2 = Rst!Pfad2
          ExportPfad3 = Rst!Pfad3
          Berichtsname = Rst!Bemerkung
        
         'Heißt das, dass die Spieler-Nummer gar nicht in Tabelle "T_Exportpfad_allgStD" enthalten ist ?
         'Was ist das für ein ID-Feld in "[ID]=3" aus "T_Exportpfad_allgStD" ??
          strPfad1 = Forms!Spielerstammdaten.SPN    '????
        
        
    '      Dim ExportPfad1 As String
    '      ExportPfad1 = DLookup("[Pfad1]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    '      Dim ExportPfad2 As String
    '      ExportPfad2 = DLookup("[Pfad2]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    '      Dim ExportPfad3 As String
    '      ExportPfad3 = DLookup("[Pfad3]", "T_Exportpfade_allgStD", "[ID] =" & 3)
    '      Dim strPfad1 As String
    '      strPfad1 = ([Forms]![Spielerstammdaten].SPN)
    '      Dim Berichtsname As String
    '      Berichtsname = DLookup("[Bemerkung]", "T_Exportpfade_allgStD", "[ID] =" & 3)
        
          'Sollte dieser Pfad nicht vorhanden sein, wird er automatisch angelegt, andernfalls wird zu diesem Pfad gewechselt'
        
         '1) Wie weit die wiederholte Ausführung der folgenden MkDir-Anweisungen in der Spieler-Schleife nötig ist, weiß ich nicht
         '2) Was die folgenden Explorer-Aufrufe und die anschließenden ChDir-Anweisungen bewirken sollen, weiß ich nicht!!!
         '3) Wo werden diese 4 Pfad-Variablen (ExportPfad1,ExportPfad2,ExportPfad3,strPfad1) überhaupt verwendet ?
        
          If Len(Dir(ExportPfad1, vbDirectory)) = 0 Then MkDir ExportPfad1
          Shell "explorer.exe """ & ExportPfad1 & """", vbNormalFocus
          ChDir ExportPfad1
        
          If Len(Dir(ExportPfad2, vbDirectory)) = 0 Then MkDir ExportPfad2
          Shell "explorer.exe """ & ExportPfad2 & """", vbNormalFocus
          ChDir ExportPfad2
        
          If Len(Dir(ExportPfad3, vbDirectory)) = 0 Then MkDir ExportPfad3
          Shell "explorer.exe """ & ExportPfad3 & """", vbNormalFocus
          ChDir ExportPfad3
        
          If Len(Dir(strPfad1, vbDirectory)) = 0 Then MkDir strPfad1
          Shell "explorer.exe """ & strPfad1 & """", vbNormalFocus
          ChDir strPfad1
        
          'Dann wird der Bericht in den angegebenen Pfad im Format PDF und der angeführten Bezeichnung exportiert
        
          DoCmd.OutputTo acOutputReport, "Ber_Spielerstammblatt", acFormatPDF, Berichtsname
          DoCmd.Close acReport, "Ber_Spielerstammblatt"  '<-- Was bewirkt das Schließen des nicht geöffneten Berichtes?
        
          'Bewege Rst zum nächsten Datensatz
          Rst.MoveNext
       Loop
      
      'Schließen des Recordset der (Abfrage-)Tabelle
       Rst.Close
      
       DoCmd.OpenForm "Stammdatenauswahl", acNormal
      
    End Sub
    
     
    Exl121150, 24. Mai 2021
    #2
  3. Herbert2241 Erfahrener User
    Danke Anton, habe das bereits umsetzen können.
    Hätte aber jetzt eine andere Frage:
    Ich habe in einem Bericht die Ergebnisse von Spielern nach deren Höhe absteigend sortiert. Das Funktioniert auch
    problemlos. Jetzt möchte ich aber als erstes Feld in diesem Datensatz den Rang anzeigen, z.B. 1., 2. usw.
    Das hat in früheren Versionen von Access durch ein eigenes Feld funktioniert, in welchen als Steuerelementinhalt " = 1"
    anzugeben war. Meine derzeitige Version von Access ist 2019, dort funktioniert dies aber nicht. Hast Du eine Idee ??
    Danke bereits im Voraus
     
    Herbert2241, 17. Juni 2021
    #3
  4. Exl121150 Erfahrener User

    Access For next Schleife

    Hallo,

    du möchtest also eine fortlaufende Nummerierung der anzuzeigenden Sätze im Bericht erzielen. Das ist nach wie vor möglich, genauso wie du es geschildert hast. Du hast sicherlich im Eigenschaftenblatt (Tabulator "Daten") des Textfeldes, mit welchem du die Nummerierung durchführen möchtest, als Steuerelementinhalt =1 eingegeben. In der übernächsten Zeile gibt es die Eigenschaft "Laufende Summe". Dort musst du statt "nein" entweder "Über alles" oder "Über Gruppe" auswählen, je nachdem du die Nummerierung über den ganzen Bericht haben möchtest oder jeweils innerhalb eines Berichtsgruppenbereichs.

    Wie du am folgenden Beispielbericht sehen kannst, habe ich im Detailbereich 2 Kumulierungen eingebaut:
    1) In der Spalte "Fortlauf.Nr" die soeben geschilderten Einstellungen mit "Laufender Summe" = "Über alles"
    Access For next Schleife upload_2021-6-18_10-42-18.png Access For next Schleife upload_2021-6-18_10-43-21.png
    2) In der Spalte "Kum.Zählerstand" habe ich als "Steuerelementinhalt" das Tabellenfeld "Zaehlerstand" genommen und als "Laufende Summe" den Wert "Über alles", weil ich in diesem Simplexbeispiel keine Gruppenbereiche verwende.

    Access For next Schleife upload_2021-6-18_10-39-36.png
     
    Exl121150, 18. Juni 2021
    #4
  5. Herbert2241 Erfahrener User
    Herzlichen Dank für Deine rasche Antwort, hat natürlich sofort funktioniert
     
    Herbert2241, 19. Juni 2021
    #5
  6. Herbert2241 Erfahrener User
    Hallo Anton
    Nachdem Du bisher der einzige warst, der mir helfen konnte, frage ich zuerst Dich.
    Ich verwende Access 2019 und habe hier ein Säulendiagramm erstellt, welches in den Werten auf eine bestimmte Spalte einer
    Abfrage zugreift (6 oder bis zu 8 Datensätzen). Das funktioniert auch einwandfrei. Nur werden die einzelnen Säulen in der gleichen Farbe dargestellt. Ich hätte aber gerne unterschiedliche Farben. Weisst Du vielleicht die Lösung ???
    Vielen Dank
     
    Herbert2241, 21. Juni 2021
    #6
  7. Exl121150 Erfahrener User
    Hallo,

    ich gehe wieder aus von meinem Simplexbeispiel im Posting #4 vom 18.6.2021:
    Ich habe folgende Tabelle:
    Access For next Schleife upload_2021-6-22_14-48-34.png Access For next Schleife upload_2021-6-22_14-30-47.png
    Auf Basis dieser Tabelle erzeuge ich ein (gruppiertes) Säulendiagramm:
    Menüband > Tabulator "Erstellen" > Gruppe "Formulare" > Button "Formularentwurf"
    Menüband > Tabulator "Entwurf" > Gruppe "Steuerelemente" > DropDown-Button "Modernes Diagramm einfügen" > Befehl "Spalte" > Befehl "Gruppierte Säulen" (siehe Grafik rechts oberhalb).

    In den Diagrammeinstellungen mache ich folgende Einstellungen, womit ich folgendes Säulendiagramm erhalte:
    Access For next Schleife upload_2021-6-22_14-37-22.png Access For next Schleife upload_2021-6-22_14-38-40.png
    Ändere ich diese Einstellungen wie folgt, erhalte ich folgendes Säulendiagramm mit verschieden färbigen Säulen:
    Access For next Schleife upload_2021-6-22_14-44-9.png Access For next Schleife upload_2021-6-22_14-44-51.png
     
    Exl121150, 22. Juni 2021
    #7
  8. Herbert2241 Erfahrener User

    Access For next Schleife

    Danke Anton, hat soweit funktioniert. Wenn Du mir noch folgendes sagen könntest:
    Das ganze ist ja jetzt ein Formular und dieses Formular möchte ich per VBA exportieren. Das geht aber offensichtlich nicht,
    weil nur der Befehl "OutputTo acOutputReport" vorhanden ist und damit aber scheinbar nur Berichte exportiert werden können.
    Ich hatte das ganze schon als Bericht erstellt, kann dort aber nicht die Farben verändern.
     
    Herbert2241, 22. Juni 2021
    #8
  9. Exl121150 Erfahrener User
    Hallo,

    das kann ich leider überhaupt nicht bestätigen:
    Access For next Schleife upload_2021-6-22_19-44-17.png Access For next Schleife upload_2021-6-22_19-45-0.png
     
    Exl121150, 22. Juni 2021
    #9
  10. Herbert2241 Erfahrener User
    Halle Anton
    Habe nur zuwenig probiert. Kann jetzt auch die Balkenfarben unterschiedlich darstellen.Habe aber jetzt noch eine Frage:
    Kann man in Access auch die Balkenbreite oder Säulenbreite ändern (breiter machen) ?? In Excel kann man das offenbar.
    Danke nochmals für deine excellente Hilfe
     
    Herbert2241, 27. Juni 2021
    #10
  11. Herbert2241 Erfahrener User
     
    Herbert2241, 27. Juni 2021
    #11
Thema:

Access For next Schleife

Die Seite wird geladen...
  1. Access For next Schleife - Similar Threads - Access For next

  2. Access Datensatzzähler zu kurz

    in Microsoft Access Hilfe
    Access Datensatzzähler zu kurz: Die Ansicht der Nummer des Datensatzes ist zu kurz (vgl. Anlage). Wie kann ich die etwas breiter machen?[ATTACH]Im angezeigten Fall ist es nicht der 1 von 208 Sätzen, sondern der 1 von 20800.
  3. Installationsfehler OFFICE 2019 ?

    in Microsoft Access Hilfe
    Installationsfehler OFFICE 2019 ?: Hallo Zusammen ! Ich bin neu hier und möchte in ein ACCESS 2019 Formular VBA-Code einbauen. Der Code soll mittels DAO.Recordset usw. Daten bearbeiten. Leider wird mir beim Schreiben das Objekt...
  4. MS Access Formular: Datensatz duplizieren mit Unterformularen

    in Microsoft Access Hilfe
    MS Access Formular: Datensatz duplizieren mit Unterformularen: Hallo Ihr Lieben, ich bin ziemliche Anfängerin bei MS Access also nehmt es mir nicht übel, wenn ich Dinge falsch bezeichne etc. :) Ausganslage Ich hab ein Hauptformular (1) (Angaben zur...
  5. Import Daten aus Access Abfrage klappt nicht

    in Microsoft Excel Hilfe
    Import Daten aus Access Abfrage klappt nicht: Moin, ich habe ein Problem. Ich habe eine Datenbank in Access mit diversen Tabellen und Abfragen. Jetzt habe ich eine neue Abfrage erstellt und muß das Ergebnis täglich in eine Exceldatei...
  6. Auslesen Windowsbenutzer in einer Datenbank

    in Microsoft Access Hilfe
    Auslesen Windowsbenutzer in einer Datenbank: Hallo zusammen, wie kann ich auslesen, welcher Windows Benutzer gerade aktuell in einer Datenbank ist? Geht das? Danke Matthias
  7. Auslesen einer Abfrage in VBA Modul

    in Microsoft Access Hilfe
    Auslesen einer Abfrage in VBA Modul: Hallo zusammen, ich wünsche allen ein frohes und gesundes Jahr 2024. Ich habe eine alte Access 2003 und da habe ich zur Ermittlung von Planungsdaten folgende Funktion genutzt, jetzt mit Office 365...
  8. Zugriff aus Access-Datei (xx.accdb)

    in Microsoft Excel Hilfe
    Zugriff aus Access-Datei (xx.accdb): Guten Tag Mit Windows 10 und Excel 2021 Pro konnten mit unten stehendem Makro Daten an ein Access-DB übergeben werden. Mit Windows 11 und Excel 2021 Pro geht das nicht mehr. [ATTACH]...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden