vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Filterung Suchfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 20.11.09 10:35

Hi Angelika,

So könntest du sowas machen. Ich habe hier den TextBoxen die gleichen Namen gegeben wie die Spalten in einer DataTable. Dann in Button1_Click() wird ein Filter-Ausdruck quasi automatisch zusammengebaut.

Hier werden Strings und Integers berücksichtigt. Man könnte das zB für DateTime ausdehnen.

Public Class Form1
    Private dt As New DataTable("Data")
    Private bs As BindingSource
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        ' DataTable Spalten definieren
        dt.Columns.Add("Col1", GetType(Integer))
        dt.Columns.Add("Col2", GetType(String))
 
        ' Daten einfügen
        For i As Integer = 0 To 3
            Dim dr As DataRow = dt.NewRow()
            dr(0) = i + 1
            dr(1) = "data" & i.ToString()
            dt.Rows.Add(dr)
        Next
 
        ' Databinding setzen
        bs = New BindingSource(dt, Nothing)
        DGV.DataSource = bs
    End Sub
 
    ' Filtern
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Dim filter As String = String.Empty
        For i As Integer = 0 To dt.Columns.Count - 1
            Dim dc As DataColumn = dt.Columns(i)
            Dim tb As TextBox = Controls(dc.ColumnName)
            If tb IsNot Nothing AndAlso tb.Text <> String.Empty Then
                If filter <> String.Empty Then
                    filter &= " And "
                End If
                filter &= dc.ColumnName
                If dc.DataType Is GetType(String) Then
                    filter &= " Like '%" & tb.Text & "%'"
                Else
                    filter &= "=" & tb.Text
                End If
            End If
        Next
        If filter <> String.Empty Then
            Try
                bs.Filter = filter
            Catch
                MsgBox("Ungültige Filter-Werte!")
                Return
            End Try
            If bs.Count = 0 Then
                MsgBox("Nix gefunden!")
                bs.Filter = String.Empty
            End If
        End If
    End SubEnd Class
Man sollte vielleicht manche Textbox-Werte zuerst prüfen (zB bei Nummern) sonst kommt eine Exception.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Filterung Suchfunktion893Angelika16.11.09 14:30
Re: Filterung Suchfunktion600Caddy20.11.09 09:30
Re: Filterung Suchfunktion799ModeratorDaveS20.11.09 10:35

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel