online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Kjatar vom 16.01.2019, 16:18 Options

Access berichte filter

Moin leutz

folgende Grundlage:
Ich muss in Access sowohl ein Formular erstellen, welches mir jeden Datensatz ausliest und mit dem ich neue erstellen kann. Zudem muss ich in einem Bericht die ganze Adressliste darstellen. Soweit so gut, alles kein Problem, jetzt selbiges:
Ich muss diesen bericht so filtern, dass nur gewünschte Datensätze dargestellt werden. Das heisst der User kann in einem Formular eingeben, welche Datensätze er will, zum bsp alle aus Zürich. Diese Datensätze müssen nun alle in einem Bericht angezeigt werden, welcher zum drucken bereitgestellt wird. Kann mir da wer helfen?


Antwort schreiben

Antwort 1 von Teddy7 vom 16.01.2019, 16:26 Options

Beim Aufruf eines Berichts kann man Selektionskriterien mitgeben. Man baut also ein Formular, auf dem man die Kriterien in ungebundenen Feldern erfassen kann und legt einen Befehlsbutton an mit diesem Code in Klick-Ereignis:

Dim suche As String
if not isnull(SOrt) and SOrt <> "" and SOrt <> " " then
suche = "Ort = ´" & SOrt & "´"
endif
DoCmd.OpenReport "repÜbersicht", acViewPreview, , suche

Dabei sei SOrt das ungebundene Selektionsfeld für den Ort und das entsprechende Feld in der Datenquelle des Berichts sei Ort.
Auf diese Art kann man mehrere Felder abfragen.
Die Selektionsvariable sieht zum Schluss aus wie eine where-Klausel (ohne where).
Achtung: Textfelder in Hochkommas setzen

Gruß
Teddy

Antwort 2 von Kjatar vom 16.01.2019, 17:00 Options

Ist das auch so möglich, dass ich in einer dropdownliste einen Feldnamen auswählen könnte, und den zugehörigen Filterwert. Nach bestätigung könnte ich zudem weitere Filterkriterien auswählen, habe ich das richtig verstanden?

Antwort 3 von Teddy7 vom 16.01.2019, 18:00 Options

nein - das wäre zu umständlich.
Das ungebundene Feld kann natürlich ein Kombifeld sein.
Man kann auch 2 Felder machen und von/bis eingeben.
Oder man macht ein Listfeld mit Mehrfach-Auswahl - das muß man aber dann per VBA-Programmierung auch entsprechend abfragen und in das Selektionsfeld übertragen. Für Programmierer kein größeres Problem *g*.

Oder man stellt mehrere Auswahlfelder für das gleiche Datenfeld zur Verfügung (SOrt1 , SOrt2 , ..)

Gruß
Teddy

Antwort 4 von Kjatar vom 17.01.2019, 08:20 Options

Sorry, bin noch recht neu in access, von daher versteh ich dich grad absolut net...
was das programmieren angeht, bin informatik lehrling, sollte das also verstehen

Kjatar

Antwort 5 von Teddy7 vom 17.01.2019, 08:45 Options

was genau verstehst Du denn nicht ?
Kombifeld und Listfeld müßten doch ein Begriff sein, oder ?

Antwort 6 von Kjatar vom 17.01.2019, 09:48 Options

Das schon, ich versteh nicht, wie das ganze zu verknüpfen wäre...

allerdings wär ich noch auf ne andere idee gekommen, und zwar dass einfach alle gewünschte datensätze (im formular einzeln auswählbar) ausgewählt werden, und diese dann im bericht dargestellt... wäre glaub ich mal eifnacher, net?
wenn ja, wie wär das zu lösen? also das portieren in den berich?

Antwort 7 von Teddy7 vom 17.01.2019, 10:35 Options

Das ist nur dann einfacher, wenn es eine überschaubare Menge an klicks (zum auswählen) für den Anwender sind.
Die Übergabe an den Bericht erfolgt über die gleiche Technik. Du bräuchtest ein Endlosformular mit Mehrfachselektion und mußt dann bei auslösen des Berichts alle markierten Sätze des Formulars bestimmen, ODER Du machst die Markierung der Sätze so, das Du ein zusätzliches Feld im Datensatz hast, das bei Markierung auf true gesetzt wird. Dann kannst Du in der Abfrage, die die Datenquelle des Berichts ist, einfach als Kriterium "Markierungsfeld = true" festlegen.
Ich bin Profi-Programmierer und mache die Markierungslösung sehr selten und wenn dann mit der 2. Möglichkeit.
Flexibler ist die Lösung mit den mehreren Selektionsfeldern oder dem auslesen des Listfelds.
Beispiel:
////////////////////////
Listenfeld abarbeiten:

Dim i As Long, strListe As String, varFirst As Boolean, n As Long
´Überprüfung ob Auswahl in ListSerienbrief vorhanden ist
If Not IsNull(Me(Listenfeldname).Column(0)) Then
´Anzahl der ausgewählten Zeilen feststellen
n = Me(Listenfeldname).ListCount - 1
´Zeilen durchlaufen und Werte der ersten Spalte in kommagetrennte Zeichenfolge schreiben
For i = 0 To n
If Me(Listenfeldname).Selected(i) Then
If Not varFirst Then
strListe = strListe & Me(Listenfeldname).Column(0, i)
Else
strListe = strListe & "," & Me(Listenfeldname).Column(0, i)
End If
varFirst = True
End If
Next
If strListe <> "" Then
suche = "Ort in (" & strListe & ")"
End If
////////////
Bei Textfeldern um Hochkommas ergänzen !!!

Ähnliche Themen

Access Bericht mit ms Graph Diagrammen
asdfasdfasdf  03.05.2007 - 210 Hits - 1 Antwort

Access-Berichte als PDF versenden
SW-Helfer  14.06.2007 - 158 Hits - 2 Antworten

Berichte mit access
Rolly  16.07.2007 - 136 Hits - 1 Antwort

Maus Rad scrollen in Access Berichte im Code geht nicht ?
Trauchgauer  26.03.2008 - 67 Hits -

MS Access eine Tabelle vier Berichte
neefathet  22.05.2008 - 59 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026