Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2006
camomilass camomilass is offline
Miembro
 
Registrado: abr 2006
Posts: 15
Poder: 0
camomilass Va por buen camino
Filtros con TADOTable

Hola Buenos días a todos en primer lugar felicitaros por el trabajo que estais haciendo ya que continuamente en nuestra empresa estamos consultando dudas y se van solucionando.
En Segundo lugar tengo una duda a ver si me la podeis resolver, estoy programando con delphi2006 . net y utilizando TADOTable para conectar con mis tablas paradox,(Estoy utilizando TADOTables ya que veo bastante sencillo el poder luego a posteriori migrar la base de datos ya que ahora estamos con tablas PARADOX), mi pregunta es la siguiente necesito ir filtrando una de estas tablas conforme voy escribiendo sobre un campo TEdit, x ejemplo tengo un dato en un campo de una tabla es ESPAÑA entonces el rollo es que conforme voy escribiendo "E" sobre el campo TEdit se me filtren todas las que empiecen por "E", luego escribo "ES" y se me filtren las que empiecen por "ES", el rollo es que con los TTables clásicos de Delphi puedes hacer un SETRANGE desde por ejemplo "ES" hasta "ESZZZZZ" y te hace el filtro o rango que necesito, pero en TADOTable no existe la funcion setrange, ¿hay alguna forma de hacerlo con TADOTables???
Responder Con Cita
  #2  
Antiguo 08-11-2006
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Compañero.

Yo de manera personal te recomiendo el uso de querys en lugar de filtros ya que estos últimos son muy costosos en cuanto a recursos del sistema.
yo por ejemplo añadiria un botón con la etiqueta "filtrar" y en el onclick agregar el código para que con un TQuery trarme solo los registros que cumplan con la condición expresada en el TEdit.

bueno eso haría yo.

Pero acá están los ejemplos de para hacer uso de los filtros con ADO. suerte.

with ADODataSet1 do begin
Filtered := False;
Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = ' + QuotedStr('CA');
Filtered := True;
end;


with ADODataSet1 do begin
Filtered := False;
Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = NULL';
Filtered := True;
end;
Responder Con Cita
  #3  
Antiguo 08-11-2006
Avatar de Lonidas
Lonidas Lonidas is offline
Miembro
 
Registrado: abr 2006
Posts: 35
Poder: 0
Lonidas Va por buen camino
Hola
Poliburro tiene razón te conviene hacer una consulta SQL para filtrar

Esto seria lo que quieres hacer

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.Text ='' then  //**desactivo el filtro si no hay escrito nada
begin
table1.Active:=false;
table1.Filtered:=false;
table1.Active:=true;
end
else
begin
table1.Active:=false;
table1.Filtered:=false;
table1.Filter :='Descripcion='+QuotedStr(edit1.text+'*'); //** Descripcion seria el campo por el que vas a filtrar..
table1.Filtered:=true;
table1.Active:=true;
end;
end;


O también podrías posicionarte en el registro en lugar de filtrarlo
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
table1.Locate('descripcion',edit1.Text ,[loPartialKey]); //** Descripcion seria el campo en el que vas a posicionarte
end;


Saludos....

Última edición por Lonidas fecha: 08-11-2006 a las 15:53:39.
Responder Con Cita
  #4  
Antiguo 08-11-2006
camomilass camomilass is offline
Miembro
 
Registrado: abr 2006
Posts: 15
Poder: 0
camomilass Va por buen camino
No es exactamente eso

El rollo es que si hago el filter el resultado que me sale es exactamente el nombre que ponga en el edit.text, y lo que yo deseo es que se muestre por ejemplo tengo 3 paises que son ESPAÑA,ESTONIA Y FRANCIA ,si yo pongo ES entonces quiero que me salgan en el resultado "ESPAÑA y ESTONIA", realizando el filter a no ser que ponga ESPAÑA exactamente, el resultado no muestra nada
Responder Con Cita
  #5  
Antiguo 08-11-2006
Avatar de Lonidas
Lonidas Lonidas is offline
Miembro
 
Registrado: abr 2006
Posts: 35
Poder: 0
Lonidas Va por buen camino
Smile

Entonces no te compliques la vida y hazlo en un Query

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin

if edit1.Text ='' then  //**desactivo el filtro si no hay escrito nada
 begin
  Query1.Active:=false;
  Query1.SQL.Clear;
  Query1.SQL.Add('select descripcion from tabla1');
  Query1.ExecSQL;
  Query1.Active:=true;
  Query1.Refresh;
 end
else //**  Aca filtra sin importar si esta en mayuscula o minuscula
 begin
 Query1.Active:=false; 
 Query1.SQL.Clear;
 Query1.SQL.Add('select descripcion from tabla');
 Query1.SQL.Add('where descripcion like '+QuotedStr('%'+edit1.Text+'%'));
 Query1.SQL.Add(' or upper(descripcion) like upper('+QuotedStr('%'+edit1.Text+'%')+')');
 Query1.ExecSQL;
 Query1.Active:=true;
 Query1.Refresh;
 end;
end;
Saludos.....

Última edición por Lonidas fecha: 08-11-2006 a las 18:35:10.
Responder Con Cita
  #6  
Antiguo 08-11-2006
camomilass camomilass is offline
Miembro
 
Registrado: abr 2006
Posts: 15
Poder: 0
camomilass Va por buen camino
Oleee

Lonidas gracias por tu solución no sabía que el caracter % en sql se utilizaba para este tipo de casos bueno te lo agradezco Felicidades y a continuar con el trabajo
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
setear IndexName en TADOTable JBalda MS SQL Server 2 08-11-2006 18:51:18
Problema con la funcion Seek de un TADOTable DanForever Conexión con bases de datos 2 04-05-2006 13:29:00
TAdoTable dudas !! lroblesco Conexión con bases de datos 3 11-06-2005 06:32:37
Filtros letmedie Varios 5 12-07-2004 23:25:30
TADOTable al completo en memoria??? Pandre Conexión con bases de datos 2 15-11-2003 03:07:57


La franja horaria es GMT +2. Ahora son las 22:29:30.


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