2016-05-30 7 views
1

Problem: Ich erstellte Datenblatt Formular mit Abfrage. Ich benutze dieselbe Abfrage, um einen Bericht zu erstellen. Wenn ich das Datenblatt ausfiltriere und dann meinen Bericht öffne, hat der Filter des Formulars keinen Einfluss auf meinen Bericht.Filterbericht mit Datenblatt Filter

Was erreicht werden soll: Ich möchte die gleichen Daten in meinem Bericht und in meiner gefilterten Form sehen.

Frage: Gibt es einen Trick, um Datenblattformularfilter auf meinen Bericht anzuwenden?

Wichtig: Ich kann nicht ungebundene Felder in meinem Formular verwenden, um Abfrage zu filtern. Es muss eine Excel-ähnliche Idee der Filterung sein. Ich meine, der Benutzer sollte in der Lage sein, in jeder Spalte des Datenblattformulars auf ein kleines Dreieck zu klicken, einige Daten aus einer Liste auszuwählen und dann den Bericht zu öffnen. Der Bericht sollte sich an die Filtereinstellungen des Formulars "erinnern".

Antwort

1

Der Bericht basiert auf der Abfrage, so dass Sie den Bericht nicht aus dem Datenbankfenster/Navigationsbereich öffnen können und die Quelldaten leicht entsprechend den Angaben im geöffneten Formular geändert werden können. (Es ist möglich, erfordert aber eine Codierung.)

Sie könnten das Formular als Teilformular in ein neues, leeres Formular einfügen, sodass Sie eine Schaltfläche hinzufügen können, um eine Vorschau des Berichts anzuzeigen.

Die Schaltfläche würde eine Vorschau des Berichts anzeigen und eine Filter enthalten. Dieser Filter konnte aus, dass derzeit in Verwendung durch das Unterformular kopiert:

Private Sub cmdPreview_Click() 
    'Debug.Print Me.Controls("frmStaffFilter").Form.Filter 
    DoCmd.OpenReport "rptStaffFilter", acViewReport, , Me.Controls("sbfStaffFilter").Form.Filter 
End Sub 

(Dies ist das Wo Argument, keinen benannten Filter, die das Argument vor dieser ist.)


Based Auf diese Weise könnten Sie erreichen, was ich zuerst erwähnt habe. Sie würden das Open-Ereignis des Berichts verwenden, um zuerst zu überprüfen, ob das Formular (und sein Unterformular) derzeit geöffnet ist. Lesen und wenden Sie dann den Filter des Teilformulars an, indem Sie meinen obigen Code anpassen.

+0

OK, es hat eine Weile gedauert, aber schließlich kam ich auf die Idee. Ich habe Ihr Where-Argument ersetzt: Me.Controls ("sbfStaffFilter") .Form.Filter von Formulare! SbfStaffFilter.Form.Filter und es funktioniert perfekt jetzt. Vielen Dank für deine Hilfe, Andy G :) – YourNick