Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: datekk am Juli 30, 2015, 11:52:08

Titel: Berichtsgruppierung dynamisch ändern
Beitrag von: datekk am Juli 30, 2015, 11:52:08
Hi. Ich habe einen Bericht, bei welchem ich aber bei gewissen Anlässen die Gruppierungsordnung ändern möchte. Ich möchte dafür kein neues Formular anlegen.

Ich möchte z.B. Gruppenkopf 5 mit Gruppenkopf 4 tauschen. Dabei sollen aber die Inhalte in der jeweiligen Ebene gleich bleiben. Es gibt ja den Befehl Me.Grouplevel(x).Controlsource = "xxx"

Wenn ich diesen nutze, ändert sich bei mir aber nichts. Eventuell gehe ich das auch falsch an. Kann jemand helfen?
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: MaggieMay am Juli 30, 2015, 12:32:12
Hi,

grundsätzlich ist das möglich, zeig doch mal wie und wo du das machst.
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: datekk am Juli 30, 2015, 13:15:37
Private Sub Report_Open(Cancel As Integer)

'// Wenn ein ANGEBOT gewählt wird:
If Me.OpenArgs = "Angebot" Then


    Select Case Forms!frm_Angebotsdruck_Optionen!Formatwahl
   
        Case "normal":
       
       
        Case "nach Format":
        Me.GroupLevel(7).ControlSource = "Format"
        Me.GroupLevel(8).ControlSource = "Ausgabe"
             
   End Select
     
   
End If

End Sub


Das zweite ist Grouplevel 8. Das Forum baut da einen Smily ein  ;D
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: MaggieMay am Juli 30, 2015, 16:53:16
Wird der Code durchlaufen, hast du ihn mal im Unterbrechungsmodus getestet?
Die Gruppenköpfe 7 und 8 (so viele?!) existieren?
ZitatDabei sollen aber die Inhalte in der jeweiligen Ebene gleich bleiben.
Macht das denn auch Sinn?

Vielleicht beschreibst du den Berichtsaufbau mal ausführlicher oder zeigst einen aussagefähigen Screenshot vom Entwurf?
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: datekk am Juli 30, 2015, 20:08:48
Hi, es würde Sinn machen, wenn es funktioniert :)

Der Code wird auch ausgeführt, dass hab ich mit MsgBox getestet.
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: MaggieMay am Juli 30, 2015, 20:56:23
Wenn die Gruppenbereiche Daten anzeigen, so kann man doch nicht beliebig das zu gruppierende Datenfeld ändern, das leuchtet mir irgendwie nicht ein. Ich habe das schonmal eingesetzt, um lediglich die Sortierung zu ändern, der Listenaufbau wurde dadurch nicht berührt.

Beschreibe doch bitte den Aufbau des Berichts noch etwas ausführlicher - oder lade eine Beispiel-DB hoch.
Titel: Re: Berichtsgruppierung dynamisch ändern
Beitrag von: datekk am Juli 31, 2015, 14:19:44
So, habe es selbst hinbekommen. Problem war, dass es in der Struktur noch eine Gruppierung gab, welche ich übersehen hatte. Ich habe dann den kompletten "Baum" VBA technisch abgebildet und konnte somit die Stuktur des Berichts meinen jeweiligen wünschen anpassen:

Select Case Forms!frm_Angebotsdruck_Optionen!Formatwahl
   
        Case "normal":
       
        Me.GroupLevel(0).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(1).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(2).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(3).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(4).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(5).ControlSource = "Ausgabe"
        Me.GroupLevel(6).ControlSource = "Ausgabe"
        Me.GroupLevel(7).ControlSource = "Ausgabe"
        Me.GroupLevel(8).ControlSource = "Ausgabe"
        Me.GroupLevel(9).ControlSource = "Ausgabe"
               
       
        Case "nach Format":

        Me.GroupLevel(0).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(1).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(2).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(3).ControlSource = "AngebotAuftrag_ID"
        Me.GroupLevel(4).ControlSource = "Format"
        Me.GroupLevel(5).ControlSource = "Format"
        Me.GroupLevel(6).ControlSource = "Format"
        Me.GroupLevel(7).ControlSource = "Format"
        Me.GroupLevel(8).ControlSource = "Ausgabe"
        Me.GroupLevel(9).ControlSource = "Ausgabe"
       
       
   End Select


Das ganze hat den Hintergrund, dass in meinem Anwendungsfall die Berichte für Angebote und Aufträge fast identisch sind. Ich brauche nur je nach Angebot oder Auftrag verschiedene Textblöcke und ab und an auch eine andere Gruppierung. Die Gruppenköpfe und Gruppenfüße habe ich dann einfach von 0-9 durchnummeriert, um nicht durcheinander zu kommen. Je nach Bedarf schalte ich die einzelnen Textblöcke ein. Manche sind dabei grundlegend eingeschaltet, manche richten sich nach gewissen Angaben im Detailsbereich.

z.B.:

Select Case Me.OpenArgs

    Case "Angebot":
   
        '//Grundeinstellungen
   
       
        If Forms!frm_Angebotsdruck_Optionen!Formatwahl = "normal" Then
        Me.Gruppenkopf1.Visible = True
        Me.Gruppenkopf3.Visible = True
        Me.Gruppenkopf4.Visible = True
        Me.Gruppenfuß0.Visible = True
           
            End If
           
        If Forms!frm_Angebotsdruck_Optionen!Formatwahl = "nach Format" Then

        Me.Gruppenkopf1.Visible = True
        Me.Gruppenkopf3.Visible = True
        Me.Gruppenkopf6.Visible = True
        Me.Gruppenkopf7.Visible = True
        Me.Gruppenfuß6.Visible = True
        Me.Gruppenfuß0.Visible = True
        End If
           
    Case "Auftrag":
   
        '//Grundeinstellungen
   
        Me.Gruppenkopf1.Visible = True
        Me.Gruppenkopf2.Visible = True
        Me.Gruppenkopf3.Visible = True
        Me.Gruppenkopf4.Visible = True
        Me.Gruppenfuß4.Visible = True
        Me.Gruppenfuß1.Visible = True
       
       
    End Select
   


Dadurch kann ich bisher 5 verschiedene Berichte nun durch einen einzigen "SuperBericht" ersetzen. Änderungen z.B. im Seitenkopf brauche ich dann z.B. nur noch einmal statt 5 mal zu tätigen.