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
Hallo chainy,
Hast Du ein .Requery des Berichts versucht?
gruss ekkehard
Hallo,
ja. Hatte aber gar keinen Effekt.
Gruß chainy
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