PDA

Ver la Versión Completa : Select ordenado por un campo pero localizado por otro


ingel
03-01-2006, 13:49:32
Hola a todos .. Estoy reemplazando en un sistema en produccion los componentes tTable por tQuerys ya que no es optimo el tiempo de respuesta.
Mi consulta es por lo siguiente : en un ABM tengo 2 flechas para ir al registro siguiente y al anterior y a su vez 2 radios para ordenar por codigo o por descripcion ...con el TTable no habia problema porque hacia un select * order by coigo o descripcion y con las flechas y la instrucciones prior o next la recorria ..pero..

Ahora, cuando entro al ABM hago un 'select * from articulos where codigo_articulo =: codigo' para posicionarme y mostrar.

Cuando me muevo con las flechas ( si tengo marcado ordenado por codigo)
hago al mismo select pero con el parametro codigo+1 o codigo-1

PERO si lo ordenan por 'descripcion' es donde viene mi complicacion
porque busco por codigo pero tengo que ir al siguiente o al anterior POR DESCRIPCION ..
No me parece optimo buscar por el campo descripcion poqeu no se el tamaño del string a buscar como para hacer un .. where descripcion like 'algo%'
y atinarle a la descripcion siguiente.

Se me ocurre hacer algun tipo de consulta que me devuelva x cantidad de registros ANTES y x cantidad DESPUES de MI CODIGO pero ordenado por descripcion ... el problema es que no se como .. :)

seria algo asi como

select * from articulos where codigo_articulo =:codigo
or (10 para arriba) or (10 para abajo)
order by descripcion

se entendió? se puede hacer algo asi ?
con el viejo Recno() de clipper se podria , creo que la nueva version de SQL ya lo trae..pero por ahora dispongo solo de SQL 2000

gracias .. saludos
Ingel

juliopag1
04-01-2006, 17:07:38
realmente no entendi mucho lo que deseas expresar, pero si mas o menos enteni quieres desplazarte entre registro y si es asi digo yo porque no usas .Next o .Prior
Query.Next o Query.Prior
Creo que es lo que tratas de hacer pero si aclaras mejor la situacion creo que te responderia mejor

ingel
04-01-2006, 17:33:23
El tema es mas o menos asi ...
Yo hago una query pero SOLO retorna UN registro pues lo hago por CODIGO
si me quiero mover al sig hago las misma query con CODIGO+1
Esto si el orden es por codigo , PERO si el orden me lo fijar por descripcion
YO deberia ir a LA DESCRIPCION SIGUIENTE y no la conozco ...
puedo obtener la DESCRIPCION del PRIMERO que busque por codigo
pero la siguiente descripcion NO SE COMO SERA como para hacer una busqueda por DESCRIPCION LIKE substring(cDes,1,??) .. para que no me saltee o no localice ninguna ..


ej ..

Codigo 1 ----- Descripcion 11
Codigo 4 ----- Descripcion 112
Codigo 3 ----- Descripcion 1122
Codigo 2 ----- Descripcion 22

Si me posiciono por codigo en el 3 por ejemplo .. si quiero buscar el siguiente por descripcion nos e si es 1122xx o 2xx

Entonces lo que quiero hacer es buscar el codigo 3 pero ordenando por descripcion y obtener el codigo ant y siguiente en este caso seran el 4 y el 2
para cuando me mueva a la descripcion siguiente ..haga la busqueda por el codigo 2.

Espero haya quedado mas claro .

Me comentaron algo de RecodSet en SQL pero no lo pude investigar todavia

GRACIAS ..por la respuesta.
Saludos
Ingel