PDA

Vollständige Version anzeigen : Formular via Filter-Auswahl Öffnen


tornado
02.10.2001, 07:42
Hallo Leute

Da bin ich wieder mal mit 'ner kleinen Frage: Ist es in Access möglich, vor dem Öffnen eines Formulares aus einer Auswahl einen gewünschten Filter zu setzen um die Datensätze einzuschränken?

Ich habe in den einzelnen Datensätzen 7 Kontrollkästchen, die mir den jeweiligen Status des Auftrages anzeigen (geplant, bestätigt, in AVOR, gerüstet, produziert, fakturiert und erledigt). Ich möchte nun dem einzelnen user die Möglichkeit geben nur die für Ihn relevanten Datensätze anzeigen zu lassen zB "alle nicht geplanten zwischen 1.9.01 und 30.9.01". Hierfür stelle ich mir ein kleines Formular vor in dem der user seine Auswahl treffen kann und anschliessend das Formular mit "seinen" Datensätzen öffnet.

Klingt toll, oder :D :D

Bloss, wie stelle ich das an :confused: ?? Hat mir da vielleicht jemand eine gute Idee?
Bin für jeden Tipp dankbar und bitte herzlichst um Verzeihung falls das gleiche Prob schon mal irgendwo behandelt wurde.

Mit freundlichen Grüssen
Roger

Wile E G
02.10.2001, 08:35
Der Befehl OpenForm hat folgende Syntax:
DoCmd.OpenForm Formularname [, Ansicht][, Filtername][, Bedingung][, Datenmodus][, Fenstermodus][, Öffnungsargumente]

Das Feld mit den Bedingungen ist das Interessante.
Ein Beispiel:
DoCmd.OpenForm "DasForm",,"Kontrollkästchen1 = true AND KontrKästchen2 = false"

statt true und false kannst du auch variablen einsetzen:

DoCmd.OpenForm "DasForm",,"Kontrollkästchen1 = " & var1 & " AND KontrKästchen2 = " & var2 & "

ich hoffe das bringt dir was (HTH)
Wile E.G.

tornado
02.10.2001, 09:49
Hallo Wile

ähh, so ganz kann ich Dir noch nicht folgen... :confused:

Als erstes entwerfe ich mal mein "Filter"-Formular (frmFilter). Auf dieses Formular schmeisse ich nun meine Auswahlmöglichkeiten.
Zur Zeit habe ich da 7 Optionsgruppen (für jeden Status eine) in denen alle DS, markierte KtrKst oder nicht markierte KtrKst gewählt werden können. Zum Beenden kommt da noch 'ne Schaltfläche "filtern" dazu.

Wie geht's nun weiter? Ich denke da brauchts doch erst mal eine Abfrage aufgrund der gewählten Optionsfelder?
In dieser Abfrage setze ich alle Kontrollkästchen ein, aber was schreibe ich in die Bedingung rein? (In den Optionsgruppen ist 1 für alle (egal ob Wahr oder Falsch) 2 für markierte (=Wahr) und 3 für nicht markierte (=Falsch).

Hast Du mir da vielleicht noch einen Tipp?

Gruss
Roger

Wile E G
02.10.2001, 12:40
uiii, kompliziert!
hab ne idee, weiß aber nicht ob die funzt:

dim var1, var2, var3...var7 as string

select case deinoptionsgruppenrahmen1
case 1
var1 = "*"
Case 2
Var1 = "true"
Case 3
var1 = "false"
end select

das musst du jetzt auch für alle optionsgruppenrahemn machen

dann lautet dein aufruf
DoCmd.OpenForm "DasForm",,"Satus1 LIKE " & var1 & " AND Status2 LIKE " & var2 & " usw....
ich hoffe das hilft dir und vor allem das es klappt!
Gruß Wile E. G.

tornado
02.10.2001, 15:25
Hallo Wile

hab da mal schnell einen anderen Weg versucht und zwar mit dem Formulargesteuerten Filter. Das funzt ganz gut und die Auswahl lässt sich sogar als Abfrage speichern und später auch wieder aufrufen jedoch nur - und das wäre mein neues Problem - als Administartor der DB. Die einzelnen user haben auf diese Filter keinen Zugriff. Könnte ich irgendwie mein Filter-Formular so umbauen, dass auf Klick einer Schaltfläche
a) der Formulargesteuerte Filter aufgerufen wird,
b) die gespeicherte Filter-Abfrage aktiviert wird,
c) das Formular mit den gefilterten Daten angezeigt wird.

Im Moment würde ich dazu 7 Schaltflächen für die entsprechenden Filter benötigen. Mein Wissen reicht dazu leider nicht aus, wie ich diese Aufgaben in einem Code unterbringen könnte.

Hast Du da vielleicht eine Idee?

( alle anderen Mitleser dürfen natürlich auch mitmachen :D )

Gruss
Roger

md
02.10.2001, 20:13
Hallo Tornado!
Dieses problem hatte ich mal:
Vor dem Öffnen wird eine Abfrage namens "Filter" erstellt, die Deine Kriterien erfüllt.
Jetzt das Formular Öffnen
im Ereignis beim öffnen die Zeile
DoCmd.ApplyFilter "Filter", ""
Danach die Abfrage wieder löschen.

Grüße
MD

tornado
10.10.2001, 07:16
Hallo Leute

Auch hier, Besten Dank für Eure Mithilfe.

Habe nun die Lösung nach Muster aus der KnowHow 3.0-DB einbauen können (als zusätzliche Reiterkarte im Formular).
Auf dieser Karte habe ich für jedes relevante KtrK ein ungebundes DropDown-Feld mit Auswahl von JA(-1);NEIN(1);EGAL(*) eingefügt. Diese DropDown's verwende ich dann in einer Abfrage, die mir dann die gewünschte Auswahl liefert.

Ist vielleicht etwas banal beschrieben, aber es gibt doch nichts "blöderes" als unaufgelöste Themen, oder :D

Nochmals Besten Dank

Gruss Roger