使用sql绑定后端检查DGV行是否缺少值

时间:2015-01-28 14:27:43

标签: vb.net if-statement datagridview null nothing

我目前正在使用sql后端在vb.net windows express 2013中工作。我正在尝试创建一个if语句,它将查看特定的单元格,并根据单元格中是否包含任何内容做出决定。我认为sql语句的返回值为null但我不是100%肯定。我尝试了很多我在互联网上挖出的代码,但到目前为止,它们都没有对我有用。这是一行:

Dim Row_Index As Integer = DGVStart.CurrentCell.RowIndex
 If DGVStart.Rows(Row_Index).Cells(1).Value Is Nothing Then

这段代码确实有效,因为在windows express中告诉我线路没问题,然而,似乎我总是得到任何回报,即使有什么东西在单元格中。我认为这个问题有一些问题。做我拉动价值的方式。我有一个datagridview复选框列,我在设计表单中手动添加,如果我将其更改为单元格(0),这是我手动插入的列,它每次都会选中它。我需要知道如何告诉我的程序区分is null和not null。

更新:我现在在更改为搜索dbnull后遇到了新问题。这是我的代码。

   Private Sub DGVStart_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVStart.CellContentClick

    'dim start time
    Dim start As String = TxtStart.Text

    'fail safe so headers cant be clicked
    If e.RowIndex = -1 Then
        Exit Sub
    End If

    'dim row index and check, check is for the parts shear columns
    Dim Row_Index As Integer = DGVStart.CurrentCell.RowIndex
    'Dim check As String = DGVStart.Rows(Row_Index).Cells(2).Value

    'if checkbox is clicked
    If e.ColumnIndex = 0 Then

        '---------------------------------------------Normal parts---------------------------------------------------------------

        'If DGVStart.Rows(Row_Index).Cells(1).Value Then
        If IsDBNull(DGVStart.Rows(Row_Index).Cells(3).Value) = True Then

            Dim Shear As Date = DGVStart.Rows(Row_Index).Cells(5).Value
            Dim Machine As Int16 = DGVStart.Rows(Row_Index).Cells(4).Value
            Dim ShearNumber As String = DGVStart.Rows(Row_Index).Cells(1).Value
            Dim Parts As String = DGVStart.Rows(Row_Index).Cells(3).Value

            'Pull Values for sql statement and other operations


            Try

                'set up for checkbox event to trigger
                If e.ColumnIndex = 0 Then

                    'safety messagebox
                    Dim result As Integer = MsgBox("Are you sure Shear Number " & ShearNumber & " is being started?", MessageBoxButtons.YesNo)

                    'if messagebox is no
                    If result = DialogResult.No Then
                        Exit Sub

                        'if messagebox is yes
                    ElseIf result = DialogResult.Yes Then

                        'sql update
                        Using conn1 As New SqlConnection(connstring)
                            conn1.Open()
                            Using comm1 As New SqlCommand("UPDATE table1 SET " & start & "  = getdate() Where col = value AND col = value", conn1)
                                With comm1.Parameters
                                    .AddWithValue("@Shear", Shear)
                                    .AddWithValue("@Machine", Machine)
                                End With
                                comm1.ExecuteNonQuery()
                            End Using
                            conn1.Close()
                        End Using
                    End If
                End If

            Catch ex As Exception
                MsgBox(ex.ToString)
                MsgBox("Error checking off start date for this machine, please contact the manufacturing enginnering department.")
            End Try

            Call refresh()
            Call refresh2()

            '--------------------------------------------------------Parts special--------------------------------------------------
        Else
            MsgBox("Parts")

        End If
    End If
End Sub

***请注意我的sql语句已被修改以保护我正在为之工作的公司,但我确信sql代码有效。

新问题:我收到一条空错误消息,因为如果我取消注释这一行:

If DGVStart.Rows(Row_Index).Cells(1).Value Then

然后我试图查看一个单元格是否为null但是会导致错误。我正在尝试使用我的if语句运行正常部分或代码的特殊部分。

谢谢,

0 个答案:

没有答案