none
dataadapter updatecommand RRS feed

  • Pregunta

  • tengo una datagridview donde cargo datos de dos tablas relacionadas, los datos de una son solo para visualizar y solo hay que grabar (update o insert) en la otra.

    he hecho un adapter con una select para que se carguen los datos en el grid pero luego quiero hacer un updatecommand y un insertcommand con solo los campos de la tabla tratada, ya qeu tal y como esta la select no lo puedo hacer

     Private Sub cargarDatosCalidadAdapter()
        ds = New DataSet
        da = Nothing
        grd.DataSource = Nothing
        grd.Refresh()
        Dim sql As String
        
        sql = " SELECT idRecepcionesCalidadLinea,RecepcionLinea,Caracteristica, "
        sql = sql & " Tolerancia, ValorObtenido,Frecuencia,TecnicaMedicion, "
        sql = sql & " dbo.RecepcionesCalidadLineas.Resultado, dbo.RecepcionesCalidadLineas.OK"
        sql = sql & " FROM MaterialesControles LEFT OUTER JOIN.RecepcionesCalidadLineas "
        sql = sql & " ON dbo.MaterialesControles.Material = dbo.RecepcionesCalidadLineas.Material "
    
        sql = sql & " where recepcionLinea=" & linea
    
        da = New SqlDataAdapter()
        da.SelectCommand = New SqlCommand(sql, Conn.Conexion)
        Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
        cb.GetUpdateCommand()
        cb.GetDeleteCommand()
        cb.GetInsertCommand()
        da.Fill(ds)
        sql = "UPDATE recepcionescalidadlineas SET resultado = ?, ok = ? "
        sql = sql & " WHERE idRecepcionesCalidadLinea= ?"
        da.UpdateCommand.CommandText = sql    'cb.GetUpdateCommand
        'da.DeleteCommand = cb.GetDeleteCommand
        'da.InsertCommand = cb.GetInsertCommand

    Aran
    lunes, 31 de mayo de 2010 10:58

Respuestas

  • En vista de que nadie me ha podido ayudar a solucionar esto he cambiado la estrategia y lo he hecho de otra forma

    Muchas gracias de todos modos, cierro el hilo


    Aran
    • Marcado como respuesta aticnet martes, 15 de junio de 2010 10:48
    martes, 15 de junio de 2010 10:47

