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. 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. 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. Herzlichen Dank für Deine rasche Antwort, hat natürlich sofort funktioniert
     
    Herbert2241, 19. Juni 2021
    #5
  6. 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. 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. 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, 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 Abfrage mit Mittelwert wenn

    in Microsoft Access Hilfe
    Access Abfrage mit Mittelwert wenn: Hallo Miteinander Ich bräuchte mal euer Schwarwissen. Ich habe in der Abfrage ein berechnendes Feld: Teilnehmer:...
  3. Access FE kann nicht in Sharepoint List schreiben

    in Microsoft Access Hilfe
    Access FE kann nicht in Sharepoint List schreiben: Hallo beisammen, ich habe ein Backend in die Sharepoint Lists geschoben, weil ich von verschiedenen Rechnern - perspektivisch auch mit mehreren Benutzern - auf die Daten zugreifen will....
  4. Berechnung mit Bedingung

    in Microsoft Access Hilfe
    Berechnung mit Bedingung: Hallo zusammen, ich habe folgendes Frage, zu der ich keine Lösung finde. Vielleicht suche ich auch falsch. Also, ich möchte eine Datenbank für mein Flugbuch erstellen. Tabellen mit allen Feldern,...
  5. Access to SQL Server

    in Microsoft Access Hilfe
    Access to SQL Server: Hallo, ich bin aktuell mit der Aufgabe beschäftigt eine Access Datenbank in SQL zu migrieren. Soweit so gut. Da es aber eine Übergangszeit geben wird, wird ein Nächtlicher Datenbankabgleich...
  6. MS ACCESS Insert into Foto in Datenbank

    in Microsoft Access Hilfe
    MS ACCESS Insert into Foto in Datenbank: Hallo. Ich benutze MS ACCESS im Office 365. Habe eine Anwendung geschrieben, in der in einem Formular ein Foto im Typ Bild dargestellt wird. Ich möchte nun dieses Foto mittels einem "Insert...
  7. Bestimmtes Attachment laden.

    in Microsoft Access Hilfe
    Bestimmtes Attachment laden.: Hallo zusammen. Ich bin leider ein Anfänger in Access und benötige eure Hilfe. Und zwar ich hab eine Tabelle mit mehreren Attachment in einem Feld. Ich möchte jetzt einen Bericht erstellen, wo...
  8. Access Bedingte Formatierung mit Datum

    in Microsoft Access Hilfe
    Access Bedingte Formatierung mit Datum: Hallo liebe Fachleute, als erstes muss ich sagen, dass ich noch Anfänger im Access bin. Hier nun mein Problem: Ich habe ein Formular mit einem Textfeld das als Datumsfeld fungiert. Dieses Datum...
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