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. Verknüpfte Excel Tabelle in Access Tabelle

    in Microsoft Access Hilfe
    Verknüpfte Excel Tabelle in Access Tabelle: Moin zusammen! Ich bin noch recht neu in Access und stehe gerade vor einem Problem. Folgende Situation: Ich habe eine Excel-Tabelle mit ca. 500 Datensätzen und 7 Spalten. Die Daten aus dieser...
  3. Access Formular aktualisieren durch Dropdown-Liste

    in Microsoft Access Hilfe
    Access Formular aktualisieren durch Dropdown-Liste: Hallo, ich bin ein absoluter Neuling in Access, und bin gerade dabei aus dienstlichen Gründen ein Nachschlagewerk in Access zu erstellen. Ziel des im Screenshot angehängten Formulars soll es...
  4. Access Abfrage

    in Microsoft Access Hilfe
    Access Abfrage: Access Abfrage Note:Wenn([Prf-Stufe]FPr1 oder FPr2 oder FPr3 oder BGH1 oder BGH2 oder BGH3 oder IBGH1 oder IBGH2 oder IGBH3 oder FH1 oder FH2 oder IHF-V oder SPR1 oder SPR2 oder SPR3 oder UPR1oder...
  5. Import von XML-Dateien in Access

    in Microsoft Access Hilfe
    Import von XML-Dateien in Access: Hallo zusammen, ich möchte eine Menge von XML-Dateien in Access 2016 importieren und verwende dazu die Importfunktion für XML-Dateien unter Externe Daten im Menü. Die Dateien enthalten einige 100...
  6. Acces FrontEnd und MS SQL-Server als BackEnd

    in Microsoft Access Hilfe
    Acces FrontEnd und MS SQL-Server als BackEnd: Hallo zusammen, möchte MS access 2010 als FrontEnd und MS SQL-Server als Backend verwenden. Die Backend Tabellen sind bereits auf dem Server. Mit welchem VBA-Code sollte ich nun die MS...
  7. Öffnen einer bestimmten Seite einer pdf-Datei

    in Microsoft Access Hilfe
    Öffnen einer bestimmten Seite einer pdf-Datei: Hallo zusammen, ich möchte in einer Access365-Anwendung über die Taste F1 eine pdf-Datei (Benutzerhandbuch) öffnen und dort zu einer bestimmten Seite springen. Im Acrobat-Reader geht das auch...
  8. Listenfeld wird nicht immer gefüllt

    in Microsoft Access Hilfe
    Listenfeld wird nicht immer gefüllt: Hallo alle Kenner, in einer Datenbank sind die Werke verschiedener Komponisten mit ihren Werken erfasst. Über ein Kombinationsfeld werden z.B. die Kategorien ausgewählt und die entsprechen Werke...
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