Discussion:
Filter auf ein Recordset
(zu alt für eine Antwort)
Dietmar Thesing
2007-01-13 14:31:14 UTC
Permalink
Hallo liebe Access-Freunde,
ich hab ein Recordset und krieg den Filter dadrauf nicht hin. Hab
auch schon gegurgelt und ein ähnliches Problem, aber keine Lösung
gefunden. Den Code habe ich entsprechend der OH geschrieben:

Set frmRecSet = Me
Set rs = frmRecSet.Recordset
rs.Filter = "ZVAID" & " = " & Me!ctrZVAID
Set rsFilter = rs.OpenRecordset

Das ursprüngliche rs hat 8 Datensätze, es sollte nur noch der
passende überbleiben. Tut aber nicht, es bleiben acht. Ist der
Filter falsch geschrieben, (mach ich nicht oft), oder woran kann es
sonst liegen?

Danke für eure Hilfe,
Gruß
Dietmar
Mark Doerbandt
2007-01-13 16:52:46 UTC
Permalink
Hallo, Dietmar,
Post by Dietmar Thesing
Set frmRecSet = Me
Set rs = frmRecSet.Recordset
rs.Filter = "ZVAID" & " = " & Me!ctrZVAID
Set rsFilter = rs.OpenRecordset
warum sollte .OpenRecordset den Filter beruecksichtigen?
Mit .Filter filterst Du doch rs...

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Dietmar Thesing
2007-01-13 17:23:06 UTC
Permalink
Hallo Mark,
danke für deine Antwort.
Post by Mark Doerbandt
Hallo, Dietmar,
Post by Dietmar Thesing
Set frmRecSet = Me
Set rs = frmRecSet.Recordset
rs.Filter = "ZVAID" & " = " & Me!ctrZVAID
Set rsFilter = rs.OpenRecordset
warum sollte .OpenRecordset den Filter beruecksichtigen?
Mit .Filter filterst Du doch rs...
So steht's in der OH (Filter Recordset):

Function FilterField(rstTemp As Recordset, _
strField As String, strFilter As String) As Recordset

' Den Filter auf das angegebene Recordset-Objekt setzen,
' und dann ein neues Recordset-Objekt öffnen.
rstTemp.Filter = strField & " = '" & strFilter & "'"
Set FilterField = rstTemp.OpenRecordset
End Function

Wie krieg ich denn sonst den Filter in das Recordset rein?

Die andere Variante mit einer Abfrage, die nur den gewünschten
Datensatz liefert, funktioniert auch nicht. In der Abfrage habe ich
zwei Kriterien eingetragen mit Bezug auf zwei Steuerelemente im
Formular. In der folgenden Zeile:
Set rs = db.OpenRecordset("qufrmZ_UFArbeiten_PicArbeit")
bekomme ich dann die Fehlermeldung "es wurden zwei Parameter
erwartet, aber zu wenig Parameter übergeben."
Die Abfrage an sich zeigt die korrekten Datensätze an, wenn der
entsprechende Code *nicht* läuft.

Manchmal klappt einfach alles nicht. Stöhn. ;-)
Ich versuchs jetzt mit einer Parameterabfrage, der ich die Parameter
direkt übergebe. Es gibt ja immer mehrere Möglichkeiten

HTH
Dietmar
Jörg Ackermann
2007-01-13 18:59:45 UTC
Permalink
Hi,
Post by Mark Doerbandt
Hallo, Dietmar,
Post by Dietmar Thesing
Set frmRecSet = Me
Set rs = frmRecSet.Recordset
rs.Filter = "ZVAID" & " = " & Me!ctrZVAID
Set rsFilter = rs.OpenRecordset
warum sollte .OpenRecordset den Filter beruecksichtigen?
Weil man ein DAO.Recordset so filtert? ;-)
Post by Mark Doerbandt
Mit .Filter filterst Du doch rs...
Nö, tut er nicht.

@Dietmar

Teste mal, ob wirklich gefiltert wird:

Dim rs As DAO.Recordset, _
rsFilter As DAO.Recordset

Set rs = Me.Recordset
rs.Filter = "ZVAID=" & Me!ctrZVAID

MsgBox "RS: " & rs.RecordCount

Set rsFilter = rs.OpenRecordset
rsFilter.MoveLast

MsgBox "RS_Filter: " & rsFilter.RecordCount


Wird 1 gezeigt? Dann wird gefiltert.

Falls Du im Formular filtern möchtest, verwende doch
einfach den Formularfilter.

Me.Filter = "ZVAID=" & Me!ctrZVAID
Me.FilterOn = True

Gruß
Dietmar Thesing
2007-01-13 19:47:10 UTC
Permalink
Hallo Jörg,
danke, funktioniert, d.h. filtert!
Zum Unterschied zu meiner Variante siehe unten.

"Jörg Ackermann" <***@gmx.de> schrieb:
...
Post by Jörg Ackermann
Post by Dietmar Thesing
Set frmRecSet = Me
Set rs = frmRecSet.Recordset
rs.Filter = "ZVAID" & " = " & Me!ctrZVAID
Set rsFilter = rs.OpenRecordset
...
Post by Jörg Ackermann
Dim rs As DAO.Recordset, _
rsFilter As DAO.Recordset
Set rs = Me.Recordset
rs.Filter = "ZVAID=" & Me!ctrZVAID
...

Der einzige Unterschied zu meiner fehlerhaften Variante, den ich
sehen kann, ist, dass da keine Leerzeichen um das Gleichheitszeichen
kommen. Das war wohl der Fehler. Mit den Leerzeichen hat's nicht
gefiltert. Danke!

.....
Post by Jörg Ackermann
Falls Du im Formular filtern möchtest, verwende doch
einfach den Formularfilter.
Ging nicht, weil das Formular den richtigen Datensatz zeigt, ich
brauchte das Recordset um es an meine Bilder-Anzeige-Funktion
weiterzureichen:
fcBilderAnzeigen 1, "picAE", rs, frmBilder

Danke, herzlicher Gruß,
Dietmar
Joerg Ackermann
2007-01-13 19:35:05 UTC
Permalink
Hallo,
Post by Mark Doerbandt
Mit .Filter filterst Du doch rs...
...wenn es ein ADODB.Recordset ist.

Vielleicht verrät uns Dietmar, welchen Recordsettyp er
verwendet.

Gruß
Dietmar Thesing
2007-01-13 19:50:30 UTC
Permalink
Hallo Jörg, hallo Mark,
Post by Mark Doerbandt
Hallo,
Post by Mark Doerbandt
Mit .Filter filterst Du doch rs...
...wenn es ein ADODB.Recordset ist.
Vielleicht verrät uns Dietmar, welchen Recordsettyp er
verwendet.
Oh, sorry. DAO. Hätte wohl doch nicht so sparsam sein sollen und die
weiter oben stehenden Deklarationen mitliefern.
Aber funktioniert jetzt,
danke euch beiden.

Liebe Grüße
Dietmar
Access XP

Loading...