vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 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
Beispiel für die Suche nach der nächsten Zelle 
Autor: Manfred X
Datum: 21.11.13 18:10

Hier zunächst eine Structure, durch die die Parameter
der Suche genauer bestimmt werden können:

Public Structure StringCompareParams
   ''' <summary>Groß-/Kleinscreibung ignorieren</summary>
   Public IgnoreCase As Boolean
 
   ''' <summary>Blancs am Anfang und Ende beim Vergleich ignorieren</summary>
   Public IgnoreBlancs As Boolean
 
   ''' <summary>Teilstring suchen</summary>
   Public Contains As Boolean
 
   ''' <summary>Teilstring nur am Anfang suchen (überschreibt Contains)</summary>
   Public StartsWith As Boolean
 
End Structure
Die entsprechende Routine für die Durchführung des Vergleichs eines
Zell-Value mit einem zu suchenden String.

''' <summary>Vergleich eines String-Value mit einem String</summary>
''' <param name="vl">Der Wert, dessen String-Darstellung verglichen werden 
' soll</param>
''' <param name="str">Der zu suchende String</param>
''' <param name="scp">Festlegung der Vergleichsparameter</param>
Private Function Founded(ByVal vl As Object, ByVal str As String, _
                Optional ByVal scp As StringCompareParams = Nothing) As Boolean
 
    If vl Is Nothing Or str Is Nothing Then Return False
    If IsDBNull(vl) Then Return false
    Try
        Dim s As String = CType(vl, String)
 
        If scp.IgnoreBlancs Then s = s.Trim : str = str.Trim
        If scp.IgnoreCase Then s = s.ToUpper : str = str.ToUpper
        If str = String.Empty Then Return False
 
        If scp.StartsWith Then
           Return s.StartsWith(str)
        ElseIf scp.Contains Then
           Return s.Contains(str)
        Else
           Return s = str
        End If
    Catch ex As Exception
        Return False
    End Try
 
    End Function
Die Routine, die ab einem vorgegebenen Zell-Index die nächste Zelle
sucht. Die Suche wird zeilenweise durchgeführt!
Private Function SucheNächstenWert(ByVal grid As DataGridView, _
                                   ByVal sSuchWert As String, _
                                   ByRef RowIndex As Integer, _
                                   ByRef Columnindex As Integer, _
                Optional scp As StringCompareParams = Nothing) As Boolean
 
   Columnindex = Math.Max(-1, Columnindex)
   RowIndex = Math.Max(0, RowIndex)
 
   With grid
      'Suche in der restlichen Zeile
      If Columnindex < .Columns.Count - 1 Then
         For j As Integer = Columnindex + 1 To .Columns.Count - 1
            If Founded(.Rows(RowIndex).Cells(j).Value, _
                        sSuchWert, scp) Then
 
               Columnindex = j : Return True
           End If
         Next j
      End If
 
      'Suche in den Folgezeilen
      RowIndex += 1
 
      Try
         For i As Integer = RowIndex To .Rows.Count - 1
            With .Rows(i)
               For j As Integer = 0 To .Cells.Count - 1
                  With .Cells(j)
                     If Founded(.Value, sSuchWert, scp) Then
                        Columnindex = j : RowIndex = i 
                        Return True
                     End If
                  End With
               Next j
            End With
         Next i
 
         RowIndex = -1 : Columnindex = -1
         Return False
      Catch ex As Exception
        Return False
      End Try
   End With
End Function
Anwendungsbeispiel ("dgv" das zu durchsuchende Grid):
   'Suchparameter
   Dim scp As New StringCompareParams
   scp.IgnoreCase = True
   scp.IgnoreBlancs = True
 
   Dim Suchwert As String = "zu suchender Wert"
 
   'Start-Indices der Suche
   Dim rowindex As Integer = -1
   Dim columnindex As Integer = -1
 
   Dim valfounded As Boolean
 
   Do
     valfounded = _
          SucheNächstenWert(dgv, Suchwert, rowindex, columnindex, scp)
 
     If valfounded Then
        'Zelle gefunden ....
        'Operation durchführen
        dgv.Rows(rowindex).Cells(columnindex).Style.BackColor = Color.Beige
     End If
 
  Loop While valfounded 'Suche fortsetzen, bis kein weiterer Fund vorliegt


Beitrag wurde zuletzt am 21.11.13 um 18:18:18 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Suche im DataGridView6.046stefanbla8019.11.13 11:36
Re: Suche im DataGridView5.503Manfred X19.11.13 13:11
Re: Suche im DataGridView5.546stefanbla8019.11.13 14:04
Re: Suche im DataGridView5.382Manfred X19.11.13 14:56
Re: Suche im DataGridView5.365stefanbla8019.11.13 15:19
Re: Suche im DataGridView5.336Manfred X19.11.13 15:49
Re: Suche im DataGridView5.790stefanbla8021.11.13 07:12
Re: Suche im DataGridView5.559stefanbla8021.11.13 07:17
Re: Suche im DataGridView5.465Manfred X21.11.13 15:06
Beispiel für die Suche nach der nächsten Zelle5.431Manfred X21.11.13 18:10

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