我正在使用sqlexpress数据库开发一个简单的家庭卡vb.net应用程序。我很震惊,请帮忙: 当用户保存成员时,有两个字段1.出生日期,2。受洗日期。他可以跳过这两个。所以我使用以下语句:
If Not IsDate(DOBDatepik.Text) Then
sqlcmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = DBNull.Value
Else
sqlcmd.Parameters.Add("@DOB", SqlDbType.DateTime).Value = DOBDatepik.Value
End If
它有效。现在我用Datagrid创建新表单来查找族。这是一个语句当用户双击任何单元格时,新表单将显示当前记录。为此,我使用以下声明:
我没有复制整篇文章。这只是为了澄清
Private Sub familyGridView_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles familyGridView.CellDoubleClick
Dim int As Integer = Me.familyGridView.CurrentCell.RowIndex
FamilyDetails.DOBDatepik.Value = Me.familyGridView.Item(6, int).Value
FamilyDetails.baptismDatepik.Value = Me.familyGridView.Item(12, int).Value
FamilyDetails.Show()
End Sub
它有效,但是如果有空日期,则会出现以下错误
Conversion from type 'DBNull' to type 'Date' is not valid.
所以请帮我解决这个问题。 Null Date没有从DataGrid传递到新表单,而表中作为二进制数据的Image在发送到新表单时也会出错。
答案 0 :(得分:0)
当您将值传递给新的时,似乎就是问题。
您需要做的就是检查值是否为空。
例如:
If Not Me.familyGridView.Item(6, int).Value is DBNull.Value Then
FamilyDetails.DOBDatepik.Value = Me.familyGridView.Item(6, int).Value
Else
FamilyDetails.DOBDatepik.Value = nothing
End If
If Not Me.familyGridView.Item(12, int).Value is DBNull.Value Then
FamilyDetails.baptismDatepik.Value = Me.familyGridView.Item(12, int).Value
Else
FamilyDetails.baptismDatepik.Value = nothing
End If
希望这有帮助!