
26/02/2008, 04:53
|
| | Fecha de Ingreso: febrero-2008
Mensajes: 2
Antigüedad: 17 años, 1 mes Puntos: 0 | |
Error en Datagridview Hola a todos,
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:
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
Gracias de antemano ;) |