Hallo,
ich möchte mit Access einen dynamischen Bericht erstellen. Der Bericht besteht aus zwei Unterberichten. Der Obere liefert die globalen Artikeldaten und der Untere die zu verschiedenen Farbvarianten des Hauptartikels.
Meine Frage ist die, wie ich es schaffe, dass abhängig von einem Kriterium einzelne Felder angezeigt oder nicht angezeigt werden.
Für eure Hilfe wäre ich sehr dankbar.
Matthias
Hallo, Matthias!
Meine Frage ist die, wie ich es schaffe, dass abhängig von
einem Kriterium einzelne Felder angezeigt oder nicht angezeigt
werden.
Hängt davon ab, ob Du „Zeilen“ oder „Spalten“ ausblenden willst. Grundsätzlich kannst Du so was im ReportOpen-Ereignis machen, in dem Du z. B. die Visible-Eigenschaft der entsprechenden Felder/Steuerelemente setzt. Wenn eine Spalte ausgeblendet werden soll, müssen die rechts befindlichen Spalten wahrscheinlich nach links verschoben werden. Das ganze könnte so aussehen:
Private Sub Report\_Open(Cancel As Integer)
If MsgBox("mit Feld?", vbYesNo) = vbYes Then
Me.txtEventuellAusgeblendet.Visible = True
Else
Me.txtEventuellAusgeblendet.Visible = False
End If
' nächste "Spalte" nach links verschieben
If Not Me.txtEventuellAusgeblendet.Visible Then
Me.txtFeldNachAusgeblendet.Left = Me.txtEventuellAusgeblendet.Left
End If
End Sub
Wenn Du „Zeilen“ ausblenden willst (nicht ganze Datensätze!), geht das entsprechend, nur das folgende Felder mit der Top-Eigenschaft angepasst werden müssen. Wenn nur Zeilen ausgeblendet werden sollen, falls sie keine Inhalte haben (also NULL oder „“ sind), kannst Du ihnen eine minimale Höhe geben (0,001), die Vergrößerbar-Eigenschaft auf Wahr setzen und die folgenden Felder direkt darunter setzen. Dies brauchst Du auch, wenn innerhalb der angezeigten Datensätze das Ein- und Ausblenden variieren soll.
Ein weiteres Ereignis, welches interessant für die abhängige Formatierung ist, ist das Format-Ereignis der einzelnen Berichtsbereiche. Damit kannst Du z. B. alternierende Hintergründe (z. B. grau/weiß) erzeugen, die eine lange Tabelle vielleicht ein wenig übersichtlicher machen, in dem die BackColor-Eigenschaft immer zwischen weiß und grau getauscht wird.
Gruß, Manfred
Hallo Manfred,
leider habe ich mich ein wenig ungenau ausgedrückt. Ich muss ganze Datensätze ausblenden anhand eines Kriteriums, das in einer Spalte meiner zu Grunde liegenden Tabelle eingetragen ist.
Beim erstellen des Berichts müsste der Datensatz abgefragt werden und wenn in der Spalte AC die Buchstaben „AC“ eingetragen sind soll der Datensatz übersprungen werden.
Der Hinweis mit der Formatierung ist aber schon sehr hilfreich. Ich habe ihn sofort eingebaut.
Vielen Dank schon ein Mal, Matthias
Hallo Matthias!
Beim erstellen des Berichts müsste der Datensatz abgefragt
werden und wenn in der Spalte AC die Buchstaben „AC“
eingetragen sind soll der Datensatz übersprungen werden.
Ah jetzt ja. Na, das ist noch viel einfacher: Setze im ReportOpen den Filter, oder Du kannst schon beim Öffnen das Kriterium mitgeben:
DoCmd.OpenReport "DeinBericht",acViewPreview,,"Feld'AC'"
beim Aufruf aus dem Code heraus. Oder
Me.Filter = "Feld'AC'"
Me.FilterOn = True
im ReportOpen.
Der Hinweis mit der Formatierung ist aber schon sehr
hilfreich. Ich habe ihn sofort eingebaut.
Der hilft Dir beim Ausblenden von Datensätzen aber wie gesagt nicht. Das musst Du über die Datenquelle machen wie oben beschrieben.
Die dritte Alternative ist, dass Du Dir die entsprechende Abfrage baust und dann keine Tabelle als Datenherkunft des Berichts verwendest, sondern eben besagte Abfrage.
Gruß, Manfred