Voy a poner un poco de código, a ver si es que hago algo mal.
Este es el sub al que se llama cuando se gurdan los cambios:
Código:
Private Sub GuardarCambios_miDataSet()
Me.BindingContext(miDataSet, "Urgencias").EndCurrentEdit()
If miDataSet.HasChanges Then
Try
daUrgencias.Update(miDataSet, "Urgencias")
miDataSet.Tables("Urgencias").AcceptChanges()
Catch eX As Exception
MessageBox.Show(eX.Message)
End Try
End If
End Sub
Asi están creados los comandos del dataadapter:
Código:
daUrgencias.SelectCommand = New OleDbCommand("SELECT IdUrgencia, Fecha, Hora, Cliente, Operario, NoOrden, NoContrato, Poliza, HoraEntrada, HoraSalida, Incidencia, Solucion, HoraCierre, Presupuesto, Recambios, Importe, Estado, FranjaHoraria, Facturado, TipoUrgencia FROM Urgencias WHERE TipoUrgencia='" & TipoUrgenciaElegido & "' AND Year(Fecha)=" & AnyoElegido & " AND " & strCondicion & " ORDER BY IdUrgencia", miConn)
Dim objUrgencias As New UrgenciasDB
daUrgencias.InsertCommand = objUrgencias.DameComandosUrgencias("Insert")
daUrgencias.UpdateCommand = objUrgencias.DameComandosUrgencias("Update")
daUrgencias.DeleteCommand = objUrgencias.DameComandosUrgencias("Delete")
Esta es la funcion que devuelve los comandos:
Código:
Public Function DameComandosUrgencias(ByVal Tipo As String) As OleDbCommand
Dim Conn As New OleDbConnection(Configuration.ConfigurationSettings.AppSettings.Item("ConnStr"))
Dim miCM As New OleDbCommand
miCM.Connection = Conn
Select Case Tipo
Case "Insert"
miCM.CommandText = "INSERT INTO Urgencias (Fecha, Hora, Cliente, Operario, NoOrden, NoContrato, Poliza, HoraEntrada, HoraSalida, Incidencia, Solucion, HoraCierre, Presupuesto, Recambios, Importe, Estado, FranjaHoraria, Facturado, TipoUrgencia) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
miCM.Parameters.Add("@p1", OleDbType.Date, 250, "Fecha")
miCM.Parameters.Add("@p2", OleDbType.Date, 250, "Hora")
miCM.Parameters.Add("@p3", OleDbType.Integer, 4, "Cliente")
miCM.Parameters.Add("@p4", OleDbType.Char, 50, "Operario")
miCM.Parameters.Add("@p5", OleDbType.Char, 50, "NoOrden")
miCM.Parameters.Add("@p6", OleDbType.Char, 50, "NoContrato")
miCM.Parameters.Add("@p7", OleDbType.Char, 50, "Poliza")
miCM.Parameters.Add("@p8", OleDbType.Date, 250, "HoraEntrada")
miCM.Parameters.Add("@p9", OleDbType.Date, 250, "HoraSalida")
miCM.Parameters.Add("@p10", OleDbType.LongVarWChar, 8000, "Incidencia")
miCM.Parameters.Add("@p11", OleDbType.LongVarWChar, 8000, "Solucion")
miCM.Parameters.Add("@p12", OleDbType.Date, 250, "HoraCierre")
miCM.Parameters.Add("@p13", OleDbType.Boolean, 2, "Presupuesto")
miCM.Parameters.Add("@p14", OleDbType.LongVarWChar, 8000, "Recambios")
miCM.Parameters.Add("@p15", OleDbType.Double, 8, "Importe")
miCM.Parameters.Add("@p16", OleDbType.Char, 50, "Estado")
miCM.Parameters.Add("@p17", OleDbType.Char, 50, "FranjaHoraria")
miCM.Parameters.Add("@p18", OleDbType.Boolean, 2, "Facturado")
miCM.Parameters.Add("@p19", OleDbType.Char, 50, "TipoUrgencia")
Case "Update"
miCM.CommandText = "UPDATE Urgencias SET Fecha=?, Hora=?, Cliente=?, Operario=?, NoOrden=?, NoContrato=?, Poliza=?, HoraEntrada=?, HoraSalida=?, Incidencia=?, Solucion=?, HoraCierre=?, Presupuesto=?, Recambios=?, Importe=?, Estado=?, FranjaHoraria=?, Facturado=?, TipoUrgencia=? WHERE IdUrgencia=?"
miCM.Parameters.Add("@p1", OleDbType.Date, 250, "Fecha")
miCM.Parameters.Add("@p2", OleDbType.Date, 250, "Hora")
miCM.Parameters.Add("@p3", OleDbType.Integer, 4, "Cliente")
miCM.Parameters.Add("@p4", OleDbType.Char, 50, "Operario")
miCM.Parameters.Add("@p5", OleDbType.Char, 50, "NoOrden")
miCM.Parameters.Add("@p6", OleDbType.Char, 50, "NoContrato")
miCM.Parameters.Add("@p7", OleDbType.Char, 50, "Poliza")
miCM.Parameters.Add("@p8", OleDbType.Date, 250, "HoraEntrada")
miCM.Parameters.Add("@p9", OleDbType.Date, 250, "HoraSalida")
miCM.Parameters.Add("@p10", OleDbType.LongVarWChar, 8000, "Incidencia")
miCM.Parameters.Add("@p11", OleDbType.LongVarWChar, 8000, "Solucion")
miCM.Parameters.Add("@p12", OleDbType.Date, 250, "HoraCierre")
miCM.Parameters.Add("@p13", OleDbType.Boolean, 2, "Presupuesto")
miCM.Parameters.Add("@p14", OleDbType.LongVarWChar, 8000, "Recambios")
miCM.Parameters.Add("@p15", OleDbType.Double, 8, "Importe")
miCM.Parameters.Add("@p16", OleDbType.Char, 50, "Estado")
miCM.Parameters.Add("@p17", OleDbType.Char, 50, "FranjaHoraria")
miCM.Parameters.Add("@p18", OleDbType.Boolean, 2, "Facturado")
miCM.Parameters.Add("@p19", OleDbType.Char, 50, "TipoUrgencia")
miCM.Parameters.Add("@p20", OleDbType.Integer, 4, "IdUrgencia")
miCM.Parameters("@p20").SourceVersion = DataRowVersion.Original
Case "Delete"
miCM.CommandText = "DELETE * FROM Urgencias WHERE IdUrgencia=?"
miCM.Parameters.Add("@p1", OleDbType.Integer, 4, "IdUrgencia")
miCM.Parameters("@p1").SourceVersion = DataRowVersion.Original
End Select
Return miCM
End Function
Espero que alguien pueda echarme una mano.
Matizo una vez más, que puedo hacer altas, modificaciones, eliminaciones, etc. El unico caso que me da problemas es cuando acabo de hacer una alta, guardo los cambios (Update y AcceptChanges), modifico el mismo registro, y vuelvo a guardar los cambios. En este punto me salta el error de concurrencia (Update afectó a 0 registros).
Muchas Gracias y un saludo.
__________________ ..:: moNTeZIon ::.. |