Hola,
Yo use SQL dinamico para eso por el tema del sort, pero para el resto de las
cosas no es necesario...

Salu2


On 2/5/07, Maxi Accotto <[EMAIL PROTECTED]> wrote:

Hola, no veo la necesidad de crear consultas dinamicas para esto, si es
varchar solo pones where campo > param and campo < param.

Con respecto al sql dinamico:

http://www.hayes.ch/*sql*/sql_dinamico.html
<http://www.hayes.ch/sql/sql_dinamico.html>


2007/2/4, The Developer <[EMAIL PROTECTED]>:
>
>  Hola Gente
> Estoy teniendo problemas al hacer un SP que filtra por rangos de codigo
> el problema en cuestion es que tengo una tabla cuyas claves son
> alfanumericas ( Varchars )y tengo que filtrar por rangos (por ejemplo todos
> aquellos proveedores que esten entre "pro0001" y "pro0023" )
> La consulta la creo dinamicamente , al parecer el problema esta en que
> cuando le paso los parametros no me los toma como varchar sino como un
> simbolo cualquiera
> me tira errores del estilo:
>
> Mens. 207, Nivel 16, Estado 1, Línea 17
>
> Invalid column name 'pro00001'.
>
> Mens. 207, Nivel 16, Estado 1, Línea 17
>
> Invalid column name 'pro00003'.
>
> LA consulta la armo de la siguiente manera:
>
> ALTER
> PROCEDURE [dbo].[ReporteListadoProveedores]
>
> (
>
> @CodigoDesde
> varchar(10) ,
>
> @CodigoHasta
> varchar(10) ,
>
> @SortBy
> int
>
> )
>
> AS
>
> --obtener los parametros y armar e ejecutar la query de acuerdo a ello
>
> Declare @SQLQuery VarChar(8000 )
>
> Declare @from VarChar(1000 )
>
> Declare @Where VarChar(1000 )
>
> Declare @Sort VarChar(1000 )
>
> set @Where = ''
>
> set @Sort = ''
>
> --para probarlo
>
> --exec ReporteListadoProveedores @CodigoDesde = '1' , @CodigoHasta = '1'
> , @SortBy = 2
>
> select @from ='SELECT Proveedor.ProveedorCodigo AS cod_proveedor
>
> ,Proveedor.ProveedorRazonSocial AS razon_social
>
> ,Localidad.LocalidadNombre AS localidad
>
> ,Provincia.ProvinciaNombre AS provincia
>
> ,1223 AS cod_postal
>
> ,Proveedor.ProveedorTelefono AS telefono
>
> ,Domicilio.DomicilioFax AS tel_fax
>
> ,CategoriaIva.CategoriaIvaCodigo AS cod_iva
>
> ,CategoriaIva.CategoriaIvaDescripcion AS desc_iva
>
> ,Proveedor.ProveedorCUIT AS cuit
>
>  FROM Proveedor LEFT OUTER JOIN
>
> Domicilio ON Proveedor.DomicilioId = Domicilio.DomicilioId LEFT OUTER
> JOIN
>
> Localidad ON Domicilio.LocalidadId = localidad.LocalidadId LEFT OUTER
> JOIN
>
> Provincia ON localidad.ProvinciaID = Provincia.ProvinciaID LEFT OUTER
> JOIN
>
> CategoriaIva ON Proveedor.CategoriaIvaId = CategoriaIva.CategoriaIvaID'
>
> --setear la condicion del where
>
> IF @CodigoDesde <> '0'
>
> BEGIN
>
> --Print 'entro 1'
>
> IF @CodigoHasta IS NOT NULL
>
> BEGIN
>
> --Print 'entro 2'
>
> select @Where = ' WHERE Proveedor.ProveedorCodigo BETWEEN ' + 'CAST('+
> @CodigoDesde +' AS varchar(10))' + ' AND ' + 'CAST('[EMAIL PROTECTED] + 'AS
> varchar(10)) '
>
> END
>
> END
>
> --setear el orden
>
> IF @SortBy = 1
>
> BEGIN
>
> Select @Sort = ' ORDER BY Proveedor.ProveedorCodigo DESC'
>
> END
>
> ELSE
>
> BEGIN
>
> Select @Sort = ' ORDER BY Proveedor.ProveedorRazonSocial DESC'
>
> END
>
> --TODO
>
> --falta el codigo postal en la tabla domicilio y ponerlo para que se
> arme bien en la consulta
>
> --armar la consulta
>
> select @SQLQuery = @from + @Where + @Sort
>
> --solo para testear
>
> Print @SQLQuery
>
> --ejecutar la consulta
>
> Exec (@SQLQuery)
>
>
> Si alguien alguna ves hizo algo parecido y me puede dar una mano lo
> agradecere !
> Desda ya gracias !
> Saludos
>
> Julian
>
>
>



--
----------------------------------------------------
Microsoft MVP en SQL Server
SQLTotalConsulting - Servicios & proyectos en SQLServer
Orador Culminis - Microsoft Influencier
www.sqlgurus.org
-------------------------------------------

Responder a