Обработка нулевых значений на считывателе
Привет,
Я пытаюсь прочитать csv-файл в моем представлении datagrid, но он всегда выдает мне ошибку "объект не может быть приведен из DBnull в другие типы". Я сделал точку останова в своем коде, это происходит, когда читатель пытается загрузить формат datetime в datagridview. Уже работают различные процедуры, которые могут обрабатывать нулевые значения, но, похоже, ошибка не исчезает. Я буду признателен, если вы предложите мне какой-нибудь другой способ обработки нулевых значений
With dt1 .Columns.Add("Employee Number", Type.GetType("System.String")) .Columns.Add("Time In", Type.GetType("System.DateTime")) .Columns.Add("Time Out", Type.GetType("System.DateTime")) .Columns.Add("Shift Starttime", Type.GetType("System.DateTime")) .Columns.Add("ShiftEndTime", Type.GetType("System.DateTime")) End With
Dim csvreader As New StreamReader(txtboxcsv.Text, System.Text.Encoding.Default) Dim sline As String = "" Do sline = csvreader.ReadLine If sline Is Nothing Then Exit Do Dim columns() As String = sline.Split(",") Dim row As DataRow = dt1.NewRow Try row("Employee Number") = columns(0) If columns(2) = "IN" Then row("Time In") = columns(1) Else row("Time out") = columns(1) End If Dim d As String d = Convert.ToDateTime(columns(1)).ToString("dd-MMM-yyyy") Dim shift_start As String shift_start = Convert.ToDateTime(row("Time In")).AddHours(1).ToString("MM-dd-yyyy hh tt") Dim shift_end As DateTime shift_end = Convert.ToDateTime(row("Time In")).AddHours(9).ToString("MM-dd-yyyy hh tt") row("Shift Starttime") = shift_start row("ShiftEndTime") = shift_end dt1.Rows.Add(row) Catch ex As Exception MessageBox.Show(ex.Message) End Try Loop csvreader.Close() DataGridView1.DataSource = dt1 Me.Text = dt1.Rows.Count & "rows" End Sub
Что я уже пробовал:
'Dim n0_value As String = "00/00/0000" If IsDBNull(row("Time In")) = False Then row("Shift Starttime") = shift_start OrElse row("Shift Starttime") = n0_Value Convert.IsDBNull(row("Shift Starttime")) ElseIf If IsDBNull(row("Time out")) = False Then row("Shift EndTime") = shift_end OrElse row("Shift EndTime") = n0_Value Convert.IsDBNull(row("Shift EndTime")) End If
Gerry Schmitz
Я думаю, вы могли бы попробовать нулевое время даты. Однако в какой-то момент вам придется иметь с ними дело (то есть с нулями).
sophia kylie taylor
Есть ли в любом случае, что я мог бы сделать дату и время нулевыми?