Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consultas SQL V.S. Consultas Clipper (https://www.clubdelphi.com/foros/showthread.php?t=28142)

AGAG4 10-12-2005 16:53:45

Consultas SQL V.S. Consultas Clipper
 
Uso D6, Firebird 1.52, IBX 6.08

Buen día tengan todos ustedes, aqui vengo de nuevo con este problema que me trae muy preocupado, les platico:
En mi aplicación (Facturacion) tengo una consulta de Artículos, dicha consulta se hace la busqueda por la DESCRIPCION del Artículo, la velocidad de las busquedas estan Impecables Super Rápidas, pero ahora me encontre con algo, como las consultas te devuelven los registros que se le piden por ejemplo, busco los artículos con su descripción que comiencen con FR me devuelve todos los que comien FR Correctamente, ahora en el Otro sistema que usaban (Clipper) hacía lo siguiente, les posicionaba en los artículos con descripción FR pero aparte mostraba TODOS los que estaban Antes y Después por ejemplo:

CONSULTA EN CLIPPER BUSCANDO ARTÍCULO FR
....
E1
E2
E3
E4
FR1 <-Cursor se posiciona AQUI Correctamente
FR2
FR3
G1
G2
G3
G4
...

CONSULTA EN FIREBIRD BUSCANDO ARTÍCULO FR
Usando Sentencia=
Select Clave,Descrip from Articulos where Descrip Starting With 'FR'

FR1 <-Cursor se posiciona AQUI Correctamente
FR2
FR3

Sólo devuelve los registros que se le pidieron después de la clausula Where.

He investigado sobre esto para similar lo que hace clipper, pero por lo que he encontrado no recomiendan hacer LOCATE's para dichas consultas, es por eso que quiero encontrar como hacer algo similar pero en SQL que muestre Todos los registros pero que se posicione en donde el usuario vaya pidiendo. Yo se que es una mala técnica de hacer consultas pero asi lo quiere el USUARIO y asi esta impuesto hacerlo gracias a clipper y no entiende que la mejor forma de hacerlo y más rápida, es con consultas exactas.

Agradezco cualquier información y ayuda al respecto.

Casimiro Notevi 10-12-2005 23:16:39

se me ocurre la chapuza de usar una tabla en vez de un query, usar locate y listo :(
pero como tengas muchos registros lo vas a sufrir :confused:

fjcg02 11-12-2005 19:25:01

Por la experiencia que me da haber migrado el sistema de la empresa para la que trabajé de clipper a delphi+oracle, ya te aconsejo que vayas intentando convencer al usuario de que lo que antes se hacía de una manera ahora se hace en otra. Si no te volverán loco. Al principio, les resultará 'raro', pero acabarán acostumbrandose.
Utiliza consultas parametrizadas, un filtro al empezar para construir las consultas y así poco a poco, llevandoles a tu terreno. Clipper es rápido, pero machaca el ancho de banda de la red.
Espero que te sirva de ayuda.

Un saludo

AGAG4 12-12-2005 16:31:53

Asi es
 
Asi es compañeros, miren, la empresa con la que trabajo tienen 7 sucursales y estoy en la primera casi nos vamos a brincar a la segunda, pero hay 2 usuarios de 8 que no estan conformes con el tipo de consultas, se quedaron acostumbrados con clipper entre esos 2 usuarios esta el DUEÑO de la empresa que en ocasiones se pone a usar el sistema para atender a los clientes y hace poco se Enfurecio del sistema que no podía encontrar 1 Artículo en especial, me acerque y le explique la forma de hacerlo pero NO Entendio, me pidio que lo hiciera igual que el otro porque estaban acostumbrados a buscar cierto artículo y a desplazarte entre el contenido hacía adelante y hacía atrás en busca de los casi 60,000 artículos que manejan, me sorprende la velocidad de Clipper para hacer esos tipos de consultas como si fuesen un LOCATE para mover el cursor entre tanto registro cosa que en firebird sería super lento.

Pero en fin voy hacer pruebas espero salir bien en esto.

Gracias por sus sugerencias y que tengan buen día y Felices Fiestas de Navidad!!!!

AGAG4 13-12-2005 16:59:57

Resuelto
 
Ahora llegue a la solución, le plantie la forma de que al consultar, se buscarían dentro de la descripción del artículo cadenas de caracteres para llegar al resultado más rápido es decir, si buscan el modelo ó el código del producto del proveedor que es lo que le ponen a las descripciones de los artículos, yo hago la siguiente consulta:
Código SQL [-]
Select *from Tabla where Campo Containing 'QUAK' and Campo Containing 'LTS'

Les comente que son busquedas más exactas y mucho más rapidas que andar buscando en el mundo de artículos a como los tenían antes, y lo bueno que los convencí, espero no cambien de opinión, sinceramente esta es la mejor forma de hacer busquedas dentro de ciertos campos.

Saludos....

FOURIER 14-12-2005 04:09:50

Espero te sirva
 
yo creo que deberías de probar con

Select Clave,Descrip from Articulos where Descrip Starting With 'FR' or Descrip>='FR';
eso te debe funcionar para lo que quieres :)

fjcg02 14-12-2005 08:53:08

Hola a todos
Yo personalmente pondría una pantalla en la que se pidan varios datos para posteriormente aplicarle un filtro construyendo dinámicamente la consulta.
Por ejemplo, pondría un filtro para buscar por clave, descripción, familia, estado ( stock, reservado, ... ), cualquier dato que manejeis; que sugiera algún filtro al entrar para evitar realizar la consulta de los 60.000 articulos. A partir de ahí, la consulta irá más orientada y la respuesta siempre será más rápida. Este filtro se podría utilizar tantas veces como se quisiera.

Este método me funcionó y la verdad es que los usuarios no pusieron ningún problema. Además, en cuanto se acostumbran y se dan cuenta de que si afinan la consulta el retardo es mínimo, ellos mismos tienden a utilizarlo intensivamente y a mejorarlo. seguro que te sugieren algún dato más para filtrar.

Un saludo

AGAG4 20-12-2005 15:59:31

oki
 
Gracias por sus Respuestas....

Felices Fiestas!!!!


La franja horaria es GMT +2. Ahora son las 11:56:14.

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