locked
No puedo actualizar ni eliminar porque me sale este error : "El método especificado no es compatible." en asp RRS feed

  • Pregunta

  • Hola tengo un problema, cuando quiero eliminar desde el grid me tira ese error...y no me deja eliminar e igual pasa cuando quiero hacer un update! Necesito que me ayuden porfavor!! 

    Se los pido porfavor! y un ejemplo de como hacer si? 

    programo en asp .net  vb 2010 con devexpress 2010...ayuda!

    miércoles, 19 de junio de 2013 22:07

Respuestas

Todas las respuestas

  • Puedes mostrarnos como realizas esa operación? Gracias

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 19 de junio de 2013 23:33
    Moderador
  • Este es mi código

    Protected Sub dgvActi_Detalle_RowUpdating(ByVal sender As Object, ByVal e As DevExpress.Web.Data.ASPxDataUpdatingEventArgs) Handles dgvActi_Detalle.RowUpdating
            Try
                'CABECERA'
                Dim query2 As String = "Update CJM_TEST.TACTIC SET NACTI_ID = '9', CACTI_CODE = 'CODE', CACTI_NAME = 'NAME', DACTI_FECHA = '20-06-2013', NACTI_TOTAL_CABECERA = '70' where NACTI_ID = '9'"
                Dim command2 As New OleDbCommand(query2, conexion)
                If conexion.State = ConnectionState.Open Then
                    conexion.Close()
                End If
                conexion.Open()
                command2.ExecuteNonQuery()
                conexion.Close()
                e.Cancel = True
    
                'DETALLE'
                Dim query As String = String.Format("Update {0}.TACTID set NACTI_ID = {1}, CACTI_NAME = {2}, NACTI_CANT = {3}, CACTI_CODE = {4}, CACTI_ESTADO = {5}, CACTI_RETORNABLE = {6}, CACTI_OBSERVACION = {7}, NBODE_ID = {8}, NACTI_TOTAL_DETALLE = {9} Where NACTI_ID = {1}", tabla_nombre, Val(txtActi_ID.Text), Convert.ToString(txtActi_Presentacion.Text), Convert.ToInt32(txtActi_Cant.Text), Convert.ToString(txtActi_Code_Detalle.Text), Convert.ToString(cmbActi_Estado.Text), Convert.ToString(cmbActi_Return.Text), Convert.ToString(txtActi_Obse.Text), Convert.ToString(cmbActi_Bodega.Text), Convert.ToInt32(txtActi_Total_Detalle.Text))
                Dim command As New OleDbCommand(query, conexion)
                If conexion.State = ConnectionState.Open Then
                    conexion.Close()
                End If
                conexion.Open()
                command.ExecuteNonQuery()
                conexion.Close()
            Catch ex As Exception
                MsgBox("No se pudo insertar la cabecera", MsgBoxStyle.Information)
            End Try
            e.Cancel = True
        End Sub

    Y este es otro error que me sale!

    jueves, 20 de junio de 2013 19:58
  • hola

    el problema que tienes es que no usas parametros, eso de armar la query en un string es incorrecto

    lo que no entiedno tampoco es porque defines la tabla de forma dinamica, esto tabla_nombre para que sirve? se supone que la tabla de detalle deberia ser una sola

    If conexion.State = ConnectionState.Close Then
    	conexion.Open()
    End If
    
    Dim query As String = "Update Detalles set  CACTI_NAME = @name, NACTI_CANT = @cant, .. Where NACTI_ID = {1}"
    Dim command As New OleDbCommand(query, conexion)
    
    command.Parameters.AddWithValue("@name", txtActi_Presentacion.Text)
    command.Parameters.AddWithValue("@cant", Convert.ToInt32(txtActi_Cant.Text))
    .
    .
    command.Parameters.AddWithValue("@id", Val(txtActi_ID.Text))
    
    command.ExecuteNonQuery()
    
    conexion.Close()

    alli solo puse algunos porque son muchos, pero la idea es definir la coleccion Parameters del command

    implementalo de esta forma y seguro funciona, recuerda respectar los tipos de datos, si un campo es del tipo fecha convierte el valor a datetime cuando lo asignes al parametro

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 20 de junio de 2013 21:09
  • Ok, gracias por contestar Leandro,

    resulta que coloco "tabla_nombre" ya que trabajo con iSeries AS400 y Visual Studio 2010 plataforma asp.net, no se si ya ha trabajado con AS400, pues la estructura de las tablas es diferente, y tengo que acceder a ellas de esta manera: "BD.NombreTabla" en este caso,"tablaNombre" viene siendo la BD y TACTID el nombre de la tabla. En su ejemplo sería Detalles. 

    Intenté de esa manera que me describes, pero no es la misma sintaxis. Trabajo con un Oledbc para conectarme al iSeries AS400, y la única manera de poder hacer consultas, al menos la que yo pude, fue colocando las sentecias de tipo string.

    Otra pregunta Leandro, eso del tipo de fecha lo coloco asi :  Format(CDate(dtActi_Date.Text), "yyyy-MM-dd")

    me darias un ejemplo de convertir la fecha a datetime porfavor?

    habia pensado asi: dtFecha.text=  datetime.today

    jueves, 20 de junio de 2013 21:39
  • ok entonces el usoa de @ no aplciaria para los parametros

    AS400 SQL query with Parameter

    pro igual no queire decir que no se puedea aplicar


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio ParraModerator jueves, 20 de junio de 2013 21:42
    • Marcado como respuesta jasserita viernes, 21 de junio de 2013 20:23
    jueves, 20 de junio de 2013 21:41