WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   MS Access - Formular nur mit bestimmten Datensätzen (http://www.wcm.at/forum/showthread.php?t=201031)

Preacher 11.10.2006 18:46

MS Access - Formular nur mit bestimmten Datensätzen
 
Folgende Access Frage:

Habe in einer (fertigen) Tabelle einer (fertigen) Datenbank 4 Spalten mit dem Datentyp "Ja/Nein". Mit einem anderen Formular werden hier Häkchen für bestimmte Optionen gesetzt und in einem Bericht so angedruckt (Hintergrund: ist eigentlich ein Pflichtenheft, die 4 Spalten sind die möglichen Nachweismethoden der Konformität).

Habe nun 4 Abfragen erstellt, die jeweils auf den Wert "Wahr" in einer der 4 Spalten filtern. Damit sollen Berichte generiert werden.

So, jetzt will ich aber ein Formular generieren, in dem ich oben entweder mit Radio-Buttons oder mit einem Drop-Down Menü (wäre mir egal) nur die gefilterten Datensätze (also das Ergebnis der Abfrage) in den restlichen Formularfeldern angezeigt bekomme.
Also im Prinzip: bei den restlichen Feldern die Datensatzherkunft in Abhängigkeit davon ändern.

Kann mir wer entsprechende Tipps geben?

Hussl 12.10.2006 12:34

Du kannst zum Beispiel mit dem Aufruf Docmd.Openreport() Argumente beim Öffnen übergeben. Da könntest du in einem Formular (oder wo auch immer) eine Auswahl treffen und den Wert dann mit OpenArgs übergeben. In der BeiÖffnen-Methode des Berichts könntest du dann den Wert abfragen und die Datenherkunft entsprechend anpassen.

Bin mir jetzt aber nicht 100% sicher welche Methode du beim Bericht nehmen musst (BeiÖffnen, BeiLaden, ...)

Hussl 12.10.2006 12:38

Ähh, ich glaub, ich hab was missverstanden. Du willst die Datenherkunft des Formulars ändern, richtig?

Dann entweder mit
Forms!IrgendeineForm.Recordsource = "Table/Query"
Forms!IrgendeineForm.Recordsource = "SELECT * FROM IrgendeineTabelle WHERE Feld1 = True;"

bzw. wenn die Abfragen schon existieren einfach den Namen der Abfrage
Forms!IrgendeineForm.Recordsource = "Table/Query"
Forms!IrgendeineForm.Recordsource = "Abfrage1"

oder du verwendest den Filter:
Forms!IrgendeineForm.Filter = "Feld1 = True"
Forms!IrgendeineForm.FilterOn = True

Preacher 12.10.2006 15:47

Hi Hussl!
THX für die Info!

Ja genau, soll so aussehen, dass ich ein Formular habe mit einer Auswahlmöglichkeit im oberen Bereich angedacht.
Von den über 200 Datensätzen soll dann nur anhand das Auswahl die Anzahl der Datensätze eingeschräkt werden:
Auswahl 1 : nur Datensätze anzeigen, bei denen Spalte 11 = True
...
...
Auswahl 4 : nur Datensätze anzeigen, bei denen Spalte 14 = True

Wo muss ich denn die SQL-Statements reinschreiben?
Klingt logisch, hatte versucht dies ins Steuerlement (Kombinationsfeld) reinzuschreiben, da hat sich Access vertschüsst.

Hussl 12.10.2006 16:18

Nehmen wir an, du hast ein Kombinationsfeld das cmbKombo heißt. Dann rechtsklickst du in der Entwurfsansicht auf das Kombofeld und gehst auf den Reiter Ereignis. Dann auf "nach Aktualisierung" und wählst [Ereignisprozedur]. Im Codefenster gibst du dann ein:
Code:

Select Case Me.cmbKombo
  Case "Feld11": Me.Filter = "Feld11 = True"
  Case "Feld12": Me.Filter = "Feld12 = True"
  Case "Feld13": Me.Filter = "Feld13 = True"
  Case "Feld14": Me.Filter = "Feld14 = True"
  Case Else: Exit Sub
End Select
Me.FilterOn = True

In dem Kombinationsfeld müssen natürlich die richtigen Werte enthalten sein. Evtl. per Werteliste händisch eintragen.

Natürlich führen viele Wege nach Rom und das ist nur eine Variante ;-)

Preacher 12.10.2006 17:19

Ich habe nun in ein existierendes Formular probehalber den Code eingebaut:
Case "<Otionsname>": Me.Filter = "<Feldname>= True"

Das Optionsfeld hat eine Wertetabelle mit <Optionsname>, die in kein Feld geschrieben wird.

Tut aber leider nichts. Stehe leider echt an.

Hussl 12.10.2006 17:32

Hab dir auf die schnelle eine Musterdatenbank erstellt. Kannst ja mal schauen, ob du damit weiterkommst.

Preacher 13.10.2006 11:32

Hey, danke Dir vielmals!
Sieht verdammt gut aus, jetzt werde ich mir den Code rauspicken und sehen, wie ich das in meine DB integrieren kann. Muss heute etwas anderes machen, gebe Dir am Mo Vollzugsmeldung!

Also nochmals danke und LG


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag