Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Armar consulta avanzada con procedimiento almacenado

Estas en el tema de Armar consulta avanzada con procedimiento almacenado en el foro de SQL Server en Foros del Web. Hola, hice este codigo en vb.net el codigo arma una consulta segun los parametros introducidos por el usuario, necesito hacer un procedimiento almacenado que haga ...
  #1 (permalink)  
Antiguo 30/06/2008, 16:58
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 3 meses
Puntos: 0
Armar consulta avanzada con procedimiento almacenado

Hola, hice este codigo en vb.net el codigo arma una consulta segun los parametros introducidos por el usuario, necesito hacer un procedimiento almacenado que haga lo mismo que este codigo de vb.net:

Código:
  Dim condicion As String
        condicion = ""
        If Trim(nombre1) <> "" Then
            condicion = condicion & "(NOMBRE_C Like '%" & nombre1 & "%')and"
        End If
        If Trim(calle1) <> "" Then
            condicion = condicion & "(CALLE Like '%" & calle1 & "%')and"
        End If
        If Trim(colonia1) <> "" Then
            condicion = condicion & "(COLONIA Like '%" & colonia1 & "%')and"
        End If
        If Trim(poblacion1) <> "" Then
            condicion = condicion & "(POBLACION Like '%" & poblacion1 & "%')and"
        End If
        If Len(condicion) Then
            If Right(condicion, 3) = "and" Then
                condicion = Left(condicion, Len(condicion) - 3)
            End If
        End If
Espero que alguien me pueda echar la mano !!!
Saludos!!!
  #2 (permalink)  
Antiguo 30/06/2008, 17:27
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Armar consulta avanzada con procedimiento almacenado

Código:
Where  (Case When len(rtrim(@Nombre)) = 0 
             Then 1 
             Else Case When Nombre_C like '%' + @Nombre + '%' 
                       Then 1 
                       Else 0 End) = 1  And
		(Case When len(rtrim(@Calle1)) = 0 
             Then 1 
             Else Case When Calle like '%' + @Calle1 + '%' 
                       Then 1 
                       Else 0 End) = 1
Y lo mismo para los demas parametros...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 03/07/2008, 17:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Armar consulta avanzada con procedimiento almacenado

Hola, gracias por tu respuesta, pero he podido armar la consulta me manda error en los ()

Espero me puedas ayudar Por favor

create procedure consulta

@Nombre AS VARCHAR(50),
@Calle AS VARCHAR(50),
@Colonia AS VARCHAR(50),
@Carrera AS VARCHAR(50)

AS

SELECT * FROM DatosGenerales
Where (Case When len(rtrim(@Nombre)) = 0
Then 1
Else Case When Nombre_C like '%' + @Nombre + '%'
Then 1
Else 0 End) = 1 And
(Case When len(rtrim(@Calle1)) = 0
Then 1
Else Case When Calle like '%' + @Calle1 + '%'
Then 1
Else 0 End) = 1
  #4 (permalink)  
Antiguo 03/07/2008, 18:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Armar consulta avanzada con procedimiento almacenado

Por un (, debe haber un )

Revise esa condicion.
  #5 (permalink)  
Antiguo 04/07/2008, 08:35
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Armar consulta avanzada con procedimiento almacenado

Una disculpa, me falto un END en la construccion de los CASE..

Tambien todo Case lleva un END... pero se me paso escribirlo.



Código:
Where  (Case When len(rtrim(@Nombre)) = 0 
             Then 1 
             Else Case When Nombre_C like '%' + @Nombre + '%' 
                       Then 1 
                       Else 0 
                       End
             End) = 1  And
		(Case When len(rtrim(@Calle1)) = 0 
             Then 1 
             Else Case When Calle like '%' + @Calle1 + '%' 
                       Then 1 
                       Else 0 
                       End
             End) = 1

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 09:26.