Hey Leute!
Mir ist ein Problem mit Acc 2010 aufgefallen.
Ich habe ein Formular zum Filtern eines zweiten Formulars. Im 1.Formular werden mehrere Kriterien zur Filterung übergeben.
Forms![MeinFormular].Filter = "ID = 1 or ID = 2 and Name = Schmidt or Name = Peter" (Beispielhaft)
Bei einer Filterung dieser Art filtert Acc nur den Namen "sichtbar", aber auch nicht gefilterte Datensätze werden mit angezeigt. Wenn man jedoch manuell bei ID die Filterung öffnet, sind nur die übergebenen Parameter aktiviert und nach Klick auf "Okay" wird auch richtig gefiltert.
Es lässt sich per Requery nicht lösen, ich habe nur die manuelle Variante entdeckt.
Hat jemand eine bessere Idee oder weiß, warum Acc da Mist baut?
#edit: es ist doch kein Bug, sondern das Problem sitzt mal wieder vor dem PC. Die Lösung von DF6GL veranschaulicht das richtige Beispiel#
Meine richtige Abfrage (funktioniert auf beschriebene Weise, nur als klareres Beispiel):
Dim strFrmName As String
Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then strFrmName = Me.OpenArgs
Dim lngCount As Long
For lngCount = 0 To Me!lst_Taetigkeit.ListCount - 1
Me!lst_Taetigkeit.Selected(lngCount) = True
Next lngCount
End Sub
Sub bt_Filtern_Click()
Dim Criteria As String
Dim Criteriam As String
Dim Filter As String
Dim NameFirma As String
Dim NameTaetigkeit As String
Dim I As Variant
Dim h As Variant
'1. Build criteria string from selected items in list box.
Criteria = ""
For Each I In Me.lst_Firma.ItemsSelected
If Criteria <> "" Then
Criteria = Criteria & " OR "
End If
Criteria = Criteria & "FirmaID_F=" _
& Me.lst_Firma.Column(0, I) & ""
NameFirma = NameFirma & "Firma = " _
& Me.lst_Firma.Column(1, I) & "" & vbCrLf
Next I
'2. Build criteria string from selected items in list box.
Criteriam = ""
For Each h In Me.lst_Taetigkeit.ItemsSelected
If Criteriam <> "" Then
Criteriam = Criteriam & " OR "
End If 'Guck mal hier
Criteriam = Criteriam & "TaetigkeitID_F= " & Me.lst_Taetigkeit.Column(0, h) & ""
NameTaetigkeit = NameTaetigkeit & "Tätigkeit = " & Me.lst_Taetigkeit.Column(1, h) & "" & vbCrLf
Next h
' Filter the form using selected items in the list box.
Filter = Criteria & " and " & Criteriam
Me.txtFirma = NameFirma & "" & NameTaetigkeit
'Formular direkt filtern
Forms(strFrmName).FilterOn = False
Forms(strFrmName).Filter = Filter
Forms(strFrmName).FilterOn = True
Forms(strFrmName).Requery
'Formular gefiltert öffnen
'DoCmd.OpenForm frm, , , Filter
End Sub
LG Username
Hallo,
wenn ich das recht verstehe, baut nicht Access Mist, sondern Du ... ;) ;) ;)
Beispielhaft muss das so korrekt lauten:
Forms![MeinFormular].Filter = "(ID = 1 or ID = 2) and ([Name] = 'Schmidt' or [Name] = 'Peter')"
*Im Erdboden Versink* ::)
Ich ziehe alle Anschuldigungen zurück und behaupte das Gegenteil ;D :D Du hast Recht, ich habe Mist gebaut.
Danke für den dezenten Hinweis! Es haben in meiner Abfrage tatsächlich die fehlenden Klammern den Fehler produziert :P