Filterung mit Source Filter mit 2 Kriterien !

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Kooghocker.

    Filterung mit Source Filter mit 2 Kriterien !

    Hallo liebe VBler,

    mein Problem besteht darin, dass ich eine Filterung vornehmen möchte. Nach einem Kriterium kein Problem und funktioniert, allerdings möchte ich nach 2 Kriterien filtern und im Moment scheint es so, dass er nach der Anweisung nach dem ersten Kriterium zu filtern das zweite ausführt und die Filterung nach dem ersten "Vergisst". Wie kann ich also die Filterung mit einer und-Anweisung oder dergleichen realisieren?

    VB.NET-Quellcode

    1. Me.StufenDet_DT.Clear()
    2. StufenDet_DA.Fill(StufenDet_DT)
    3. Me.StufenDet_Source.DataSource = StufenDet_DT
    4. If Not (Me.StufenGridView.CurrentRow.IsNewRow) Then
    5. Me.StufenDet_Source.Filter = "ID_Getriebestufentyp =" & Me.StufenGridView.CurrentRow.Cells(1).Value()
    6. Me.StufenDet_Source.Filter = "rel_Getriebe_Getriebestufentyp.ID_Getriebe =" & Me.StufenGridView.CurrentRow.Cells(0).Value()
    7. Else
    8. Me.StufenDet_Source.Filter = "ID_Getriebestufen =Null"
    9. End If

    MfG
    Hallo, versuch´s mal so:

    VB.NET-Quellcode

    1. Me.StufenDet_DT.Clear()
    2. StufenDet_DA.Fill(StufenDet_DT)
    3. Me.StufenDet_Source.DataSource = StufenDet_DT
    4. If Not (Me.StufenGridView.CurrentRow.IsNewRow) Then
    5. Me.StufenDet_Source.Filter = "ID_Getriebestufentyp =" & Me.StufenGridView.CurrentRow.Cells(1).Value()
    6. Me.StufenDet_Source.Filter = Me.StufenDet_Source.Filter & " rel_Getriebe_Getriebestufentyp.ID_Getriebe =" & Me.StufenGridView.CurrentRow.Cells(0).Value()
    7. Else
    8. Me.StufenDet_Source.Filter = "ID_Getriebestufen =Null"
    9. End If
    Das funktioniert leider nicht. Ich bekomme dann die folgende Exception Meldung:
    {"Syntaxfehler: Fehlender Operand nach dem Operator 'rel_Getriebe_Getriebestufentyp'."}

    Ich habe beide Filtermethoden einzeln getestet und sie scheinen beide für sich zu funktionieren.

    Der Versuch mit:

    VB.NET-Quellcode

    1. Me.StufenDet_Source.Filter = "ID_Getriebestufentyp =" & Me.StufenGridView.CurrentRow.Cells(1).Value() And "rel_Getriebe_Getriebestufentyp.ID_Getriebe =" & Me.StufenGridView.CurrentRow.Cells(0).Value()

    , also mit einer AND Verknüpfung, brauchte diese Fehlermeldung:
    {"Ungültige Konvertierung von der Zeichenfolge ID_Getriebestufentyp =4 in Typ Long."}

    Kennt vielleicht jemand eine Alternative/einen Hinweis?

    Könnte ich dies evtl. mit der Filterung in einer DataView erledigen und nicht über die Source? Wie wäre denn dann in dem Fall die Filterbedingung. Ich habe mich mal daran versucht, aber es klappte bei mir nicht aufgrund der "CurrentRow.Cells(0).Value()" Filterbedinung.

    Vielen Dank im voraus

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Kooghocker“ ()

    Ah, ok, ich habs, hoffe ich !!!

    Nach rumbrowsen im Forum bin ich auf etwas gestossen, was mir weiterhalf:
    Formularfilter via VBA

    Somit ist auch dieser Filter ein kompletter String und kann daher wie ein Filter im GridView aufgebaut werden.

    VB.NET-Quellcode

    1. Me.StufenDet_Source.Filter = "ID_Getriebestufentyp =" & Me.StufenGridView.CurrentRow.Cells(1).Value() & "and rel_Getriebe_Getriebestufentyp.ID_Getriebe =" & Me.StufenGridView.CurrentRow.Cells(0).Value()

    Trial and Error führt letztendlich auch zum Ziel !

    Die Anweisung scheint nun zu funktionieren und ich hoffe nicht, dass ich etwas übersehen habe.

    Ich danke denen, die sich Gedanken gemacht haben! ?(