Estoy atascada con un problema. Tengo una rejilla Datagridview en la que edito directamente las celdas, y en el evento rowleave controlo que, si se ha añadido una nueva fila, se inserte a través de un oledbcommand.
La cuestión es que cada vez que escribo en las columnas de tipo BigInt y sin finalizar la edición de la celda, salgo de ella, se pierde el valor que acabo de introducir.
No sé muy bien por qué ocurre esto, sólo sé que cuando utilizaba un OledbCommandBuilder automático para insertar nuevas filas no me pasaba. Os dejo el código por si tenéis alguna sugerencia.
Código:
Gracias de antemano ;) insCom.Parameters.Add("@numsemana", OleDbType.Integer) insCom.Parameters.Add("@anyo", OleDbType.Integer) insCom.Parameters.Add("@numlinea", OleDbType.BigInt) insCom.Parameters.Add("@dia", OleDbType.Char, 10) insCom.Parameters.Add("@destino", OleDbType.VarChar, 4) insCom.Parameters.Add("@codplato", OleDbType.VarChar, 10) insCom.Parameters.Add("@raciones", OleDbType.BigInt) insCom.Parameters.Add("@gramaje", OleDbType.Decimal, 13) insCom.Parameters.Add("@fechaprod", OleDbType.Date) insCom.Parameters.Add("@lote", OleDbType.Char, 9) insCom.Parameters.Add("@fechacad", OleDbType.Date) Private Sub rejiLunes_RowLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles rejiLunes.RowLeave If userAddedRow = True Then insCom.Parameters("@numsemana").Value = semana insCom.Parameters("@anyo").Value = anyo insCom.Parameters("@numlinea").Value = numLinea insCom.Parameters("@dia").Value = "LUNES" If CType(sender, DgvPlus)(4, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@destino").Value = CType(sender, DgvPlus)(4, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@destino").Value = "" End If If CType(sender, DgvPlus)(5, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@codplato").Value = CType(sender, DgvPlus)(5, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@codplato").Value = "" End If If CType(sender, DgvPlus)(6, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@raciones").Value = CType(sender, DgvPlus)(6, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@raciones").Value = 0 End If If CType(sender, DgvPlus)(7, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@gramaje").Value = CType(sender, DgvPlus)(7, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@gramaje").Value = 0 End If If CType(sender, DgvPlus)(8, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@fechaprod").Value = CType(sender, DgvPlus)(8, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@fechaprod").Value = DBNull.Value End If If CType(sender, DgvPlus)(9, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@lote").Value = CType(sender, DgvPlus)(9, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@lote").Value = "" End If If CType(sender, DgvPlus)(10, CType(sender, DgvPlus).CurrentRow.Index) Is DBNull.Value = False Then insCom.Parameters("@fechacad").Value = CType(sender, DgvPlus)(10, CType(sender, DgvPlus).CurrentRow.Index).Value Else insCom.Parameters("@fechacad").Value = DBNull.Value End If Try cnn.Open() insCom.ExecuteNonQuery() cnn.Close() numLinea += 10 Catch ex As Exception MessageBox.Show(ex.ToString) End Try userAddedRow = False ds.Tables("LUNES").Clear() cnn.Open() daLun.Fill(ds, "LUNES") cnn.Close() End If