2015-07-28 3 views
0

Я разрабатываю простую семейную карточную программу vb.net с sqlexpress-базой данных. Я поражен, пожалуйста, помогите: Когда пользователь сохраняет участника, есть два поля 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. 

Так что, пожалуйста, помогите мне решить эту проблему. Null Date не переходит от 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

Спасибо, дорогой .. это работает –

Смежные вопросы