Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage aus einen gefilterten Endlosformular erstellen

Begonnen von Mykis, Oktober 15, 2014, 17:36:29

⏪ vorheriges - nächstes ⏩

Mykis

Hallo Access-Freunde,

ist es möglich aus einen gefilterten Endlosformular eine Abfrage zu erstellen, die diese Filterung übernimmt? Aus dieser Abfrage möchte ich dann noch eine Duplikatsabfrage machen auf der ein Unterbericht basiert, aber das ist ja kein Problem.

Beste Grüße
Frank



DF6GL

Hallo,


sicher...

lies die Filter-Eigenschaft des Forms aus und nimm den Ausdruck als Where-Condition in einer Abfrage...

Mykis

Hallo Franz,

vielen Dank für deine Antwort. Bei mir steht zwar nach den nun 100. Beitrag "Access-Profi", davon bin ich aber noch weit entfernt!
Vielleicht habe ich mich unklar ausgedrückt: Nach erfolgter Filterung in meinem Endlosformular möchte ich über VBA automatisch eine Abfrage mit diesen Filter erstellen lassen.

LG
Frank

DF6GL

Hallo,

naja, dann geht es genauso....

Meine Frage aber wäre, wozu eigentlich eine (gespeicherte?) Abfrage erzeugen?

Vermutlich geht alles einfacher...?

Mykis

Hallo Franz,

in meinem Endlosformular werden erst mal alle Pilzfunddaten (derzeit ca. 20 000) der Datenbank angezeigt. Diese kann man beliebig filtern und sortieren, z. B. nach Fundort oder Wirt etc. Nach dieser Auswahl kann man einen Bericht aufrufen, der diese ausgewählten Datensätze zeigt. Im Bericht wird die Anzahl der Funde (Datensätze) angezeigt. Nun möchte ich aber noch die Anzahl der Arten (viele kommen beispielsweise mehrfach an unterschiedlichen Fundorten oder mit verschiedenen Wirten vor) anzeigen. Die Anzeige der Anzahl der Pilzarten möchte ich über einen Unterbericht einfügen. Mein Problem ist nun, das dieser Unterbericht auf die im Formular gefilterten Datensätze zugreifen muß, wo er z. B. über eine Duplikatsabfrage die Artenzahl ermitteln soll.

LG
Frank

DF6GL

#5
Hallo,

wenn Du wirklich das Formular filterst  (mit Me.Filter = <<Where-Condition>>), dann könnte das so ablaufen:

Erstell zunächst eine (gespeicherte) Abfrage ("abf_BerichtAbfrage), die der Datenherkunft des Forms entspricht und ohne ein Kriterium.

Kopier den SQL-String aus der SQL-Ansicht des Abfrageentwurfes und füge den wie weiter untern gezeigt in den Prozedur-Code ein.

Als Ereignisprozedur (welche ist noch zu klären) ergibt sich dann etwa dieses:


Sub Form_Current()
Dim strSQL as String, strKrit as String

strSQL =" Hier die Kopie des SQL-Strings " 
strKrit = Me.Filter
strSQL = Replace(strSQL, ";", " ")
DBEngine(0)(0).QueryDefs("abf_BerichtAbfrage").SQL = strSQL & " Where " & strKrit

End Sub


Im Unterbericht verwendest Du die o. g. Abfrage als Datenherkunft.

Mykis

Chapeau Franz,

habe nun deinen Code in das Formular eingefügt:
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Dim strSQL As String, strKrit As String

strSQL = "SELECT Vorb_Zusammenfassung_1.art_nr, Vorb_Zusammenfassung_1.Fundort, Vorb_Zusammenfassung_1.bis, Vorb_Zusammenfassung_1.von, Vorb_Zusammenfassung_1.organ_substrat, Vorb_Zusammenfassung_1.substratzustand, Vorb_Zusammenfassung_1.wuchsstelle, Vorb_Zusammenfassung_1.sonderstandort, Vorb_Zusammenfassung_1.Vollname, Vorb_Zusammenfassung_1.erfasser, Vorb_Zusammenfassung_1.bestimmer, Vorb_Zusammenfassung_1.sammler, Vorb_Zusammenfassung_1.pilzwirt, Vorb_Zusammenfassung_1.stadium, Vorb_Zusammenfassung_1.aufnahmedatum FROM Vorb_Zusammenfassung_1;"
strKrit = Me.Filter
strSQL = Replace(strSQL, ";", " ")
DBEngine(0)(0).QueryDefs("Vorb_Zusammenfassung_3").SQL = strSQL & " Where " & strKrit

End Sub


Funktioniert bestens. Danke!

LG
Frank