PDA

Vollständige Version anzeigen : Abfragen als Liste für Filterauswahl


Schnecky
30.09.2002, 23:23
Hallo an alle,

ich suche eine Lösung aber habe noch nichts Entsprechendes im Forum gefunden (oder stell mich zu doof an beim suchen :) )

Ich möchte ein Formular, indem aus einem Listenfeld (oder Kombifeld - je nachdem was besser ist) eine Abfrage ausgesucht werden kann. Über Knöpfe soll diese dann als Filter an ein Formular oder einen Bericht weitergegeben werden.

Ich habe bis jetzt noch keinen Weg gefunden, um Abfragen aufzulisten. Geht sowas überhaupt? Bin noch nicht soooo fit in Access. Ich arbeite übrigens mit 2000.

Danke im voraus,
Schnecky

A.S.
01.10.2002, 06:29
Hallo Schnecky,

als Quelle für Dein Kombi/Listenfeld setze eine SQL ala

SELECT MSysObjects.Name FROM MSysObjects WHERE MSysObjects.Type = 5;

ein ;) Wenn Du jetzt wissen willst, woher denn bitte schön die Tabelle MSysObjects kommt, gehe mal auf "Extras / Optionen" und blende die Systemobjekte ein ;)

Im übrigen darfst Du die Abfrage nicht als Filter übergeben, sondern mußt sie als Datengrundlage für Berichte/Formulare benutzen.

Oder meintest Du, das Du einen Filter basteln willst und dafür die Felder in der Anzeige benötigst?

Gruß

Arno

Karlheinz
01.10.2002, 06:41
Hallo Schnecky,

füge auf deinem Formular ein Kombifeld ein.

Bei Eigenschaften Kombifeld folgende Einstellungen vornehmen:
Daten
Datenherkunft: Werteliste

Andere
Name: cboQuerys

Eigenschaften Formular
Ereigenisse
Beim Laden: [Ereignisprozdur]

Füge in die Ereignisprozdur folgenden Code ein:


Private Sub Form_Load()

Dim db As Database, qrydef As QueryDef

Set db = CurrentDb
With Me
!cboQuerys.RowSource = vbNullString

'Schleife Abfragenamen in Kombifeld einsetzen
For Each qrydef In db.QueryDefs
!cboQuerys.RowSource = !cboQuerys.RowSource & qrydef.Name & ";"
Next qrydef

End With

Set db = Nothing

End Sub

Das wars

Gruß Karlheinz

Schnecky
01.10.2002, 07:24
Hallo Arno und Karlheinz,
danke für die raschen Antworten. Das mit der Datengrundlage war schon richtig Arno. Hab mich wohl ein wenig mißverständlich ausgedrückt (war auch spät :) ).
Ich werd die Sachen gleich nachher umsetzen und gebe Bescheid ob alles funktioniert.
Bis denne,
Schnecky

Schnecky
03.10.2002, 20:48
Hallo and Arno und Karlheinz,

beide Methoden funktionieren prima!!!

Jetzt hab ich aber noch die Frage, wie geb ich den Inhalt des Kombifeldes an das Formular oder den Bericht weiter? Also bis DoCmd OpenForm (oder Report) komme ich ja noch, aber danach reichts bei mir nicht mehr mit dem Code.
Außerdem, gibts noch eine Möglichkeit die Auswahl der Abfragen einzuschränken? Vielleicht auf diejenigen die mit einem bestimmten Buchstaben anfangen? Dann könnte ich die Abfragen entsprechend benennen.

Danke nochmal für die raschen Antworten :)

Gruß aus Berlin
Sue

Schnecky
09.10.2002, 20:17
Hallo,

hab das Problem mit einer Abfrage, die den Wert aus dem Formular mit dem Abfragen-Kombifeld holt gelöst. Das funktioniert prima.

Ich würde aber gerne noch die Abfragen im Kombifeld einschränken, so daß der Anwender nur die Abfragen sieht, die für ihn wichtig sind. Schließlich hab ich noch andere Abfragen in der DB die für die Berichte nicht als Datenherkunft dienen können. Ich hoffe, daß war verständlich.

Ich dachte, ich könnte die Abfragen auf eine bestimmte Art benennen (alle mit A vorneweg oder sowas) und dann andere Abfragen von der Ansicht ausschließen. Dazu müßte wohl der Code von Karlheinz angepaßt werden.
Kann mir da jemand helfen????

Danke und Gruß
Schnecky

Köbi
09.10.2002, 21:18
Grüezi Schnecky

So was in der Richtung als Ergänzung zum Code:

'Schleife Abfragenamen in Kombifeld einsetzen
For Each qrydef In db.QueryDefs
If Left(qry.Name, 1) = "A" Then
querydef = Mid(qry.Name, 2, Len(qry.Name))
!cboQuerys.RowSource = !cboQuerys.RowSource & qrydef.Name & ";"
End If


Gruss
Köbi

Schnecky
10.10.2002, 11:17
Hallo Köbi,

danke für die rasche Antwort. Leider erscheint bei mir jetzt der Laufzeitfehler 424. Objekt erforderlich. Im Code wird die Zeile
If Left(qry.Name, 1) = "A" Then
gelb. Leider in ich nicht der Crack und weiß nicht wie ich den Code abändern muß. Muß ich qry.Name vorneweg noch definieren? Wie gesagt, ich kenn mich noch nicht so aus. Kannst du mir nochmal weiterhelfen?

Danke im voraus,
Schnecky