Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2008, 04:53
Kaoruki
 
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 ;)