none
Procedimiento almacenado para eliminación en varias tablas RRS feed

  • Pregunta

  • Amigos buenos días , quiero consultarles algo he realizado un procedimiento almacenado en cual  me elimina los registro   de dos tablas que coincidan con el numero de Pedido de la tabla pedidos y a su vez en la tabla pedidos se me actualiza  el estado a 'C' para una futura reactivacion , este me esta funcionando muy bien desde  SQL SERVER, pero cuando llamo el procedimiento almacenado desde C#  y al hacer la validación de que si el numero de Pedido existe y el numero de Remisión no este se puede cancelar de lo contrario  me saca un alerta de que no se puede cancelar  dicho Pedido por que ya cuenta con numero de Remision, pero  siempre que voy a cancelar y el numero de Remision no existe este me arroja  alerta  en vez de cancelarlo.

    este es mi procedimiento almacenado 

    create proc CancelarPedidos
    @Pedido int,
    as
    if exists(select Pedido from TlbPedidos where Pedido = @Pedido)

    begin
       delete from SAFACT where NumeroD = CONVERT(varchar(10),@Pedido)
       delete from SAITEMFAC where NumeroD = CONVERT(varchar(10),@Pedido)
       update TlbPedidos set IDEstado ='C'
     end 

     este es mi codigo en C#  donde valido si existe o no el codigo de Remision

               

     if (!CADPCliente.existeRemision(txtRemision.Text))
                {
                    CADPCliente.CancelarPedido(Convert.ToInt32(Pedido));
                    ClientScript.RegisterStartupScript(this.GetType(), "Mensaje",
                    "<Script>swal('Mensaje!', 'Registro cancelado exitosamente!', 'success')</Script>");
                    limpiar();

                }
                if(CADPCliente.existeRemision(txtRemision.Text))
                {

                   ClientScript.RegisterStartupScript(this.GetType(), "Mensaje",
                 "<Script>swal('Mensaje!', 'Este Pedido no puede ser cancelado, ya que su numero de remisión a sido asignado')</Script>");
                  txtPedido.Focus();
                 return;
                }

    espero me puedan ayudar .


    Daniel

    miércoles, 8 de enero de 2020 15:46

Todas las respuestas

  • Hola, ahí estas mostrando el procedure de cancelarpedido , pero según muestras el código el problema estaría en

     if (!CADPCliente.existeRemision(txtRemision.Text))

    el método existeRemision, podrías mostrar el código de como lo implementas?


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    miércoles, 8 de enero de 2020 15:57
  • hola gracias  por responder , este es el metodo 

      public static bool existeRemision(string remision)
            {
                return Convert.ToString(adapter.ExisteRemision(remision)) == "1";
            }


    Daniel

    hola ya me esta funcionando era solo igualar remision = remision 

      return Convert.ToString(adapter.ExisteRemision(remision)) == remision ;

    pero ahora solo me elimina  en una tabla y en la otra se queda como buscando y sale un error que dice System.Data.SqlClient.SqlException: 'Se agotó el tiempo de espera de ejecución. El período de tiempo de espera transcurrió antes de la finalización de la operación o el servidor no responde.'

    • Editado Dannycv012 miércoles, 8 de enero de 2020 16:35
    miércoles, 8 de enero de 2020 16:09