Hallo,
ich brauche etwas Hilfe, weil ich gerade in einer gedanklichen Endlosschleife hänge und nicht weiterkomme.
In meiner Anwendung möchte ich flexibel CSVs importieren können. Daher wollte ich die Möglichkeit einbauen, dass man die CSV in eine Datatable einliest, dort die Spaltenüberschriften auswertet und dann in einer Auflistung DB-Feld zu CSV-Feld flexibel auswählen kann, welche CSV-Spalte zu welchem DB-Feld gehört.
Ich habe da noch ein paar DGVs in der Form zum Visualisieren, ob das alles passt. Wichtig ist DataGridView2, da soll dann die Auswahltabelle rein.
So sieht das Ergbnis aus. Ich habe statt 2 Spalten 4 Spalten. Irgendwie find ich nicht den Ansatz, wie ich die Datasource des DGV mit den im DGV definierten Columns verbinden kann.
Wahrscheinlich ist es ein doofer Fehler, aber ich komm hier nicht weiter. Daher bin ich um jeden Tipp dankbar.
Bye
Markus
ich brauche etwas Hilfe, weil ich gerade in einer gedanklichen Endlosschleife hänge und nicht weiterkomme.
In meiner Anwendung möchte ich flexibel CSVs importieren können. Daher wollte ich die Möglichkeit einbauen, dass man die CSV in eine Datatable einliest, dort die Spaltenüberschriften auswertet und dann in einer Auflistung DB-Feld zu CSV-Feld flexibel auswählen kann, welche CSV-Spalte zu welchem DB-Feld gehört.
VB.NET-Quellcode
- Dim filePath As String = OpenFileDialog1.FileName
- Using reader = New StreamReader(filePath)
- Dim csv = New CsvReader(reader, CultureInfo.InvariantCulture)
- Dim data_select As String
- Using dr = New CsvDataReader(csv)
- Dim dt = New DataTable
- dt.Load(dr)
- 'CSV in dt geladen
- DataGridView1.DataSource = dt
- '1. Zeile dt auslesen (Spaltenüberschriften)
- Dim csvspalten As New DataTable
- csvspalten.Columns.Add("ID")
- csvspalten.Columns.Add("Name")
- Dim zaehler As Integer = 0
- Dim row As DataRow = dt.Rows(0)
- 'Einzelne Spaltenüberschriften mit ID versehen und in csvspalten ablegen
- For Each item As DataColumn In row.Table.Columns
- Dim R As DataRow = csvspalten.NewRow
- R("ID") = zaehler + 1
- R("Name") = item
- csvspalten.Rows.Add(R)
- zaehler = zaehler + 1
- Next
- Dim dbfelder As New DataTable
- dbfelder.Columns.Add("ID")
- dbfelder.Columns.Add("Name")
- For z = 1 To 5
- Dim A As DataRow = dbfelder.NewRow
- A("ID") = z
- A("Name") = "DB-Feld " & CStr(z)
- dbfelder.Rows.Add(A)
- Next
- DataGridView3.DataSource = csvspalten
- Dim ComboCol As New DataGridViewComboBoxColumn
- Dim TeboCol As New DataGridViewTextBoxColumn
- DataGridView2.Columns.Add(TeboCol)
- With TeboCol
- .HeaderText = "DB-Feld"
- .Name = "DB"
- End With
- DataGridView2.Columns.Add(ComboCol)
- With ComboCol
- .HeaderText = "CSV-Feld"
- .Name = "CSV"
- .DataSource = csvspalten
- .DisplayMember = "Name"
- .ValueMember = "ID"
- End With
- 'DGV2 zusammenbauen
- Dim auswahl As New DataTable
- auswahl.Columns.Add("DB")
- auswahl.Columns.Add("CSV")
- For z = 1 To dbfelder.Rows.Count
- Dim A As DataRow = auswahl.NewRow
- data_select = "ID = " & CStr(z)
- Dim db_row As DataRow = dbfelder.Select(data_select).FirstOrDefault()
- A("DB") = db_row.Item("Name")
- A("CSV") = ""
- auswahl.Rows.Add(A)
- Next
- DataGridView2.DataSource = auswahl
- End Using
- End Using
Ich habe da noch ein paar DGVs in der Form zum Visualisieren, ob das alles passt. Wichtig ist DataGridView2, da soll dann die Auswahltabelle rein.
So sieht das Ergbnis aus. Ich habe statt 2 Spalten 4 Spalten. Irgendwie find ich nicht den Ansatz, wie ich die Datasource des DGV mit den im DGV definierten Columns verbinden kann.
Wahrscheinlich ist es ein doofer Fehler, aber ich komm hier nicht weiter. Daher bin ich um jeden Tipp dankbar.
Bye
Markus
8-Bit Nerd - Retro-Computer Junkie - Elektronik-Fuzzi - Lötkolben-Jongleur
Lord Luxors Retrogalerie llrg.me
Lord Luxors Retrogalerie llrg.me