2016-07-27 9 views
-1

im Einfügen von Daten auf SQL-Server von Data Gridview Ich habe ein Problem einige Null Daten eingeben, wie ich diese Null-Daten keine Eingabe in meinem Tabble machen kann, und ich habe ein Problem mit einigen Daten Ich gehe nicht in meinen Tisch. look image plsignorieren Null Daten einfügen in Sql von Datagrid anzeigen

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() 

Antwort

0

Wenn row.Cells ("No # emp"). Der Wert ist null als AddWithValue wird diesen Parameter anstelle DBNull.Value des Setzens auslassen.
Ich halte dies für einen riesigen Fehler, aber ich bin der Einzige.
Auf jeden Fall können Sie es wie folgt beheben:

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

ich stark diese eine andere Art und Weise empfehlen, tun würde. Anstatt das Raster zu durchlaufen und jede Zeile manuell einzufügen, erstellen Sie eine DataTable und binden Sie sie an das Raster. Sie können dann einen einzelnen Aufruf an die Methode Update eines Datenadapters senden, um das Los zu speichern. Sie können entweder einen Befehlsersteller verwenden, um die InsertCommand des Datenadapters zu generieren, oder es selbst tun. In beiden Fällen müssen Sie sich nicht um NULL kümmern, da dies für Sie erledigt wird. Hier ist ein Beispiel eines Befehls Builder verwenden:

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

im nicht verstehen, mit u Code T.T –

+0

Es gibt nichts besonders komplex darüber. Wenn Sie möchten, dass ich eine spezifischere Erklärung gebe, dann geben Sie eine spezifischere Erklärung dessen, was Sie nicht verstehen. – jmcilhinney

+0

@RiskyWahyuN Wir können es dir nur erklären, wir können es nicht für dich verstehen. Das braucht manchmal ein wenig altmodische Forschung. – Plutonix

Verwandte Themen