DataGridView Header Werte auslesen und verwenden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataGridView Header Werte auslesen und verwenden

    Hallo,

    ich benötige bitte etwas Unterstützung.

    Ich habe 2 DataGrids. Das eine DataGrid soll mit Werten aus dem anderen "aufgefüllt" werden, wenn dieses passende IDs in der Spalte Lieferant aufweist.

    Folgendes Funktioniert:

    VB.NET-Quellcode

    1. ' dgvBoni durchlaufen und in DtSet3 einfügen
    2. Dim updateRow() As Data.DataRow
    3. For Each row As DataGridViewRow In dgvBoni.Rows
    4. updateRow = DtSet3.Tables(0).Select("Lieferant = '" & row.Cells("Lieferant").Value & "'")
    5. If (updateRow.Length > 0) Then
    6. updateRow(0)("LG_T_EUR") = row.Cells("LG_T_EUR").Value
    7. updateRow(0)("KOBO_T_EUR") = row.Cells("KOBO_T_EUR").Value
    8. updateRow(0)("KOBO2_T_EUR") = row.Cells("KOBO2_T_EUR").Value
    9. updateRow(0)("KOBO3_T_EUR") = row.Cells("KOBO3_T_EUR").Value
    10. updateRow(0)("KOBO4_T_EUR") = row.Cells("KOBO4_T_EUR").Value
    11. updateRow(0)("HB") = row.Cells("HB").Value
    12. End If
    13. Next


    Da die DataGrids jedoch dynamisch aus Excel befüllt werden, kann es vorkommen, dass sich die Spalten Namen in den einzulesenden Excel Blättern ändern, womit es dann nicht mehr funktioniert, wenn z.B. LG_T_EUR zu LG2_T_EUR wird.

    Kann mir bitte jemand zeigen, wie ich die Werte aus dgvBoni.Rows (also die Header davon) automatisch auslesen und einsetzen kann?

    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „benk“ ()

    @benk Kannst Du die Spalten per Index aufrufen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    sorry - ich würde die Fragen gerne beantworten - weiss aber beide Antworten nicht....

    vielleicht ist ja das hier die Antwort - so befülle ich das DataGridView dgvBoni

    VB.NET-Quellcode

    1. Dim oexcel2 As Application
    2. oexcel2 = CreateObject("Excel.Application")
    3. Dim obook2 As Workbook
    4. obook2 = oexcel2.Workbooks.Open("" & boniListe & "") 'boniListe kommt aus dem Abfrage Dialog in dem der Mitarbeiter die Liste auswählt
    5. Dim osheet2 As Worksheet
    6. osheet2 = oexcel2.Worksheets("Tabelle1")
    7. osheet2.Unprotect() 'damit die Werte gelesen werden können
    8. osheet2.Cells(1, 1).Value = ("Lieferant")
    9. 'osheet2.Rows("1:1").Delete 'Leerzeile am Anfang löschen
    10. obook2.Save()
    11. oexcel2.Workbooks.Close()
    12. Dim MyConnection2 As System.Data.OleDb.OleDbConnection
    13. Dim DtSet2 As System.Data.DataSet
    14. Dim MyCommand2 As System.Data.OleDb.OleDbDataAdapter
    15. If boniListe.ToLower.EndsWith(".xlsx") Then
    16. MyConnection2 = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & boniListe & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';")
    17. Else
    18. MyConnection2 = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & boniListe & ";Extended Properties='Excel 8.0';")
    19. End If
    20. MyCommand2 = New System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", MyConnection2)
    21. MyCommand2.TableMappings.Add("Table", "Net-informations.com")
    22. DtSet2 = New System.Data.DataSet
    23. MyCommand2.Fill(DtSet2)
    24. dgvBoni.DataSource = DtSet2.Tables(0)
    25. MyConnection2.Close()



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „benk“ ()

    Hast du die Tut's im Tutorialbereich vom @ErfinderDesRades angesehen? Dort wird's in Hülle und Fülle abgehandelt...
    Datenbanken - VB-Paradise 2.0 — Die große Visual–Basic– und .NET–Community
    vb-paradise.de/index.php/Board/934-Datenbanken/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    ich fürchte, mit meine Tuts wird er nicht viel anfangen können, weil sein Databinding ist ja untypisiert - damit beschäftigen sich meine Tuts garnet.

    Aber hierauf kann man antworten:

    benk schrieb:

    Wie kann ich das DataSet nutzen um die Werte dynamisch zu lesen?
    Das Dataset enthält Tabellen, und jede Tabelle enthält Columns, und den Namen einer Column ruft man einfach über ihre .ColumnName-Property ab.
    Wie gesagt: im DGV braucht man dafür nicht rumhudern.

    Nils_Kr schrieb:

    Ja, du benutzt DataBinding, da du DataSets verwendest.
    Echt, das ist Databinding? Dachte dabei geht es darum Daten an Controls zu binden...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen