Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Select ordenado por un campo pero localizado por otro (https://www.clubdelphi.com/foros/showthread.php?t=28802)

ingel 03-01-2006 13:49:32

Select ordenado por un campo pero localizado por otro
 
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
Código:

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


La franja horaria es GMT +2. Ahora son las 23:42:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi