Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Demora en consulta de tabla

Hola amigos del foro, tengo la siguiente tabla
Código SQL [-]
SET SQL DIALECT 3;



/******************************************************************************/
/*                                   Tables                                   */
/******************************************************************************/


CREATE GENERATOR GEN_CUM_ID;

CREATE TABLE CUM (
    IDE                       CODIGONUMERICO NOT NULL /* CODIGONUMERICO = INTEGER NOT NULL */,
    PRODUCTO                  T240 /* T240 = VARCHAR(240) */,
    TITULAR                   T240 /* T240 = VARCHAR(240) */,
    REGISTROSANITARIO         T240 /* T240 = VARCHAR(240) */,
    FECHAEXPEDICION           T240 /* T240 = VARCHAR(240) */,
    FECHAVENCIMIENTO          T240 /* T240 = VARCHAR(240) */,
    ESTADOREGISTRO            T240 /* T240 = VARCHAR(240) */,
    EXPEDIENTECUM             T240 /* T240 = VARCHAR(240) */,
    CONSECUTIVOCUM            NUMERO /* NUMERO = INTEGER */,
    CANTIDADCUM               NUMERO /* NUMERO = INTEGER */,
    PRESENTACIONCOMERCIALCUM  T240 /* T240 = VARCHAR(240) */,
    ESTADOCUM                 T240 /* T240 = VARCHAR(240) */,
    FECHAACTIVO               T240 /* T240 = VARCHAR(240) */,
    FECHAINACTIVO             T240 /* T240 = VARCHAR(240) */,
    UNIDAD                    T240 /* T240 = VARCHAR(240) */,
    ATC                       T240 /* T240 = VARCHAR(240) */,
    DESCRIPCIONATC            T240 /* T240 = VARCHAR(240) */,
    VIAADMINISTRACION         T240 /* T240 = VARCHAR(240) */,
    CONCENTRACION             T240 /* T240 = VARCHAR(240) */,
    PRINCIPIOACTIVO           T240 /* T240 = VARCHAR(240) */,
    UNIDADMEDIDA              T240 /* T240 = VARCHAR(240) */,
    CANTIDAD                  NUMERO /* NUMERO = INTEGER */,
    UNIDADDEREFERENCIA        T240 /* T240 = VARCHAR(240) */,
    FORMAFARMACEUTICA         T240 /* T240 = VARCHAR(240) */,
    FABRICANTEIMPORTADOR      T480 /* T480 = VARCHAR(480) */,
    MODALIDAD                 T240 /* T240 = VARCHAR(240) */
);




/******************************************************************************/
/*                                Primary Keys                                */
/******************************************************************************/

ALTER TABLE CUM ADD PRIMARY KEY (IDE);


/******************************************************************************/
/*                                  Triggers                                  */
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/*                            Triggers for tables                             */
/******************************************************************************/



/* Trigger: CUM_BI */
CREATE OR ALTER TRIGGER CUM_BI FOR CUM
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if ((new.ide = 0)or(new.ide is null)) then
    new.ide = gen_id(gen_cum_id, 1);
end
^


SET TERM ; ^
Dicha tabla almacena 181023 registros, necesito hacer una consulta por los siguientes campos: REGISTROSANITARIO, TITULAR, PRODUCTO, DESCRIPCIONATC
pero utilizando una sola caja de texto pensé en lo siguiente
Código SQL [-]
select * from CUM  where upper(REGISTROSANITARIO||TITULAR||PRODUCTO||DESCRIPCIONATC) like '%textoabuscar%'
pero eso tarda demasiado, si alguien me puede ayudar con el asunto se lo agradecería muchísimo...

Gracias por vuestro tiempo

GustavoCruz
Responder Con Cita
  #2  
