Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/11/2005, 06:43
Avatar de moNTeZIon
moNTeZIon
 
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 1 mes
Puntos: 9
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 ::..