Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: chainy24 am April 09, 2016, 13:21:11

Titel: dynamisches Gruppieren im Bericht
Beitrag von: chainy24 am April 09, 2016, 13:21:11
Hallo,
ich habe einen Bericht, der wahlweise nach Jahr/Monat/Woche gruppiert werden soll. Im Gruppenkopf gibt es drei Textfelder, die je nach Auswahl ein- oder ausgeblendet werden sollen. Dazu habe ich im Berichtskopf ein Listenfeld für die Auswahl erstellt, dessen Wert in ein Textfeld (txtwahl) übertragen wird. Per Click auf einen Button wird folgender Code angewandt:
Private Sub Befehl14_Click()
If Me!txtwahl = "woche" Then
    Me.GroupLevel(0).GroupOn = 5
    txtwoche.Visible = True
    txtmonat.Visible = False
    txtjahr.Visible = False
ElseIf Me!txtwahl = "monat" Then
    Me.GroupLevel(0).GroupOn = 4
    txtwoche.Visible = False
    txtmonat.Visible = True
    txtjahr.Visible = False
ElseIf Me!txtwahl = "jahr" Then
    Me.GroupLevel(0).GroupOn = 2
    txtwoche.Visible = False
    txtmonat.Visible = False
    txtjahr.Visible = True
End If
End Sub


Eigentlich funktioniert das, wie sich an der Sichtbarkeit/Unsichtbarkeit des jeweiligen Textfeldes im Gruppenkopf zeigt, einwandfrei. ABER ...
... die Gruppierung und damit verbunden die jeweiligen Summen ändern sich erst dann, wenn ich den Vorgang wiederhole. Dh.: Nochmal im Listenfeld wählen und Button klicken.

Kann mir jemand weiterhelfen, warum die Gruppierung nicht schon beim ersten Klick funktioniert?
Vielen Dank im Voraus
chainy
Titel: Re: dynamisches Gruppieren im Bericht
Beitrag von: Beaker s.a. am April 09, 2016, 18:03:48
Hallo chainy,
Hast Du ein .Requery des Berichts versucht?
gruss ekkehard
Titel: Re: dynamisches Gruppieren im Bericht
Beitrag von: chainy24 am April 09, 2016, 19:36:16
Hallo,
ja. Hatte aber gar keinen Effekt.

Gruß chainy
Titel: Re: dynamisches Gruppieren im Bericht
Beitrag von: chainy24 am April 10, 2016, 10:40:40
Hallo,
hab eine Lösung gefunden!
Ich habe das Textfeld, das den Wert aus dem Listenfeld übernommen hat entfernt und greife im Code direkt auf das Listenfeld zu, dem ich zuvor noch eine weitere Spalte mit den entsprechenden Werten zugewiesen habe (für Jahr "2", Monat "4"..). Ist aber nur eine "kosmetische Maßnahme", um nicht unnötige Felder zu haben. Um die Gruppierung beim ersten Klick hinzubekommen, hab ich die Anweisung "GroupOn" kurzerhand im Code wiederholt. Sieht jetzt so aus:
Private Sub Bef_Auswahl_Click()

wahl = Me!Liste1.Column(2)

Me.GroupLevel(0).GroupOn = wahl
Me.GroupLevel(0).GroupOn = wahl

If wahl = "5" Then
    txtwoche.Visible = True
    txtmonat.Visible = False
    txtjahr.Visible = False
ElseIf wahl = "4" Then
    txtwoche.Visible = False
    txtmonat.Visible = True
    txtjahr.Visible = False
ElseIf wahl = "2" Then
    txtwoche.Visible = False
    txtmonat.Visible = False
    txtjahr.Visible = True
End If

End Sub


Zweifellos nicht die eleganteste Lösung und vermutlich auch nicht die Ursache behebend. ABER es funktioniert!!
Gruß chainy