vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 08:26

Guten Morgen zusammen,

habe folgendes vor:

1. eine xls Liste in ein "Formular" Tabelle einlesen
2. über eine Form "Suchen" eines bestimmten Feldes nach bestimmten Zeichen (7 Zeichen)
und abgleichen wenn vorhanden soll der Fund markiert werden und mit Bemerkung gespeichert werden
3. ggf. soll so eine erstellte Liste noch gedruckt werden

die xls hat 7 Spalten A-G

IDNr = Typ decimal
IDNrX = Typ String
ZSBNr = Typ String
A13-2E = Typ Integer
A13-2B = Typ Integer
Zeit = DateTime

4. mittels Scanner siehe Punkt 2 Suchen markieren (der Code ist ein 3D-Matrix) Code der gescannt werden soll

das soll eine kleine Windows Application werden
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: Manfred X
Datum: 29.05.17 11:09

Hallo!

Wir wissen jetzt, was Du planst. Danke für diese Information.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 12:55

OK habe verstanden, wer hat da Lust das mit mir anzugehen umzusetzen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 13:56

Hallo Manfred,

jetzt habe ich zunächst mittels Code eine xlsx eingelesen in ein DGV

wenn da Optimierungspotenzial besteht, nehme ich das Dankend an.

 Private Sub openFileDialog1_FileOk(sender As Object, e As _
   System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        Dim filePath As String = OpenFileDialog1.FileName
        Dim extension As String = Path.GetExtension(filePath)
        Dim header As String = If(rbHeaderYes.Checked, "YES", "NO")
        Dim conStr As String, sheetName As String
 
        conStr = String.Empty
        Select Case extension
 
            Case ".xls"
                'Excel 97-03
                conStr = String.Format(Excel03ConString, filePath, header)
                Exit Select
 
            Case ".xlsx"
                'Excel 07
                conStr = String.Format(Excel07ConString, filePath, header)
                Exit Select
        End Select
 
        'Get the name of the First Sheet.
        Using con As New OleDbConnection(conStr)
            Using cmd As New OleDbCommand()
                cmd.Connection = con
                con.Open()
                Dim dtExcelSchema As DataTable = con.GetOleDbSchemaTable( _
                  OleDbSchemaGuid.Tables, Nothing)
                sheetName = dtExcelSchema.Rows(0)("TABLE_NAME").ToString()
                con.Close()
            End Using
        End Using
 
        'Read Data from the First Sheet.
        Using con As New OleDbConnection(conStr)
            Using cmd As New OleDbCommand()
                Using oda As New OleDbDataAdapter()
                    Dim dt As New DataTable()
                    cmd.CommandText = (Convert.ToString("SELECT * From [") & _
                      sheetName) + "]"
                    cmd.Connection = con
                    con.Open()
                    oda.SelectCommand = cmd
                    oda.Fill(dt)
                    con.Close()
 
                    'Populate DataGridView.
                    dataGridView1.DataSource = dt
                End Using
            End Using
        End Using
    End Sub
Ergebnis:

	2017050000000	 AHEF2ND	 5N0512011BS	1	1	 15.05.2017 14:00:35
	2017050000000	 AHEF2NE	 5N0512011BS	1	1	 15.05.2017 14:00:35
	2017050000000	 AHEF2NH	 5N0512011BS	1	1	 15.05.2017 14:01:15
	2017050000000	 AHEF2NI	 5N0512011BS	1	1	 15.05.2017 14:01:15
nun soll die 2 Spalte mittels "Eingabe" TextBox durchsucht werden ist die entsprechende Eingabe vorhanden
soll der Fund farblich gekennzeichnet werden (rot) zum Beispiel
die nächste Eingabe soll in der gleichen Spalte suchen nicht vorhanden soll eine Meldung aufpopen nicht vorhanden. Wenn doch vorhanden dann auch den Fund kennzeichnen (rot)

es muss dieser Status gespeichert werden können so das man später das evtl. nach xlsx exportiert
aber mit Kennzeichnung. Ist das so möglich? und wie ?

Beitrag wurde zuletzt am 29.05.17 um 13:59:24 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: Manfred X
Datum: 29.05.17 17:00

Hallo!

In VB.Net sind Auflistungen null-basierend indiziert.
In Deinem Beispiel enthält die Spalte 2 (ab 0 gezählt) stets den gleichen Eintrag: 5N0512011BS

Wen Du eine Suche nach Datensätzen anhand des Cell-Contents einer oder mehrerer Spalten
durchführen willst, verwende eine Bindingsource zum Filtern der Daten.

Wie willst Du die Markierungen gestalten, wenn vom User mehrere Suchen hintereinander
durchgeführt werden?
Am einfachsten wird es sein, Du speicherst alle eingegebenen Such-Werte als Liste und
bearbeitest sie beim Rückspeichern in Excel (als XLS(X)-Format).
Wie Du diese Liste beim Speichern verwenden willst, dafür gibt es diverse Möglichkeiten
(zusätzliche Markerspalte, einheitliche oder verschiedenartige Farbmarkierung der Zellen,
Entfernen der Zell-Werte oder der betroffenen Datenzeile usw.)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 17:47

Wie willst Du die Markierungen gestalten, wenn vom User mehrere Suchen hintereinander
durchgeführt werden? na ja es sollte eine Meldung erfolgen und die Stelle des Fundes Rot markieren
weitersuchen oder Neue Suche
dieser Vorschlag gefällt mir.
Am einfachsten wird es sein, Du speicherst alle eingegebenen Such-Werte als Liste und

gehst du das mit mir an?

meine Suche will schon mal nicht

  tbx_Eingabe_Feld.Text = tbx_Eingabe_Feld.Text.Trim
        Dim strSuchwort = tbx_Eingabe_Feld.Text
        'Pflichtfeld prüfen
        If String.IsNullOrEmpty(strSuchwort) Then : Fehler_Pflichtfeld_Eingabe( _
          "Eingabe:") : Return : End If
        'Suchen in DGV
        Dim searchIndex = 0
        DataGridView1.ClearSelection()
        For Each row As DataGridViewRow In DataGridView1.Rows
 
            For Each cell As DataGridViewCell In row.Cells
                If cell.Value.StartsWith(strSuchwort, _
                  StringComparison.InvariantCultureIgnoreCase) Then
 
                    cell.Selected = True
 
                    DataGridView1.CurrentCell = DataGridView1.SelectedCells(1)
 
                    'Exit For
                End If
            Next
        Next
        DataGridView1.Visible = True
da passiert nichts
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: Manfred X
Datum: 29.05.17 18:28

Welche Art von "Suche" soll das werden?

- Durch Betätigung einer Funktionstaste den Zellcursor durch die
Zellen, deren Content dem Suchbegriff entspricht, bewegen.

- Alle Zellen, deren Content einem Suchbegriff entspricht, markieren
dauerhaft oder temporär

- Alle Zeilen, deren Content in der Suchspalte dem Suchbegriff entspricht,
markieren

- Alle Zeilen filtern, deren Content in ....

Es gibt weitere Varianten einer "Suche in Spalte" (Zeilen aussondern/-kopieren, ...)

Und wie sollen Suchergebnisse gespeichert werden?
Wie sollen verschiedene Suchergebnisse im Control markiert werden?
Deine bisherigen Angaben kombinieren verschiedene Such-Varianten
(z.B. Cursor bewegen, Markieren). Das funktioniert nicht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 18:43

Danke die Fragen beantworte ich so:

- Alle Zeilen, deren Content in der Suchspalte dem Suchbegriff entspricht,
dauerhaft markieren

Und wie sollen Suchergebnisse gespeichert werden?
in eine Tabelle mit Namen "N.i.O - Fund" wäre ein Vorschlag so das die wiederrum in eine DGV angezeigt wird.
Wie sollen verschiedene Suchergebnisse im Control markiert werden?
evtl. geht es ja so: eine Auswertungsspalte Type boolean die den Fund wiedergibt könnte man dann sogar filtern und sich eine Zusätzliche Speicherung sparen.

Anmerkung: die Suche über ein Eingabefeld darf 7 Zeichen haben nicht weniger bzw. mehr

hoffe verstehst meine Art hier zu formulieren
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: Manfred X
Datum: 29.05.17 19:18

Naja. Die Frage bleibt offen, wie die Ergebnisse mehrerer Suchen
miteinander kombiniert werden sollen (falls das erforderlich ist).

Prinzipielles Vorgehen:
Mit LINQ-Aggregate-Count abfragen, wie viele Datensätze dem
aktuellen Suchbegriff entsprechen.
Falls keine Datensätze gefunden werden, erfolgt eine Meldung.
Sonst wird der Suchtext in einer List(of String) angehängt,
falls dort noch nicht vorhanden.

Im "CellPainting"-Event des Datagridview-Control wird geprüft, ob die
aktuell zu zeichnende Zelle zur "kritischen" Spalte gehört und einen
der in der Liste gespeicherten Suchbegriffe enthält.
In dem Fall wird der Hintergrund in der Markierfarbe gezeichnet,
sonst Normal (weiß).

Um das Eingabefeld der Suche in der Länge zu begrenzen, kann man eine
MaskedTextbox verwenden (und dort auch genaue Formatangaben vorgeben)
oder eine gewöhnliche Textbox, bei der z.B. im Keydown-Event geprüft wird,
ob die Länge der Text-Eigenschaft überschritten ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 29.05.17 19:31

die offene Frage werde ich noch beantworten.

evtl. hilfst mir dabei, die Linq-Abfrage zum Beispiel oder zunächst eine Struktur zu erhalten

hier mal einige Daten aus der xls Datei

              "Suchen markieren"
	2017050000000	 AHEF2ND	 5N0512011BS	1	1	 15.05.2017 14:00:35
	2017050000000	 AHEF2NE	 5N0512011BS	1	1	 15.05.2017 14:00:35
	2017050000000	 AHEF2NH	 5N0512011BS	1	1	 15.05.2017 14:01:15
	2017050000000	 AHEF2NI	 5N0512011BS	1	1	 15.05.2017 14:01:15
	2017050000000	 AHEF2NL	 5N0512011BS	1	1	 15.05.2017 14:01:51
	2017050000000	 AHEF2NM	 5N0512011BS	1	1	 15.05.2017 14:01:51
	2017050000000	 AHEF2NP	 5N0512011BS	1	1	 15.05.2017 14:02:30
	2017050000000	 AHEF2NQ	 5N0512011BS	1	1	 15.05.2017 14:02:30
	2017050000000	 AHEF2NT	 5N0512011BS	1	1	 15.05.2017 14:03:09
	2017050000000	 AHEF2NU	 5N0512011BS	1	1	 15.05.2017 14:03:09
	2017050000000	 AHEF2NX	 5N0512011BS	1	1	 15.05.2017 14:03:46
	2017050000000	 AHEF2NY	 5N0512011BS	1	1	 15.05.2017 14:03:46
	2017050000000	 AHEF2O1	 5N0512011BS	1	1	 15.05.2017 14:04:14
	2017050000000	 AHEF2O2	 5N0512011BS	1	1	 15.05.2017 14:04:14
	2017050000000	 AHEF2O5	 5N0512011BS	1	1	 15.05.2017 14:04:44
	2017050000000	 AHEF2O6	 5N0512011BS	1	1	 15.05.2017 14:04:44
	2017050000000	 AHEF2O9	 5N0512011BS	1	1	 15.05.2017 14:05:20
	2017050000000	 AHEF2OA	 5N0512011BS	1	1	 15.05.2017 14:05:20
	2017050000000	 AHEF2OD	 5N0512011BS	1	1	 15.05.2017 14:05:57
	2017050000000	 AHEF2OE	 5N0512011BS	1	1	 15.05.2017 14:05:57
	2017050000000	 AHEF2OH	 5N0512011BS	1	1	 15.05.2017 14:06:46
	2017050000000	 AHEF2OI	 5N0512011BS	1	1	 15.05.2017 14:06:46
	2017050000000	 AHEF2OL	 5N0512011BS	1	1	 15.05.2017 14:07:24
	2017050000000	 AHEF2OM	 5N0512011BS	1	1	 15.05.2017 14:07:24
	2017050000000	 AHEF2OP	 5N0512011BS	1	1	 15.05.2017 14:09:24
	2017050000000	 AHEF2OQ	 5N0512011BS	1	1	 15.05.2017 14:09:24
	2017050000000	 AHEF2OT	 5N0512011BS	1	1	 15.05.2017 14:09:51
	2017050000000	 AHEF2OU	 5N0512011BS	1	1	 15.05.2017 14:09:51
	2017050000000	 AHEF2OX	 5N0512011BS	1	1	 15.05.2017 14:10:17
	2017050000000	 AHEF2OY	 5N0512011BS	1	1	 15.05.2017 14:10:17
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Beispiel für Suchen/Markieren 
Autor: Manfred X
Datum: 29.05.17 20:46

Public Class frmMultiSearch
 
    Dim WithEvents mtbo As New MaskedTextBox With _
        {.Parent = Me, .Width = 80}
 
    Dim dt As New DataTable
 
    Dim bs As New BindingSource
    Dim WithEvents dgv As New DataGridView With _
        {.Parent = Me, .Size = New Size(400, 400), .Top = 50, _
         .DataSource = bs, _
         .AllowUserToAddRows = False}
 
    Dim search_columnindex As Integer = 1 'Die kritische Spalte
 
    Dim searchlist As New List(Of String) 'Liste der Suchbegriffe
 
 
    Private Sub frmMultiSearch_Load(sender As System.Object, _
                    e As System.EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(450, 500)
 
        mtbo.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
        mtbo.Mask = ">LLLL0LL"  'Eingabemaske für Suchstring
 
        'Die oben gegebenen Daten irgendwie in die Datatable ..... 
        For i As Integer = 0 To 4
            dt.Columns.Add("SP_" & CStr(i))
        Next i
 
        Dim lines() As String = IO.File.ReadAllLines("C:\daten\ex_xls.txt")
        For Each line As String In lines
            Dim fields() As String = line.Split(" "c)
            Dim k As Integer = -1
            Dim row As DataRow = dt.NewRow
            For Each field As String In fields
                If Not field.Trim = "" AndAlso k < 4 Then
                    k += 1
                    row(k) = field
                End If
            Next
            dt.Rows.Add(row)
        Next
 
        bs.DataSource = dt
    End Sub
 
 
    Private Sub mtbo_KeyDown(sender As Object, _
                e As System.Windows.Forms.KeyEventArgs) Handles mtbo.KeyDown
 
        If e.KeyCode = Keys.Return Then
            If Not mtbo.MaskFull Then
                Dim ret As MsgBoxResult = _
                    MsgBox("Keine vollständige Such-Eingabe", _
                    MsgBoxStyle.OkCancel)
                If ret = MsgBoxResult.Cancel Then Exit Sub
            End If
 
            'Anzahl der gefundenen Zeilen (incl. bereits markierte)
            Dim row_found As Integer = _
                   Aggregate row As DataRow In dt.AsEnumerable _
                      Where row(search_columnindex).ToString.StartsWith( _
                      mtbo.Text) _
                   Into Count()
 
            MsgBox(row_found.ToString & " Zeilen gefunden")
 
            If row_found > 0 AndAlso Not searchlist.Contains(mtbo.Text) Then
               searchlist.Add(mtbo.Text)
               dgv.InvalidateColumn(search_columnindex)
            End If            
        End If
    End Sub
 
 
    Private Sub dgv_CellPainting(sender As Object, _
                  e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _
            Handles dgv.CellPainting
 
        If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Exit Sub
 
        Dim vl As String = _
            dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString
 
        'Entspricht der Zellwert einem Suchbegriff (Startswith)
        Dim searched As Boolean
        For i As Integer = 0 To searchlist.Count - 1
            searched = vl.StartsWith(searchlist(i))
            If searched Then Exit For
        Next i
 
        If searched Then
            'Zelle gelb markieren
            Using bry As New SolidBrush(Color.Yellow)
                e.Graphics.FillRectangle(bry, e.CellBounds)
            End Using
            e.Paint(e.CellBounds, DataGridViewPaintParts.Border)
            e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground)
            e.Handled = True
        End If
    End Sub
End Class


Beitrag wurde zuletzt am 29.05.17 um 20:52:19 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: Manfred X
Datum: 29.05.17 21:40

Ergänzung zum "CellPainting"-Event:
Der Code sollte natürlich so beginnen ...
If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Exit Sub
If Not e.ColumnIndex = search_columnindex Then Exit Sub
If IsDBNull(dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) Then Exit Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: ERBRU
Datum: 29.05.17 21:51

Danke!
ich melde mich Morgen noch mal da will etwas nicht funktionieren
einlesen der xls Datei klappt nicht wie es soll
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: ERBRU
Datum: 30.05.17 09:14

Hallo Manfred X,

Danke dir für die tolle Hilfe. Das funktioniert soweit

Aber ich möchte (muss)die xls einlesen können, per Button.

geht das im Grunde auch? wie?

 For i As Integer = 0 To 4
            dt.Columns.Add("SP_" & CStr(i))
        Next i
 
        Dim lines() As String = IO.File.ReadAllLines( _
          "D:\Sperrlisten\ex_xls.txt")
        For Each line As String In lines
            Dim fields() As String = line.Split(" "c)
            Dim k As Integer = -1
            Dim row As DataRow = dt.NewRow
            For Each field As String In fields
                If Not field.Trim = "" AndAlso k < 4 Then
                    k += 1
                    row(k) = field
                End If
            Next
            dt.Rows.Add(row)
        Next
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: Manfred X
Datum: 30.05.17 09:32

Wieso programmierst Du nicht direkt in Excel ein geeignetes Suchformular?

Eine Möglichkeit, von VB-Net direkt auf Excel-Tabellen zuzugreifen, ist die
Excel-Automatisierung (Verweis auf Microsoft Excel bzw. On the fly).
Es gibt auch "Visual Studio Tools for Office".
https://www.visualstudio.com/vs/office-tools

Ein einfacher Weg ist der Export des Inhalts der Excel-Tabelle als
CSV-Datei und das Einlesen dieser Datei in VB.Net.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: ERBRU
Datum: 30.05.17 15:40

Nun habe ich noch eine Frage Manfred X

ich lese so um die 5000 Zeilen ein die nun gefundenen und markierten Cellen möchte ich die Anzahl in einem Label anzeigen und von den 5000 verbleibenen Suche abziehen

also: 5000 Datensätze zum prüfen 3 gefunden + markiert = 4997 "Codes noch zu prüfen"

kannst du mir folgen?

PS die msb Maske lässt ab der 5 Stelle keine Zahlen zu?

bis dahin OK
AHEF2_
hätte aber so eingeben wollen, geht leider nicht?
AHEF202
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: Manfred X
Datum: 30.05.17 17:54

In der "Mask"-Eigenschaft der MaskedTextbox kann für jede Input-Position
eine Einschränkung gesetzt werden. Die MSDN-Dokumentation dieser Eigenschaft
beschreibt die entsprechenden Möglichkeiten (z.B. L=Buchstabe 0=Ziffer usw).

Ich hatte bereits mehrfach gefragt, wie die Suchen zu kombinieren sind.
Bis jetzt habe ich keine Antwort erhalten.
Wieviele "Codes noch zu prüfen" sind??
Keine Ahnung was das bedeuten könnte ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Suchen/Markieren 
Autor: ERBRU
Datum: 30.05.17 19:23

Danke die Eigenschaften werde ich mir mal anschauen.

Sorry, doch es kann durchaus Kombinationen geben aus Zahlen und Buchstaben
oder Buchstaben und Zahlen

wieviele codes noch zu prüfen sind?

nehmen wir an diese 14 Zeilen wurden eingelesen
in SP_1 werden 2 Strings gefunden und markiert das bedeutet in der Liste 2 NIO gefunden
das soll gezählt werden (Rest 12 noch zu prüfen)

die SP_5 ist eine Spalte wird beim einlesen aber als 2 Spalten behandelt?
die SP_3 und SP_4 werden in die SP_2 angehängt. hier habe ich das mal manuell gerichtet

es sind eigentlich 6 Spalten
        SP_0            SP_1            SP_2          SP_3  SP_4   SP_5
	2.02E+12 	AHEF2ND 	5N0512011BS   1     1 	   15.05.2017 14:00:35
	2.02E+12 	AHEF2NE 	5N0512011BS   1     1 	   15.05.2017 14:00:35
	2.02E+12 	AHEF2NH 	5N0512011BS   1     1 	   15.05.2017 14:01:15
	2.02E+12 	AHEF2NI 	5N0512011BS   1     1 	   15.05.2017 14:01:15
	2.02E+12 	AHEF2NL 	5N0512011BS   1     1 	   15.05.2017 14:01:51
	2.02E+12 	AHEF2NM 	5N0512011BS   1     1 	   15.05.2017 14:01:51
	2.02E+12 	AHEF2NP 	5N0512011BS   1     1 	   15.05.2017 14:02:30
	2.02E+12 	AHEF2NQ 	5N0512011BS   1     1 	   15.05.2017 14:02:30
	2.02E+12 	AHEF2NT 	5N0512011BS   1     1 	   15.05.2017 14:03:09
	2.02E+12 	AHEF2NU 	5N0512011BS   1     1 	   15.05.2017 14:03:09
	2.02E+12 	AHEF2NX 	5N0512011BS   1     1 	   15.05.2017 14:03:46
	2.02E+12 	AHEF2NY 	5N0512011BS   1     1 	   15.05.2017 14:03:46
	2.02E+12 	AHEF2O1 	5N0512011BS   1     1 	   15.05.2017 14:04:14
	2.02E+12 	AHEF2O2 	5N0512011BS   1     1 	   15.05.2017 14:04:14
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm Code Abgleich XLS 
Autor: ERBRU
Datum: 02.06.17 12:29

Hallo Manfred X,

bist du da?

habe noch die eine oder andere Frage zum Thema:

wie kann ich da noch zusätzlich eine Checkbox true setzen wenn Suchwort markiert wurde und in den Sichtbereich der DGV holen (selektieren)?



Private Sub DGV_Excel1_CellPainting(sender As Object, _
                   e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _
             Handles DGV_Excel1.CellPainting
 
        If e.RowIndex = -1 Or e.ColumnIndex = -1 Then Exit Sub
        If Not e.ColumnIndex = search_columnindex Then Exit Sub
        If IsDBNull(DGV_Excel1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) _
          Then Exit Sub
 
        Dim vl As String = _
            DGV_Excel1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString
 
        'Entspricht der Zellwert einem Suchbegriff (Startswith)
        Dim searched As Boolean
        For i As Integer = 0 To searchlist.Count - 1
            searched = vl.StartsWith(searchlist(i))
            If searched Then Exit For
        Next i
 
        If searched Then
            'Zelle gelb markieren und eine DGV-Checkbox true stempeln
            Using bry As New SolidBrush(Color.Yellow)
                e.Graphics.FillRectangle(bry, e.CellBounds)
            End Using
            e.Paint(e.CellBounds, DataGridViewPaintParts.Border)
            e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground)
            e.Handled = True
        End If
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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