2015-07-28 40 views
0

我正在用sqlexpress数据库开发一个简单的家庭卡vb.net应用程序。我感到震惊,请帮助: 当用户保存成员时,有两个字段1.出生日期,2.洗礼日期。他可以跳过两个。以便我使用以下语句:Datagrid不显示新表格中的数据

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. 

所以,请帮我解决这个问题。空日期不是从DataGrid传递到新的表单,并且在表中作为二进制数据的图像在发送到新表单时也发生错误。

+0

不要在一个帖子中提出2个问题。如果某人只有时间回答一个问题,你就会松懈。您需要测试DBNull给定日期可以为空。你也应该使用事件参数,而不是'CurrentRow/CurrentCell' – Plutonix

+0

对不起,我......但是DBNULL不清楚以及如何使用事件参数..请解释....如果给出的代码会更好 –

回答

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 

希望这有助于!

+0

谢谢亲爱的..它的作品 –