PDA

Vollständige Version anzeigen : Listenfeldwert als Kriterium an Abfrage übergeben


michio
07.07.2006, 11:43
Hallo,
ich habe ein Listenfeld in einem Formular mit verschiedenen Werten zum auswählen. Ist es möglich, denn ausgewählten Wert aus dem Listenfeld an eine Abfrage zu übergeben und diese Abfrage dann mit dem ausgewählten Listenfeldwert zu speichern? Die Abfrage soll immer nur den, zu dem ausgewählten Wert passenden Datensatz enthalten.
Vielen Dank für hilfreiche Antworten.
michi

Worf1001
07.07.2006, 12:51
Hallo,

möglich ist es durchaus. Jedoch ist mir nicht klar, was Du machen willst. Aber so allgemein, würde das eventuell so funktionieren.


Dim strSQL As String
Dim WertListenfeld As Integer

WertListenfeld = Me!Listenfeld.Column(0) 'vorausgesetzt es ist eine Zahl!

strSQL = "SELECT * FROM Tabelle WHERE Tabelle.ID = " & WertListenfeld & "'"
...
...


Wenn nicht klar, musst Du genau beschreiben, was Du machen willst.

michio
07.07.2006, 13:05
Hallo Roger, ich habe eine Abfrage, die für jeden Monat eines Jahres (z.B. 04/2006) einen Datensatz enthält. Nun möchte ich aber nicht immer alle Datensätze in dieser Abfrage haben, sondern nur einen einzigen für einen bestimmten Monat eines Jahres. Aus diesem Datensatz wird dann ein Diagramm erzeugt (Excelobjekt, Pivottabelle).
Der Anwender soll mittels eines Listenfeldes den gewünschten Monat auswählen und dieser soll dann als Kriterium in der Abfrage im Feld Monat gespeichert werden.

Worf1001
07.07.2006, 13:08
Und was passiert dann mit der Abfrage?

michio
07.07.2006, 13:12
die abfrage soll mit diesen kriteriumswert gespeichert werden. also immer mit dem wert, den der anwender ausgewählt hat.

Worf1001
07.07.2006, 13:22
Eine Abfrage kann keinen Wert speichern.

Ich verstehe nachwievor nicht genau was Du willst....

Willst Du, dass Die Auswahl einfach einfach solange als Kriterium gilt bis Access beendet wird? Wenn ja, dann verwende dafür eine globale Variable.


PUBLIC GewaehlterMonat As Date

michio
07.07.2006, 13:46
wenn ich im feld "Reporting Month/Year" kein Kritrium eintrage, dann werden mir alle "Reporting Month/Year" angezeigt. Wenn ich z. B. "04.2006" eintrage bei Kriterien für dieses Feld dann wird mir nur der Monat "04.2006" angezeigt und ich kann auch diese Abfrage mit diesem Kriterium abspeichern. Dieses Kriterium soll solange gültig sein, bis ein anderer "Reporting Month/Year" ausgewählt wird (mittels Listenfeld). Ich will also nicht das Kriterium bei "Reporting Month/Year" nicht durch Öffnen der Abfrage in der Entwurfsansicht per Hand ändern, sondern mittels Listenfeld falls das möglich ist. Es sind nämlich ca. 50 Abfragen bei denen dieser Wert automatisch angepasst werden soll.

Worf1001
07.07.2006, 14:15
Jetzt verstehe ich endlich was Du meinst :boah:

In der Entwurfsansicht kannst du schon Kriterien abspeichern, die gelten aber nur für die jweilige Abfrage. Wenn Du das so machen willst, (du hast) dann musst Du das bei allen Abfragen seperat machen.

Ist das Formular mit dem Listenfeld beim Start jeweils geöffnet?

Gib mal in einer Abfrage als Kriterium ein: [Formulare]![Formularname]![Listenfeld]

Eine andere Möglichkeit sehe ich gerade nicht, ausser Du übernimmst alle Abfragen in VBA und arbeitest dort mit SQL.

michio
12.07.2006, 11:11
hi roger, des hatte ich auch schon getestet, aber ich müßte in der abfrage bei "reporting month/year" z.b. "05.2006" als kriterium drinstehen haben und nicht [formulare]......
gruß michi

Anne Berg
12.07.2006, 11:49
Speichere dir doch die Auswahl in einer Tabelle und greife in den Abfragen mittels Public Function und per DLookUp darauf zu... (s.a. Access-FAQ 3.15)

michio
12.07.2006, 12:25
du hast nicht zufällig nen beispielcode auf lager anne. meinst du die faq 3.15 von donkarl?
gruß michi

Anne Berg
12.07.2006, 14:19
Ja, das meinte ich.

In welcher Beziehung steht dieses Formular mit dem Listenfeld zu den ca. 50 Abfragen? Ich meine, wird dieses Formular stets geöffnet, um eine Abfrage zu starten oder nur, um den Monat auszuwählen?

Unabhängig davon stelle ich mir das in etwa so vor:

Tabelle: tab_aktuell
Feld: akt_monat

Public Function get_aktmon()
get_aktmon = DLookUp("akt_monat", "tab_aktuell")
End Function

Abfrage:
Select * From tabxy Where [Reporting Month/Year] = get_aktmon()

michio
12.07.2006, 14:44
das formular mit dem listenfeld wird nur benötigt, damit der anwender den gewünschten "reporting month/year" auswählen kann, auf dem der ausgedruckte bericht basiert. steht in keiner verbindung mit den abfragen. nur sollten halt die abfragen den gewünschten "reporting month/year" wert als kriterium übernehmen damit die eingefügten excelobjekte in den berichten die graphiken aktualisieren können.

Anne Berg
12.07.2006, 14:52
Dann brauchst du ja nur noch bei Auswahl des Monats über das Listenfeld diesen in die Tabelle zu schreiben.

michio
12.07.2006, 14:55
werd des gleich mal testen ob ich es hinkriege. werden dann die abfragen auch mit dem gewünschten reporting month/year gespeichert?

Anne Berg
12.07.2006, 15:02
Nein, in den Abfragen setzt du den Funktionsaufruf ein, wie oben gezeigt.