Antiguo 24-10-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por GustavoCruz Ver Mensaje
...pero utilizando una sola caja de texto pensé en lo siguiente
Código SQL [-]
select * from CUM  where upper(REGISTROSANITARIO||TITULAR||PRODUCTO||DESCRIPCIONATC) like '%textoabuscar%'
pero eso tarda demasiado, si alguien me puede ayudar con el asunto se lo agradecería muchísimo...
Por "una sola caja de texto" te refieres a que el usuario te proporcione un texto y buscarlo en la tabla, quiero suponer...

Por que mi sugerencia sería hacer una diferenciación entre los datos que contiene cada campo, es decir, pedir REGISTROSANITARIO, TITULAR, PRODUCTO, DESCRIPCIONATC en un TEdit (o lo que prefieras usar) y "armar" la cadena de búsqueda o usar un "WHERE" y "AND's" consecutivos en un SELECT hasta centrar la búsqueda en uno o varios registros resultado...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #3  
Antiguo 24-10-2013
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Hola,

Por favor revise:
Y ya luego de eso, vea: -
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 25-10-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Cita:
Empezado por TOPX Ver Mensaje
Este es de un hilo que abrí yo y me funciona de maravillas.

Saludos

Josep
Responder Con Cita
  #5  
Antiguo 27-10-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola a todos amigos del foro, gracias por sus respuestas...

Mi idea es que funcione como lo hizo "algún tiempo", (no se si aún), Winamp, que en su base de datos; me refiero a la biblioteca, uno podía consultar una canción escribiendo el Título de la canción, el Interprete, Titulo del Album, etc... en una misma caja de texto.

Gracias por vuestro tiempo.


GustavoCruz
Responder Con Cita
  #6  
Antiguo 27-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero eso no es así, sino una consulta por campos, algo similar a:

Código SQL [-]
select * from tabla where titulo containing 'algo' and artista containing 'alguien' and album containing 'elquesea' ... ... ...
Responder Con Cita
  #7  
Antiguo 27-10-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola Casimiro Notevi, lo que sucede con la solución que me indicas es que llegado el momento no me mostrará nada aunque realmente si hayan registros para mostrar y eso se debe porque se utiliza la palabra "AND" y si utilizo "OR" los resultados serán traumáticos en lo que a tiempo se refiere...

Gracias por vuestra ayuda

GustavoCruz
Responder Con Cita
  #8  
Antiguo 27-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No te entiendo, pero debería especificar y aclarar correctamente exactamente la situación para que que te podamos ayudar.
Responder Con Cita
  #9  
Antiguo 27-10-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Para una mayor claridad sobre lo que quiero hacer les dejo este link donde se encuentra un listado de Código Unicos de Medicamentos "CUM", esos datos en su totalidad voy a almacenar en una tabla en firebird v2.5.2 con la misma estructura. Y al momento de consultar (con una sola caja de texto, para no "marear" al usuario final) un registro, lo haga, por los campos: INVIMA, REGISTROSANITARIO, DESCRIPCIONATC, TITULAR, PRODUCTO; en ese caso el usuario puede consultar esa tabla de cerca unso 180000 registros por cualquiera de esos campos de forma simultánea;

Les ruego, si no es mucha molestia, que creen una base de datos y carguen en una tabla todos los registros del archivo y hagan la consulta que necesito, una sola caja de texto para realiza la búsqueda...

GustavoCruz
Responder Con Cita
  #10  
Antiguo 27-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces necesitas hacer la consulta como te he mostrado antes, aunque poniendo or y no and.
Y por supuesto, no olvides crear índices para esos campos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Post Con Demora jerry_mdq Tablas planas 35 05-05-2011 19:53:56
Actualizar una tabla con una consulta de otra tabla JODELSA SQL 2 14-09-2006 04:07:01
Demora en locate... Luis Castillo Firebird e Interbase 1 16-01-2006 17:35:44
Demora de conexión... dunia_lv Conexión con bases de datos 0 23-05-2005 19:13:37
Demora al cambiar la hora CFPA86 Varios 5 26-09-2003 20:58:27


La franja horaria es GMT +2. Ahora son las 15:10:19.


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
Copyright 1996-2007 Club Delphi