2016-07-27 10 views
-1

データをgridviewからSQL Serverに挿入するにはいくつかのnullデータがあります。どのようにしてそのnullデータを作成することができますか?Tabbleには何も入力できません。私のテーブルに入ることはありません。 AddWithValueがDBNull.Valueのを置くことの代わりに、このパラメータを省略しますよりlook image plsnullデータを無視するDataGridビューからsqlに挿入

Using con As New SqlConnection(constring) 
    Using cmd As New SqlCommand("INSERT INTO kkpsurabaya VALUES(@Emp_No, @AC_No, @No, @Name, @Auto_Assign, @Date, @Timetable, @on_duty, @off_duty, @clock_in, @clock_out, @Normal, @Realtime, @Late, @Early, @Absent, @OT_Time, @Work_time, @Departmen)", con) 
     cmd.Parameters.AddWithValue("@Emp_No", row.Cells("Emp No#").Value) 
     cmd.Parameters.AddWithValue("@AC_No", row.Cells("AC-No#").Value) 
     cmd.Parameters.AddWithValue("@No", row.Cells("No#").Value) 
     cmd.Parameters.AddWithValue("@Name", row.Cells("Name").Value) 
     cmd.Parameters.AddWithValue("@Auto_Assign", row.Cells("Auto-Assign").Value) 
     cmd.Parameters.AddWithValue("@Date", row.Cells("Date").Value) 
     cmd.Parameters.AddWithValue("@Timetable", row.Cells("Timetable").Value) 
     cmd.Parameters.AddWithValue("@on_duty", row.Cells("on duty").Value) 
     cmd.Parameters.AddWithValue("@off_duty", row.Cells("off duty").Value) 
     cmd.Parameters.AddWithValue("@clock_in", row.Cells("clock in").Value) 
     cmd.Parameters.AddWithValue("@clock_out", row.Cells("clock out").Value) 
     cmd.Parameters.AddWithValue("@Normal", row.Cells("Normal").Value) 
     cmd.Parameters.AddWithValue("@Realtime", row.Cells("Real time").Value) 
     cmd.Parameters.AddWithValue("@Late", row.Cells("Late").Value) 
     cmd.Parameters.AddWithValue("@Early", row.Cells("Early").Value) 
     cmd.Parameters.AddWithValue("@Absent", row.Cells("Absent").Value) 
     cmd.Parameters.AddWithValue("@OT_Time", row.Cells("OT Time").Value) 
     cmd.Parameters.AddWithValue("@Work_time", row.Cells("Work time").Value) 
     cmd.Parameters.AddWithValue("@Departmen", row.Cells("Department").Value) 
     con.Open() 
     Try 
      cmd.ExecuteNonQuery() 

答えて

0

row.Cellsが( "いいえ#をEMPない")場合。値はnullです。
私はこれを大きなバグだと考えますが、私は唯一のようです。
とにかく、あなたはこのようにそれを修正することができます:私は強く、この別の方法をやってお勧めし

cmd.Parameters.AddWithValue("@Emp_No", row.Cells("Emp No#").Value ?? (object)DBNull.Value) 
1

。グリッドをループして手動で各行を挿入する代わりに、DataTableを作成してグリッドにバインドします。その後、データアダプタのUpdateメソッドを1回呼び出して、そのロットを保存することができます。コマンドビルダを使用してデータアダプタのInsertCommandを生成するか、自分で実行することができます。いずれにしても、あなたのために処理されるNULLを心配する必要はありません。コマンドビルダーを使用した例を示します。

Private adapter As SqlDataAdapter 
Private builder As SqlCommandBuilder 
Private table As DataTable 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    adapter = New SqlDataAdapter("SELECT * FROM MyTable", "connection string here") 
    builder = New SqlCommandBuilder(adapter) 
    table = New DataTable 

    adapter.FillSchema(table, SchemaType.Source) 

    Me.BindingSource1.DataSource = table 
    Me.DataGridView1.DataSource = Me.BindingSource1 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.BindingSource1.EndEdit() 

    adapter.Update(table) 
End Sub 
+0

uコードでわかりません。T –

+0

特に複雑なことはありません。より具体的な説明を私に提供したい場合は、理解していないことのより具体的な説明を提供してください。 – jmcilhinney

+0

@RiskyWahyuN私たちはあなたにそれを説明することができます、私たちはあなたのためにそれを理解することはできません。それは時には少し古くなった研究を必要とする。 – Plutonix

関連する問題