VB6 - Recordset.Filter

Hallo,
ich mal wieder :smile:

Ich habe noch ein letztes Problem wenn das gelöst ist bin ich fertig :smile:

So es geht sich um folgendes…

Wie bereits in einem Älteren Post angesprochen, will ich einen Filter in mein RS einbauen.

Dieser soll die zwei Spalten AB1 und AB2 Filtern.
Diese sollen unabhängig voneinander gefiltert werden.
Also mit einem „TextBoxAB1_Change“ ereignis für jeden eingegebenen wert zb:„A“ alle Zeilen aus dem Recordset Filtern in denen in AB1 ein A Vorkommt wie ZB A4.

Mein Ansatz war bis jetzt dieser:
CODE:

Private Sub FilterAB1txt_Change()
Dim rsFilter As String

rsMain.Filter = "AB1 = " & FilterAB1txt.Text & „“
rsMain.Filter = True

End Sub

END CODE

Bei dieser Variante kommt alledings ein Fehler. Und zwar Folgender:
„Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar.“
Dieser Fehler ist bei der 1. Anweisung.

Könnte mir gnädigerweise einer Helfen und n kleinen bis mittelgroßen Denkanstoß geben der mir die Problematik n bisl erklärt und n Lösungsansatz veranschaulichen?

Danke schonmal im Vorraus.
grüße
digi …

Hallo,

rsMain.Filter = "AB1 = " & FilterAB1txt.Text & „“

von welchem Typ ist das Feld AB1? Nach Deiner Syntax ‚Zahl‘ und in FilterAB1txt.Text muß eine Zahl stehen. Ist es ein String, mußt Du schreiben:

rsMain.Filter = „AB1 = '“ & FilterAB1txt.Text & „’“

Gruß, Rainer

So schön. Es Funktioniert. Nur wie setz ich den Filter zurück?
Ich hab versucht mir ein neues RS (rsFilter) zu Deklarieren das rsMain enthält. Das geht. Das rsFilter weise ich dem DGV zu. Aber ich kann es nicht zurück schreiben. Der Filter bleibt aktiv bzw beim Butten click Filter Löschen, ist die liste leer.

Warum auch immer *grml*
Gibt es villeicht eine einfache funktion oder sowas wie
rsFilter.Filter = Disablel oder sowas in der art?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

So schön. Es Funktioniert.

find’ ich auch schön. :smile:

Nur wie setz ich den Filter zurück?

hmmm, noch nie gemacht und ich kann auch gerade nicht probieren.
Hast Du schon mal

.Filter = None

oder

.Filter = NULL

probiert? Ich würde erwarten, daß eins von Beiden geht.

Gruß, Rainer

Ne geht net … habs proBIERt … aber macht nix kommen nur fehler das er den mist nich kennt usw…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Ne geht net … habs proBIERt … aber macht nix kommen nur
fehler das er den mist nich kennt usw…

schade. :frowning: Dann muß ich mal suchen, ob ich das finde, geht aber nicht gleich.

Gruß, Rainer

Hi,

ich habe doch Zeit gefunden. :smile:

Das Einzige was ich gefunden habe, ist ein .Refresh auf die Datenbank.

Option Explicit

Private Sub Command1\_Click()
 Dim su As String
 su = "Coil\_Stack\_Pos = 1"
 Adodc1.Recordset.Filter = su
End Sub

Private Sub Command2\_Click()
 Adodc1.Refresh
End Sub

… oder einen neuen Filter setzen. Bei Strings würde " … ‚ZzzzZ‘" vermutlich wieder alles anzeigen. Wenn nur Zahlen >= 0 vorkommen, dann eben Filtern >=0 … (.Refresh ist bei großen Datenbanken langsam.)

Gruß, Rainer

Hi!

Nur wie setz ich den Filter zurück?

Also das geht so:

rsMain.FilterOn = False

und statt
rsMain.Filter = True
soltest du auch
rsMain.FilterOn = True
schreiben, oder versteh ich was falsch?!

Sorry für den späten Post, hab hier gestern nicht reingeschaut.

Gruß Phil

Ne das geht nich. FilterOn diese Funktion gibt es nicht in VB6.

Danke Trotzdem

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

So ich habs hinbekommen mit hier und da n haufen abfragen ob n filter da is hab dann die aktualisierung und alle events mit if abfragen versehen die checken ob er gerade die checkboxen löscht hab
rsMain.Filter = „“ gemacht davor MachNix = True danach MachNix = False
Und fertig : )

Naja jetz brauch ich nur noch die verknüpfung von den abfragen.
Die 1. Abfrage

If FilterAB2txt.Text = "" Then
 rsFilter.Filter = "USER\_AB1 = '" & FilterAB1txt.Text & "'"
Else
 rsFilter.Filter = "USER\_AB1 = '" & FilterAB1txt.Text & "'
 AND USER\_AB2 = '" & FilterAB2txt.Text & "'"
End If

Die 2. Abfrage

If FilterAB1txt.Text = "" Then
 rsFilter.Filter = "USER\_AB2 = '" & FilterAB2txt.Text & "'"
Else
 rsFilter.Filter = "USER\_AB1 = '" & FilterAB1txt.Text & "' AND USER\_AB2 = '" & FilterAB2txt.Text & "'"
End If

Sooo zur erklärung. Wenn ich zb A eingebe, soll alles mit A kommen. Bei SQL währe es --> like ‚%" & suchetxt.Text & "%‘

 Dein Code 

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ok herr Mod :wink:

Sooo leute danke nochmal jetz hab ichs hinbekommen :smile:
Und zwar:

If FilterAB2txt.Text = "" Then
 rsFilter.Filter = "USER\_AB1 like '\*" & FilterAB1txt.Text & "\*'"
Else
 rsFilter.Filter = "USER\_AB1 like '\*" & FilterAB1txt.Text & "\*' AND USER\_AB2 like '\*" & FilterAB2txt.Text & "\*'"
End If

Es lag an * einfach und simpel an * ^^ man man man was ist das nur für eine welt :smiley:

Nuja :wink: danke nochma für die kompetente und fixe hilfe hier! Echt klasse Comunity :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

ok herr Mod :wink:

*grummel*

Sooo leute danke nochmal jetz hab ichs hinbekommen :smile:
Und zwar:

ohne natürlich …

If FilterAB2txt.Text = "" Then
 rsFilter.Filter = "USER\_AB1 like '\*" & FilterAB1txt.Text & "\*'"
Else
 rsFilter.Filter = "USER\_AB1 like '\*" & FilterAB1txt.Text & "\*' AND USER\_AB2 like '\*" & FilterAB2txt.Text & "\*'"
End If

Es lag an * einfach und simpel an * ^^ man man man was ist das
nur für eine welt :smiley:

ahhhhh! Danke für den Kommentar, merk’ ich mir. :smile:

Nuja :wink: danke nochma für die kompetente und fixe hilfe hier!
Echt klasse Comunity :wink:

Schön wenn’s Dir bei uns gefällt, dann kommst Du ja wieder. :smile:

Gruß, Rainer