Dynamische Berichte mit Access

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