PDA

Vollständige Version anzeigen : Filter für das Unterformular stört Requery?


Marsu65
02.08.2005, 19:47
In einem ungebundenen HF habe ich ein UF(Endlos) welches aufgrund bestimmter Auswahlkriterien seine Daten aus einer Abfrage zieht. In diesem Unterformular ist pro Datensatz eine Checkbox mit der man gewünschte Datensätze auswählen kann.
Ändern sich die Auswahlkriterien im HF werden alle Chekboxen zurückgesetzt (False) und das UF aufgrund der neuen Kriterien erneut abgefragt, funktioniert superprächtig.
Als zusätzliches Feature wollte ich nun einbauen, dass man sich im UF nur die angewählten Datensätze (chkBox = True) anzeigen lassen kann.
Optionsfeld ins HF eingebaut mit zwei Optionen 1.Zeige alle, 2.Zeige nur ausgewählte. Ändert sich die Option, wird mittelsMe!Unterformular.Form.Filter = "[In_Auswahl] = True"
Me!Unterformular.Form.FilterOn = Trueim UF gefiltert.
Setzt man die Option nun wieder umMe!Unterformular.Form.FilterOn = Falsezeigt das UF auch wieder alle Datensätze die den Auswahlkriterien entsprechen.

Problem: Ändert man die Auswahlkriterien nun nach einem solchen Filtervorgang wird das UF nicht mehr aktualisiert, sondern zeigt immer noch die alten Daten an. Wie kann das ??? :(

Kurrios ist zudem, Filtert man nun im Formular und schmeisst den Filter wieder raus, kommen die korrekten Datensätze. Dann hab ich mir gedacht, setzte ich erst mal als Workaround ein FilterOn =True und FilterOn = False hinter das Requery des UF´s im Code .... wirkungslos.

Natürlich könnte ich schon in der Abfrage das Kriterium mit einbauen, will ich aber nicht, der SQLschweif ist schon lang genug :mrcool:

Marsu65
02.08.2005, 21:54
Da der Fehler reproduzierbar ist werde ich wohl nicht drum rum kommen, die Abfrage selbst zu erweitern. :mad:
Ein kleines Bsp. zu o.a. Fehler anbei.
Wird ein Kriterium gewählt wird, werden im UF alle Datensätze mit Zahlen die größer als Kriterium sind angezeigt. Betätigt man die Optionen funktioniert das ganze nicht mehr. Vielleicht findet ja noch jemand ´ne Lösung.

jens05
03.08.2005, 06:33
Hallo,
verzichte doch ganz auf das Abfragekriterium und erweitere den Formfilter

Option Compare Database
Option Explicit

Private Sub Kombinationsfeld0_AfterUpdate()
' Me.UF.Form.FilterOn = False
' Me.UF.Requery
ufo_filter
End Sub

Private Sub Rahmen6_Click()
'If Me.Rahmen6 = 1 Then
'Me.UF.Form.FilterOn = False
'Else
'Me.UF.Form.FilterOn = True
'End If
ufo_filter
End Sub

Private Sub ufo_filter()
If Me.Rahmen6 = 1 Then
Me.UF.Form.Filter = "Zahl>" & Me!Kombinationsfeld0
Else
Me.UF.Form.Filter = "Check=true And Zahl>" & Me!Kombinationsfeld0
End If
Me.UF.Form.FilterOn = True
Me.Text13 = Me.UF.Form.RecordsetClone.RecordCount
End Sub

Marsu65
03.08.2005, 10:14
Hi Jens,
auf die Abfrage kann ich in der originalen Anwendung nicht verzichten, da mehrere Kriterien vorher ausgewertet werden müssen; ist ein etwas komplexeres SQL-Konstrukt. Hab dann gedacht, dass es irgendwo anders in der Anwendung hakt und deshalb dieses Minibeispiel erstellt. Inzwischen hab ich den zusätzlichen Filter auch mit in die Abfrage eingebaut.
Nur, merkwürdig ist es schon, dass sich der Filter bei Unterformularen nicht korrekt entfernen lässt.