Hallo zusammen,
leider verzweifle ich so langsam an meinem Bericht. Dieser enthält Werte einer Abfrage, die sich wiederum auf eine Tabelle bezieht. In dieser Tabelle sind Ja/Nein-Felder enthalten die über eine Checkbox in einem Formular gefüllt werden.
Meinen Bericht möchte ich jetzt so anzeigen lassen, dass wenn ein Haken bei "Erbsen" gesetzt ist, ein ungebundenes Textfeld mit dem Textinhalt "Erbsen" im Bericht sichtbar ist. Ist der Haken nicht vorhanden, soll das Textfeld unsichtbar sein. Dieses Prozedere wäre bei insg. 4 Checkboxen (mit "Erbsen", "Möhren", "Bohnen" und "Mais") zu machen. Dazu hatte ich in der Entwurfsansicht die Checkboxen in den Bericht gezogen und in der Ereignisprozedur beim Öffnen des Formulars folgenden VBA-Code gesetzt:
If Me.ChkBx_Erbsen = -1 Then
Me.BezeichnungsfeldErbsen.Visible = True
Else
Me.BezeichnungsfeldErbsen.Visible = False
End If
If Me.ChkBx_Möhren = -1 Then
Me.BezeichnungsfeldMöhren.Visible = True
Else
Me.BezeichnungsfeldMöhren.Visible = False
End If
If Me.ChkBx_Mais = -1 Then
Me.BezeichnungsfeldMais.Visible = True
Else
Me.BezeichnungsfeldMais.Visible = False
End If
If Me.ChkBx_Bohnen = -1 Then
Me.BezeichnungsfeldBohnen.Visible = True
Else
Me.BezeichnungsfeldBohnen.Visible = False
End If
Aber das funktioniert vorne und hinten nicht. Ist evtl. etwas am Code falsch?
Vielen Dank für Eure Hilfe!
Hallo,
der Code muss in das Ereignis "Beim Formatieren" des entsprechenden Berichtsbereichs. Der Code lässt sich auch noch erheblich vereinfachen. Diese 4 Zeilen reichen, If ... Then ... Else wird nicht benötigt.
Me.BezeichnungsfeldErbsen.Visible = Me.ChkBx_Erbsen = -1
Me.BezeichnungsfeldMöhren.Visible = Me.ChkBx_Möhren = -1
Me.BezeichnungsfeldMais.Visible = Me.ChkBx_Mais = -1
Me.BezeichnungsfeldBohnen.Visible = Me.ChkBx_Bohnen = -1
Aber, wenn das Datenmodell stimmen würde, könnte man auf solche Aktionen wahrscheinlich verzichten. Hier fehlen noch 2 Tabellen, eine für die Art (Erbsen, Bohnen ...) und eine zur Zuordnung.
Ist das mit den Erbsen, Bohnen ... real oder beispielhaft.
Erkläre mal die Zusammenhänge genauer. Ja/Nein Felder zur Auswahl sind meist ein Hinweis auf ein falsches Datenmodell.
Nachtrag:
Die = -1 sind überflüssig (schaden aber auch nicht), siehe nachfolgenden Beitrag von Franz.
Hallo,
Zitatin der Ereignisprozedur beim Öffnen des Formulars folgenden VBA-Code gesetzt:
Meinst Du hier "beim Öffnen des Berichts" ?
Wenn so, dann benutz das Format-Ereignis des Bereiches, in dem die Bezeichnungsfelder platziert sind.
Zudem kürzer geschrieben:
Sub Detailbereich_Format(....)
Me!BezeichnungsfeldErbsen.Visible = Me!ChkBx_Erbsen
Me!BezeichnungsfeldMöhren.Visible = Me!ChkBx_Möhren
Me!BezeichnungsfeldMais.Visible = Me!ChkBx_Mais
Me!BezeichnungsfeldBohnen.Visible = Me!ChkBx_Bohnen
End Sub
Grundsätzlich sollten aber (dringend) am Daten-/Tabellenmodell die Normalisierungsregeln angewendet werden...
Hallo Klaus, Hallo Franz,
zunächst Danke für die Tips. Es handelt sich nur um beispielhafte Einträge, da es daran besser und einfacher zu erklären geht. Das Datenmodell ist hier in diesem Fall extra mit Ja7Nein-feldern aufgebaut worden um bestimmte durchzuführende Tätigkeiten für eine Auftragsfirma festzulegen. Da diese von auftrag zu auftrag variieren können bin ich zu dem Ja-Nein-Modell gelangt (was evtl. im Nachhinein betrachtet ein Fehler war). Nun gut...
ich habe Euren Code in die Ereignisprozedur beim Formatieren des Datenbereichs im Bericht gesetzt und aus der "Beim Öffnen"-Ereignisprozedur der Berichtseigenschaft herausgenommen.
Jetzt ist es jedoch so, dass egal ob ich Me. oder Me! oder =-1 oder es weglasse dahinterschreibe, wenn ich den Bericht öffne werden die Bezeichnungsfelder alle engezeigt, egal ob eine Checkbox aktiviert ist ioder nicht (sollten ja eigentlich unsichtbar sein, wenn eine entsprechende Checkbox nicht angehakt ist).
Gruß
Marcus
Hallo,
immer den vollständigen verwendeten Code zeigen, wie sonst soll man das beurteilen.
ZitatDas Datenmodell ist hier in diesem Fall extra mit Ja7Nein-feldern aufgebaut worden um bestimmte durchzuführende Tätigkeiten für eine Auftragsfirma festzulegen.
Die Ja/Nein Felder waren bzw. sind ein grober Fehler in der Tabellenstruktur. Das ist eine klassische n:m Beziehung, hier fehlen daher noch mindestens 2 Tabellen. Bei korrektem Aufbau würde sich Dein Problem in Luft auflösen, denn es sind dann automatisch nur die zur Firma passenden Tätigkeiten sichtbar.
Siehe hierzu auch:
Microsoft Access Tips for Casual Users (http://allenbrowne.com/casu-23.html)
Wie viele verschiedene Tätigkeiten insgesamt gibt es denn ?
Wie viele (ca) kann eine Firma maximal haben ?
Hast Du mal überlegt, welchen Aufwand es bedeutet wenn mal eine neue Tätigkeit hinzu kommt ?
Hallo,
Zitat von: Seth666 am September 24, 2015, 11:36:10wenn ich den Bericht öffne werden die Bezeichnungsfelder alle engezeigt
dann öffnest du den Bericht wohl in der Berichtsansicht, da greifen die Format-Ereignisse leider nicht. Wähle statt dessen die Seitenansicht.
Hallo MaggieMay,
Bingo! Jetzt funktioniert es!!!
Euch allen vielen DANK für die Hilfe!