Foros del Web » Programando para Internet » ASPX (.net) »

Problema con funcion para borrar cliente

Estas en el tema de Problema con funcion para borrar cliente en el foro de ASPX (.net) en Foros del Web. Estimado tengo el siguiente problema la funcion siguiente si borra clientes sin obras, y me envia el mensaje cliente borrado, pero, cuando quiero borrar clientes ...
  #1 (permalink)  
Antiguo 10/08/2009, 15:33
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Problema con funcion para borrar cliente

Estimado tengo el siguiente problema la funcion siguiente si borra clientes sin obras, y me envia el mensaje cliente borrado, pero, cuando quiero borrar clientes con obras asociadas obiamente no me deja el problema esta que me envia el mensaje de cliente borrado y no el de no se puede borrar, que estoy haciendo mal:

MI CODIGO:

Código PHP:
public string EliminarCliente(string strrut)
    {
        
Funciones fun = new Funciones();

        
Conexion con3 = new Conexion();
        
con3.Conectar();

        
string sqld "DELETE FROM CLIENTE WHERE CLIENTE.RUT NOT IN(SELECT DISTINCT CLIENTE.RUT FROM OBRA INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA INNER JOIN CLIENTE ON OBRA.RUT = CLIENTE.RUT WHERE (CLIENTE.RUT = OBRA.RUT)) AND CLIENTE.RUT = @RUT";
        
SqlCommand cmd3 = new SqlCommand(sqldcon3.get_conecction());
        
cmd3.Parameters.AddWithValue("@RUT"strrut);

        try
        {
            
cmd3.ExecuteNonQuery();
            
string mensaje "CLIENTE ELIMINADO";
            return 
mensaje;
        }
        catch
        {
            
con3.Desconectar();
            
string mensaje "NO SE PUEDE ELIMINAR EL CLIENTE";
            return 
mensaje;
        }
        
finally
        
{
            
con3.Desconectar();
        }
    } 
Espero que me puedan ayudar, adios.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #2 (permalink)  
Antiguo 10/08/2009, 16:40
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Problema con funcion para borrar cliente

Que tal.

Si tu base de datos esta "protegida" por un constraint entre Cliente y Obra, entonces puedes cambiar tu instrucción SQL por la siguiente;

Código:
"DELETE FROM CLIENTE WHERE CLIENTE.RUT CLIENTE.RUT = @RUT"
Entonces si intentas eliminar un cliente que tiene obras la base de datos marcará un error y será "atrapado" por el boque "try-catch".

Como lo haces actualemente es que seguro la instrucción pasa sin errores puesto que tu estas impidiendo que se "intente" eliminar el cliente.

Espero haberme explicado, sino creo que la clase command tiene una propiedad o método que te dice cuantos registros se han afectado (RowAffected).

Saludos.
  #3 (permalink)  
Antiguo 10/08/2009, 16:57
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Problema con funcion para borrar cliente

Cita:
Iniciado por daniel00 Ver Mensaje
Que tal.

Si tu base de datos esta "protegida" por un constraint entre Cliente y Obra, entonces puedes cambiar tu instrucción SQL por la siguiente;

Código:
"DELETE FROM CLIENTE WHERE CLIENTE.RUT CLIENTE.RUT = @RUT"
Entonces si intentas eliminar un cliente que tiene obras la base de datos marcará un error y será "atrapado" por el boque "try-catch".

Como lo haces actualemente es que seguro la instrucción pasa sin errores puesto que tu estas impidiendo que se "intente" eliminar el cliente.

Espero haberme explicado, sino creo que la clase command tiene una propiedad o método que te dice cuantos registros se han afectado (RowAffected).

Saludos.
Estimado gracias por tu respuesta, le dio justo en el clavo, funciono lo de cambiar la consulta cuando esta restringida po la constraint, gracias daniel00, te pasaste.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:14.