Formular filtern mit mehreren Kombifeldern

BS: Win2000, Access2003

Hallo,

ich habe hier schon so einiges an Tips gefunden, dafür erstmal ganz vielen Dank!
Jetzt komme ich aber einfach nicht weiter - mein Problem ist folgendes:

Ich habe ein Formular, das auf einer Abfrage basiert.

Ich möchte die Datensätze im Formular filtern, und zwar nach 2 Kriterien, Steelgrade und Surf.

Dafür habe ich 2 Kombifelder „KombiSteelgrade“ und „KombiSurf“ im Formularkopf angelegt. Die Kombi-Felder sind gefüllt mit Daten aus ihren entsprechenden Untertabellen (tblSteelgrade & tblSurf). Außerdem gibt es noch das Kombifeld cbotyp (Suchbedingung), mit dem man zwischen AND und OR wählen kann (Standardwert ist immer AND).

Jetzt möchte ich, dass, wenn ich in beiden Kombifeldern etwas ausgewählt habe, auf den Button „Jetzt filtern“ klicken, und dann soll anschließend das Formular entsprechend den beiden Kombifeldern gefiltert werden.

Er macht mir das aber einfach nicht! Ich weiß einfach nicht, woran das liegen kann.

Hier ist mal der Code, vom Feld „Jetzt filtern“:

Code:

Private Sub Jetztfiltern_Click()

Dim txtSteelgrade As String
Dim txtSurf As String
Dim strSQL As String
Dim strtyp As String
Dim strSQLwhere As String

strtyp = " " & Trim(Me.cboTyp) & " "

If Not IsNull(Me.KombiSteelgrade.Value) And Me.KombiSteelgrade.Value > 0 Then
txtSteelgrade = strtyp & " [Steelgrade]=’" & Me.KombiSteelgrade.Value & „’“
Else
txtSteelgrade = „“
End If

If Not IsNull(Me.KombiSurf.Value) And Me.KombiSurf.Value > 0 Then
txtSurf = strtyp & " [Surf]=’" & Me.KombiSurf.Value & „’“
Else
txtSurf = „“
End If

strSQLwhere = txtSteelgrade & txtSurf

’ If Trim(strSQLwhere) „“ Then
’ If Left(strSQLwhere, Len(strtyp)) = strtyp Then
’ strSQLwhere = Mid(strSQLwhere, Len(strtyp))

’ End If
’ Else
’ MsgBox „Keine Auswahl“
’ Exit Sub
’ End If

strSQL = "Select [tblArticle].[Steelgrade], [tblArticle].[Surf] from tblArticle WHERE "
strSQL = strSQL & strSQLwhere

Me.Filter = „[Steelgrade]=’“ & Me.KombiSteelgrade & „’“ And „[Surf]=’“ & Me.KombiSurf & „’“

Me.FilterOn = True

End Sub

Da kommt dann aber die Fehlermeldung: „Typen unverträglich“ und markiert mir beim Debuggen die Zeile ab "Me.Filter = „Select [tblArticle]. etc“

Das wäre toll, wenn mir jemand irgendnen Hinweis geben könnte, was ich da falsch mache…

Ganz vielen Dank schon einmal!

Liebe Grüße,
Natsch

Hallo Natsch,

dein Denkfehler liegt in der Filterbedingung:

Der Filter IST die Bedingung! NICHT der SQL-STRING MIT Bedingung!

Private Sub Jetztfiltern_Click()

DIM meinFilter

meinFilter = „“

IF len(Me.KombiSteelgrade) >0 and len(Me.KombiSurf) >0 then
meinFilter = „[Steelgrade]=’“ & Me.KombiSteelgrade & „’ " &
Me.cboTyp & " [Surf]= '“ & Me.KombiSurf & „’“
ELSEIF len(Me.KombiSteelgrade) >0 then
meinFilter = „[Steelgrade]=’“ & Me.KombiSteelgrade & „’“
ELSEIF len(Me.KombiSurf) >0 then
meinFilter = „[Surf]= '“ & Me.KombiSurf & „’“
ELSE
EXIT Function
ENDIF

Me.Filter = meinFilter
Me.FilterOn = True
Me.Requery

End Sub

Da kommt dann aber die Fehlermeldung: „Typen unverträglich“
und markiert mir beim Debuggen die Zeile ab "Me.Filter =
„Select [tblArticle]. etc“

logo, du willst einen SQL-String als Filter ausführen, das geht nicht.

Das wäre toll, wenn mir jemand irgendnen Hinweis geben könnte,
was ich da falsch mache…

schau dir einfach mal den Code von mir an :smile:
Ungetestet und ohne Gewähr!

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Netwolf, tausendmal DANKE!!!
Das klappt! Danach habe ich jetzt schon ewig gesucht!
Bin gerade total begeistert!

Liebe Grüße und noch einen schönen, sonnigen Tag!
Natsch