Ich versuche, einen Code zu erstellen, Textdatei von einem Fingerabdruck-Computer in einen Bericht zu verarbeiten.Wie fügt man eine neue Spalte basierend auf einer vorhandenen Spalte in einer Datentabelle in VB hinzu?
Textdatei Eingabe Beispiel
001;0000000000200004;01-07-2016;15:31;01;01
mit Semikolon Trennzeichen,
machinecode;personid;dateDD-MM-YYYY;timeHH:MM;jobid;unused
dies ist mein letzter erfolgreicher Code
Imports System.IO
Imports System.Windows.Forms
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lines = IO.File.ReadAllLines("C:\Users\Adventa\Documents\Visual Studio 2010\Projects\AbsensiALU\AbsensiALU\Absen.txt")
Dim tblabsen = New DataTable
Dim colCount = lines.First.Split(";"c).Length
For i As Int32 = 1 To colCount
'Dim header As String
tblabsen.Columns.Add(New DataColumn("Column_" & i, GetType(String)))
Next
For Each line In lines
Dim objFields = From field In line.Split(";"c)
Dim newRow = tblabsen.Rows.Add()
newRow.ItemArray = objFields.ToArray()
Next
Dim table1 As New DataTable
table1 = tblabsen.Copy()
table1.Columns(0).ColumnName = "No. Mesin"
table1.Columns(1).ColumnName = "NIK"
table1.Columns(2).ColumnName = "Tanggal"
table1.Columns(3).ColumnName = "Jam"
table1.Columns(4).ColumnName = "Keterangan"
DataGridView1.DataSource = table1
DataGridView1.AutoResizeColumn(0)
DataGridView1.AutoResizeColumn(1)
DataGridView1.AutoResizeColumn(2)
DataGridView1.AutoResizeColumn(3)
DataGridView1.AutoResizeColumn(4)
DataGridView1.Columns(5).Visible = False
Dim rowData As String = ""
'dt is the name of the data table
For Each row As DataRow In table1.Rows
For Each column As DataColumn In table1.Columns
rowData = rowData & column.ColumnName & "=" & row(column) & " "
Next
rowData = rowData & vbNewLine & vbNewLine
Next
End Sub
Private Sub DataGridView1_CellContentClick_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
End Sub
End Class
jetzt will ich eine hinzufügen Säule hinein, die basierend auf table1.columns (4) mit wahrscheinlich einem IF/CASE-Operator, so werden die neuen Spalten zum Beispiel wie diese Annahme
Dim kete As String
Select Case tblabsen.Columns(4).GetType.ToString()
Case "00"
kete = "Masuk"
Case "01"
kete = "Pergi"
Case "02"
kete = "Kembali"
Case "03"
kete = "Pulang"
Case Else
kete = "Error"
End Select
sein, dass ‚kete‘ in die neue Spalte geschrieben werden kann.
Vielen Dank im Voraus.
Vielen Dank für Ihre Antwort Alex, es löst mein Problem für das Hinzufügen neuer Spalte, aber t Die neue Spalte oder der "kete" -Wert ist immer "error" oder wir können sagen, dass der SELECT-Operator nicht funktioniert, und ich habe keine Ahnung davon. Vielleicht muss ich auch herausfinden, wie man eine einzelne Zelle oder Spalte für zukünftige Referenz extrahiert. –
@JoeAdventa Haben Sie versucht zu sehen, was Sie im Debug-Modus haben? Und ich glaube, wir können '.GetType.ToString()' – Prisoner
weglassen Ich entferne einfach '.GetType.ToString()' und es funktionierte. Jetzt muss ich etwas über die Berechnung von Werten lernen, bevor ich eine neue Spaltenvariable hinzufüge. Vielen Dank Alex. –