Todas las respuestas

  • Hola.

    ¿Cuál es la tabla que quieres actualizar (no el DataAdapter, la tabla)? ¿Qué sentencia t-sql estás ejecutando y no funciona?


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    lunes, 31 de mayo de 2010 12:31
  • quiero actualizar la tabla RecepcionesCalidadLineas con los campos que muestro de ella en la select (resultado y ok) y ademas quiero poder hacer un insert insertando los campos idRecepcionesCalidadLinea,RecepcionLinea

     


    Aran
    lunes, 31 de mayo de 2010 13:15
  • Hola.

    Lo siento, pero en el código que suministras yo sólo veo una consulta en la que la tabla de referencia es MaterialesControles y luego una sentencia de update, pero ningún insert ni ningún dataset en el que puedas incluir el insert. Es posible que el problema resida en que no indicas sentencias de sql, sino código VB.

    ¿Quieres que mueva el hilo a un foro de desarrollo de VB o de ADO.NET?


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    martes, 1 de junio de 2010 11:19
  • si te parece que tiene que estar en ese hilo y que desde ahi alguien me puede ayudar, muevelo y muchas gracias por tu ayuda

     

     


    Aran
    miércoles, 2 de junio de 2010 6:48
  • a ver si me explico mejor:

    tengo un Datagridview que cargo con los datos que leo de 2 tablas RecepcionesCalidadLineas y MaterialesControles, pero a la hora de grabar o actualizar solo quiero hacerlo en la tabla recepcionesCalidadLineas.

    Unas veces será alta (insert) sino existia registro en la tabla RecepcionesCalidadLineas y otras veces será modificación del registro (update), creo manualmente el insertcommand y el updatecommand

    Este es el codigo que tengo actualmente en mi aplicación AL PULSAR GRABAR ME DA UN ERROR DE CONCURRENCIA

    POR FAVOR SI ALGUIEN ME AYUDA

    'SUB PARA CARGAR DATOS EN EL GRID
    Private Sub cargarDatosCalidadAdapter()
        ds = New DataSet
        da = Nothing
        grd.DataSource = Nothing
        grd.Refresh()
        Dim sql As String
        'idRecepcionCalidadLinea quito pk es autonumerico
        sql = " SELECT idRecepcionCalidadLinea, RecepcionLinea,Caracteristica, "
        sql = sql & " Tolerancia, ValorObtenido,Frecuencia,TecnicaMedicion, RESULTADO,OK "
        'sql = sql & " dbo.RecepcionesCalidadLineas.Resultado, dbo.RecepcionesCalidadLineas.OK"
        sql = sql & " FROM MaterialesControles LEFT OUTER JOIN.RecepcionesCalidadLineas "
        sql = sql & " ON dbo.MaterialesControles.Material = dbo.RecepcionesCalidadLineas.Material "
        sql = sql & " where (recepcionLinea=" & linea & " or materialescontroles.material=" & idMaterial & ")"
    
        da = New SqlDataAdapter()
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(da)
        da.SelectCommand = New SqlCommand(sql, Conn.Conexion)
        ds.Tables.Add(New DataTable("calidad"))
        da.Fill(ds.Tables("calidad"))
        grd.DataSource = ds.Tables("calidad")
        
        'update command
        sql = "UPDATE recepcionescalidadlineas SET recepcionLinea=@recepcionLinea,resultado =@resultado , ok = @ok "
        ' sql = sql & " WHERE idRecepcionCalidadLinea= @idRecepcionCalidadLinea"
        da.UpdateCommand = New SqlCommand(sql, Conn.Conexion)
        da.UpdateCommand.Parameters.Add("@recepcionlinea", SqlDbType.Int).Value = linea
        da.UpdateCommand.Parameters.Add("@resultado", SqlDbType.Text).SourceColumn = "resultado"
        da.UpdateCommand.Parameters.Add("@Ok", SqlDbType.Bit).SourceColumn = "OK"
    
        'insert command
        sql = "INSERT INTO recepcionescalidadlineas (recepcionLinea,resultado,ok)"
        sql = sql & " VALUES(@recepcionLinea,@resultado,@ok)"
        da.InsertCommand = New SqlCommand(sql, Conn.Conexion)
        da.InsertCommand.Parameters.Add("@recepcionlinea", SqlDbType.Int).Value = linea
        da.InsertCommand.Parameters.Add("@resultado", SqlDbType.Text).SourceColumn = "resultado"
        da.InsertCommand.Parameters.Add("@Ok", SqlDbType.Bit).SourceColumn = "OK"
    
        
      End Sub
    
    'SUB PARA GRABAR LOS CAMBIOS
      Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
       
        If ds.HasChanges Then
          ds.Tables(0).GetChanges()
          da.Update(ds.Tables(0))
        End If
      End Sub

    a tabla sql con los insert y update que hagan falta segun el registro exista o no

    miércoles, 2 de junio de 2010 7:45
  • Por favor!! alguien me puede ayudar??

    necesito solucionar esto cuanto antes y no se que hacer

    no me he explicado bien? o es complicado tratar de hacer lo que intento?

    se me ocurre ir leyendo y grabando del grid pero tampoco se como o sino crear dos dataadapters cada uno con una tabla con un unico dataset pero luego a la hora de cargar los datos en el grid tengo que enseñar los campos de las dos tablas relacionados y al grabar tengo que grabar solo en una

    por favor ayuda!

    gracias


    Aran
    miércoles, 2 de junio de 2010 17:00
  • En vista de que nadie me ha podido ayudar a solucionar esto he cambiado la estrategia y lo he hecho de otra forma

    Muchas gracias de todos modos, cierro el hilo


    Aran
    • Marcado como respuesta aticnet martes, 15 de junio de 2010 10:48
    martes, 15 de junio de 2010 10:47