Guten Tag allerseits
Ich habe ein Problem mit einem Bericht. Ich möchte einen Fussbereich in Abhängigkeit von einem Feld anzeigen oder ausblenden lassen. Ich habe im Internet nach Lösungen gesucht, aber leider nicht fündig geworden. Der Bericht stellt eine Rechnung dar, welche ich ohne Skontoberechnung oder auch mit Skontoberechung anzeigen möchte. Die Skontoberechnung befidet sich im Fussbereich0. Dieser Bereich soll aufgrund des Wertes im Feld "zbeSkonto" ein oder ausgeblendet werden.
Das ist mein aktueller Stand vom Code:
Private Sub Gruppenfu?0_Format(Cancel As Integer, FormatCount As Integer)
If Nz(Me.zbeSkonto.Value, 0) > 0 Then
Me.Gruppenfu?0.Visible = True
Else
Me.Gruppenfu?0.Visible = False
End If
End Sub
Wäre super wenn mir jemand helfen könnte.
Vielen Dank!
Gruss Ändu
Hallo,
und was genau funktioniert denn nicht ?
Wie lautet der Name des Fußes genau, Du hast hier ein ? im Namen ?
Hallo
Der Fussbereich wird in jedem Fall angezeigt. Egal ob 2% oder 0% Skonto.
Das Fragezeichen kommt vom Kopieren. Im Anhang findest du zwei Printscreens.
Gruss
Hallo,
der Code sollte funktionieren.
Gibt es leere (NULL) Skonto Einträge (also auch keine 0) ?
Hallo Klaus
Nein, in Ausschnitt3 Siehst du die Tabelle in welcher die Zahlungsbedingungen hinterlegt sind. Das Feld zbeSkonto ist gemäss Ausschnitt5 formatiert. Die Elemente sind entsprechend Ausschnitt 4 miteinander verbunden.
Kann es sein, dass aufgrund einer falschen Feldformatierung der Vergleich in der IF Funktion nicht gemacht werden kann?
Gruss
Hallo,
Dezimal, mit 18 Stellen halte ich für eine Prozentzahl für reichlich übertrieben. Double reicht da spielend.
Zu beachten ist auch, dass beim Format Prozent für 2% 0,02 in der Tabelle steht. Und das Feld zbeSkonto muss in der Datenherkunft für den Berricht vorhanden sein.
Den Code kannst Du auch verkürzen (Ohne If...Then).
Private Sub Gruppenfuß0_Format(Cancel As Integer, FormatCount As Integer)
Me.Gruppenfuß0.Visible = Me.zbeSkonto > 0
End Sub
Nz ist hier auch überflüssig.
Hallo Klaus
Ich habe den Datentyp von zbeSkonto auf Double geändert und deine kurze Formel eingesetzt. Leider funktioniert das einfach nicht. Muss ich noch etwas bezüglich den 0.02 beachten? Ich denke nicht, weil ja 0.02 auch grösser als 0 ist. Gäbe es noch ein alternatives vorgehen? Ich möchte nicht unbedingt mit bedingter Formatierung arbeiten. Falls nicht werde ich einfach zwei Versionen des Berichts machen.
Gruss Ändu
Ich bin sicher, ob man einen Gruppenfuss im Format-Event eben dieses Fusses überhaupt ausblenden kann.
Wäre es allenfalls eine Lösung, wenn beim betätigen des Buttons im Formular geprüft würde, was für ein Wert im Feld zbeSkonto steht und aufgrund dessen den entsprechenden Bericht (Netto oder Skonto) aufzurufen?
Hallo,
grundsätzlich sollte das funktionieren, auch das Ereignis ist richtig (getestet).
Zwei Berichte braucht es hier nicht.
Kannst Du bitte mal ein kleines Beispiel erstellen das nur das Problem enthält und hier hochladen?
Hallo Klaus
Leider kann ich die Beispiel DB wegen dem Datentyp nicht hochladen. (Die DB hat die Endung .accdb). Kann ich dir diese sonst irgendwie senden?
Gruss Ändu
Hallo,
die Datenbank zippen, dann klappt das mit dem Hochladen.
Vorher (vor dem Zippen) das Access Dienstprogramm (bei den Datenbanktoolös) "Reparieren Komprimieren" anwenden.
Neuer Versuch. Vielen Dank!
Hallo,
das Feld heißt ja auch nicht zbeSkonto sondern Text118.
So geht es:
Me.Gruppenfuß0.Visible = Me.Text118 > 0
Dieser Namensfehler ist passiert beim freistellen vom Bericht. Ich habe ein neues Feld eingefügt und zugeordnet, aber nicht umbenannt.. Ich habe bei mir deine Zeile eingefügt, aber mit dieser funktioniert es auch nicht. Kannst du mir die Beispiel DB zurückschicken, in welcher es jetzt funktioniert? So kann ich einen Fehler Seitens ACCESS Installation ausschliessen.
Gruss Ändu
Hier bitte.
Danke, aber funktioniert bei mir leider nicht...
Hallo,
wird der Code überhaupt ausgeführt (Haltepunkt setzen) ?
Bei mir funktioniert das einwandfrei.
Ich bin jetzt davon ausgegangen, das der Code beim Aufrufen des Berichts ausgeführt wird. Hmm was meinst du mit Haltepunkte?
Hallo,
im VBA Code einen Haltepunkt (Einzahl) setzen. Dann stoppt die Ausführung.
Der Code wird nicht beim Aufruf des Berichts ausgeführt, sondern erst wenn der Fußbereich formatiert wird, wie das Ereignis auch sagt.
Kannst du mir erklären was ich genau machen muss?
Hallo,
füge einfach mal vor der jetzigen einen Zeile einen Stop Befehl ein.
Stop
Hält der Code dann an ?
Sorry in VBA bin ich ein absoluter Neuling!
Ich habe Stop eingefügt:
Private Sub Gruppenfu?0_Format(Cancel As Integer, FormatCount As Integer)
Stop
Me.Gruppenfu?0.Visible = Me.Text118 > 0
End Sub
Wie sehe ich ob der Code gestopt hat?
Der Fussbereich wird immer noch angezeigt.
Hallo,
der Code bleibt in der Stop Zeile stehen und der Code wird angezeigt.
Wenn der Code nicht zu sehen ist, wird das Ereignis nicht angesprungen und der Code auch nicht ausgeführt.
PS:
Zum wiederholten Male, für Codedarstellungen die Codetags des Forums benutzen. Das ist der Button mit dem Gartenzaun (#). Code markieren und den Button klicken.
Sorry wegen dem Kopieren, war mir nicht bekannt. Werde ich beachten!
Wenn ich den Code Ausführen möchte, kommt folgende Meldung (Anhang) Ich bi mir aber nicht sicher, ob ich das richtig mache. Wahrscheinlich ist das eine Nummer zu hoch für mich....
Hallo,
was heißt den Code ausführen ?
Denn kann man nicht ausführen, der wird automatisch ausgeführt wenn das Ereignis "Beim Formatieren" greift. Manuell kann der nicht ausgeführt/gestartet werden.
Was passiert (mit eingefügten Stop Befehl) wenn der Bericht per Doppelklick aufgerufen wird?
ZitatSorry wegen dem Kopieren,
was kopieren, ich habe doch nichts von kopieren gesagt.
Der Bericht öffnet normal in der Berichtansicht und es werden sämtliche Datensätze mit dem Gruppenfuss angezeigt.
Ich meinte bezüglich dem Code einfügen mit ctrl. V.
Hallo,
dann wird der Code überhaupt nicht ausgeführt.
Du hast vermutlich in den Optionen die Ausführung von VBA unterbunden.
Das musst Du mal prüfen. Ich weis allerdings nicht genau wo und wie, ist je nach Access Version verschieden. Auch die Windows Sicherheitseinstellungen können eine Rolle spielen.
Suche mal mit Google nach "Access VBA Code wird nicht ausgeführt".
Hallo,
Zitat...öffnet normal in der Berichtansicht ...
und da tritt kein Format-Ereignis auf, wie auch andere, die es bei der "Seitenansicht" gibt .
Guten Tag Klaus und Franz
Ich konnte das Problem lösen. Die Vermutung von dir Klaus, das der Code nicht ausgeführt wird und der Input von dir Franz, dass kein Format Event passiert waren richtig. Ich habe jetzt den Code am Bericht dem Ereignis "beim Laden" zugeordnet. So wird der Fussbereich im Bericht beim Laden ausgeblendet. Was aber wichtig ist, dass immer nur ein Datensatz angezeigt wird (Bedingung beim aufrufen des Berichts). Der Bericht kann nur eine Formatierung anzeigen. Im Anhang findet ihr meine Lösung.
Herzlichen Dank für eure Unterstützung und wünsche euch einen schönen Sonntag!
Gruss Ändu
Hallo,
das Ereiegnis "Beim Formatieren" ist schon richtig.
Du musst aber die Seitenansicht verwenden.
Ich vergesse immer wieder, dass in der Berichtsansicht keine Ereignisse ausgeführt werden.
Der Sinn dieser Berichtsansicht ist mir immer noch unbegreiflich, in früheren Versionen von Access gab es diese Ansicht gar nicht.
Ich habe auch in der Seitenansicht versucht, aber da wurden zuerst immer beide Bereiche angezeigt. Erst wenn ich auf den Datensatz geklickt hatte, blendete er den Skontobereich aus.
Aber auf dem Event vom Bericht beim Laden funktioniert es ja jetzt auch und ich kann es so belassen. Oder habe ich einen Einfluss übersehen?
Zitat von: Aendu am Mai 19, 2019, 12:17:54
Aber auf dem Event vom Bericht beim Laden funktioniert es ja jetzt auch und ich kann es so belassen. Oder habe ich einen Einfluss übersehen?
Wenn dein Bericht immer nur eine Gruppe mit den speziellen Fuß hat, dann ist das so in Ordnung.
Hallo Phils
Vielen Dank für dein Feedback!
Gruss Ändu