Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Question Busqueda de datos en una BD con DATASET

Hola amigo estoy tratando de hacer una interfaz para hacer busqueda para cada tabla de mi BD pero utilizando los metodos que tienen los DataSet(Componentes Zeos) para esto. al parecer existen diferentes formas de hacer busqueda entre las cuales podria mencionar :Podriamos buscar por codigo,por nombre,por fercha o por cualquier otro atributo de la tabla,etc.
Pero me gustaria consultarle a ustedes sus opiniones,
Estoy tratando de entender los metodos que tienen un ZQuery que son:
Código Delphi [-]
ZQuery1.Lookup(algo,algo,algo,algo)
ZQuery1.Locate(algo,algo,algo,algo);
No se si pudieran orientarme si son los indicados o existen otros que se acomode a mis necesidades.
Lo que deseo es que cuando el usuario le de buscar,si el dato existe en la db entonces se seleccione la fila del DBGrid donde esta el dato; algo asi.
Les agradesco de antemano sus sugerencias y opiniones....
Saludos.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #2  
Antiguo 30-12-2008
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Hola,

Cuando el dataset tiene pocos registros el metodo locate funciona bien, el problema aparece cuando el dataset tiene muchos registros(unos miles), es en ese momento cuando se vuelve deficiente.

Cuando se realiza una búsqueda en un dataset, es más apropiado usar una sentencia SQL al estilo:
Código SQL [-]
select * from TuTabla where codigo = :TuvaloraBuscar

puedes construirla en tiempo de ejecución, al estilo:
Sí se buscan cadenas utilizar los comodines "%" como
Código Delphi [-]
  "where campo =  %' + QuotedStr(Valor) + '%'

Si la búsqueda se realiza por multiples campos tener una SQL estandard al estilo :
Código SQL [-]
Select * from TuTabla where 1=1
y añadir el resto de condiciones en tiempo de ejecución ya solo con la clausula ' and '.

Al estilo :
Código Delphi [-]
  ZQuery.Close:
  ZQuery.sql.Clear;
  ZQuery.sql.Text := 'Select * from TuTabla where 1=1';
  if CampoBusqueda <> '' then
     ZQuery.sql.Add('and campo = ' + CampoBusqueda.Text);
  ....
  try
     ZQuery.disableControls;
     ZQuery.open;
  finally
     ZQuery.EnableControls;
  end;

espero te sirva
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #3  
Antiguo 30-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Gracias PepeLolo por la sugerencia veo que utilizas
ZQuery.disableControls;ZQuery.EnableControls;
Me gustaria que me orientaras que hacen especificamente estos
metodos del ZQuery? lo he visto en alguna ocasion pero la verdad
no los he utilizados.
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #4  
Antiguo 30-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
DisableControls y EnableControls se utilizan para inhabilitar y deshablitar el "pintado" de los controles que dependen del dataset.
Esto evita que por cada campo que se añade, por ejemplo en un dbgrid, se "repinte". De este modo se "pinta" la pantalla una vez que se llena todo y se evita ese efecto molesto.

Con pocos registros no hay problema, pero con varios se hace evidente esos "flashes".

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 30-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Cita:
DisableControls y EnableControls se utilizan para inhabilitar y deshablitar el "pintado" de los controles que dependen del dataset.
Esto evita que por cada campo que se añade, por ejemplo en un dbgrid, se "repinte". De este modo se "pinta" la pantalla una vez que se llena todo y se evita ese efecto molesto.

Con pocos registros no hay problema, pero con varios se hace evidente esos "flashes".

Saludos.
Ok Delphius muchas gracias por la aclaracion.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
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
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
Actualizar un dataset desde otro dataset jafera Conexión con bases de datos 17 18-12-2008 23:57:10
Cargar datos en dataset Ubed Conexión con bases de datos 1 21-11-2007 14:32:30
Busqueda De Datos ercrizeporta Conexión con bases de datos 4 27-06-2005 11:31:35
Extraer datos de un dataset? Durbed Conexión con bases de datos 5 01-10-2004 16:40:30


La franja horaria es GMT +2. Ahora son las 16:04:48.


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