Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Username am September 03, 2013, 16:02:36

Titel: Mehrfachfilter Access 2010
Beitrag von: Username am September 03, 2013, 16:02:36
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
Titel: Re: Bug bei Mehrfachfilter Access 2010
Beitrag von: DF6GL am September 03, 2013, 20:55:29
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')"
Titel: Re: Bug bei Mehrfachfilter Access 2010
Beitrag von: Username am September 05, 2013, 08:35:24
*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