Hola, bueno si mandas para hacer sort dinamicos entonces tenemos un problema
de disenio, eso lo deberias resolver en el dataset

El día 5/02/07, Julian Berlin <[EMAIL PROTECTED]> escribió:

 Uso SQL dinamico porque hay cosas que son opcionales , como el sort y la
condicion del where

Se puede usar el operador Between con varchars ¿?  Quizas el problema sea
que estoy usando between , voy a probar usar "<" y ">" en lugar de between

Gracias por responder

Saludos



*Julián R Berlín**

*
 ------------------------------

*From:* [email protected] [mailto:[EMAIL PROTECTED] *On Behalf Of *Maxi
Accotto
*Sent:* Lunes, 05 de Febrero de 2007 10:55 a.m.
*To:* Julian Berlin
*Subject:* [dbms] filtrar por rango...



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
-------------------------------------------




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

Responder a