Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Arrow ADO, SQL y Filtros

Hola,
Estoy empezando a trabajar con ADO, Tengo una Tabla de Access "Elementos.mdb" con 3 campos: "ID", "Nombre" y "Tipo", un ADOQuery1, un DataSource1 y un DBGrid1; mi problema que no entiendo es en esta parte cuando trato de Filtrar por el Campo "Tipo" con el siguiente código:
Código Delphi [-]
procedure TForm1.Button4Click(Sender: TObject);
begin
  ADOQuery1.Active:= False;
  if (ADOQuery1.Filter = '') then
    begin
      ADOQuery1.Filter:= 'Tipo = "Metal"';
      ADOQuery1.Filtered:= True;
      Button4.Font.Style:= Button4.Font.Style + [fsBold];
    end
  else
    begin
      ADOQuery1.Filter:= '';
      ADOQuery1.Filtered:= False;
      Button4.Font.Style:= Button4.Font.Style - [fsBold];
    end;
  ADOQuery1.Active:= True;
end;

Este código no me muestra nada, NO FILTRA, es decir solo me muestra un DBGRID VACÍO. En la Línea:
ADOQuery1.Filter:= 'Tipo = "Metal"';

he intentado cambiar las comillas a:
ADOQuery1.Filter:= 'Tipo = Metal';

Pero me lanza error en la última línea:

"Project: Proyecto.exe raised exception class EOleException with message 'Argumentos Incorrectos, fuera del intérvalo permitido o en conflictos con otros'. Process Stopped"

La ConectionString está bien ya que la propiedad Active está en True y puedo ver mi Tabla en el DBGrid.

¿Cómo le hago para mostrar en el DBGrid los registros filtados por "Tipo" correspondientes a "Metal"?
Responder Con Cita
  #2  
Antiguo 16-06-2007
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
que tal brother, pues en principio, quiero desaconsejarte el uso de Filtros, pues estos son sumamente costosos en la aplicación.

Por que no mejor cambias el enfoque y utilizas Querys?, ya que es más eficiente.

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 17-06-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Cita:
Empezado por poliburro
Por que no mejor cambias el enfoque y utilizas Querys?, ya que es más eficiente
¡¿Cómo? ¿con que?
Y cómo aplico filtros para tu consejo?
Gracias por ello, en realidad me gustaría saber a que te refieres con "Querys" si bien uso ADOQuery en mi aplicación, pero además de ello mi duda estaba en la línea:
ADOQuery1.Filter:= 'Tipo = Metal';
y cómo corregirla?, creo que voy mal con las comillas, mi Base de Datos no es grande y no crecerá mas de 200 Registros.
Responder Con Cita
  #4  
Antiguo 18-06-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
al parecer tu filtro si funciona, si te aparece vacio es porque no encontró ningun registro que cumpliera el criterio de tu filtro.
Responder Con Cita
  #5  
Antiguo 18-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Lo que dice poliburro es que no uses la propiedad Filter, sino que esa condición la añadas al Where de tu consulta en tiempo de ejecución.

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

const sqlClientes = ' Select * from clientes ';

begin
  ADOQuery1.Active:= False;
  ADOQuery1.Sql.text := sqlClientes;
  if (ADOQuery1.Filter <> '') then
    begin
      ADOQuery1.Sql.text := sqlClientes + ' where Tipo = "Metal"';
      Button4.Font.Style:= Button4.Font.Style + [fsBold];
    end
  else
      Button4.Font.Style:= Button4.Font.Style - [fsBold];
  ADOQuery1.Active:= True;
end;

Edito el signo "igual", debe ser "distinto"

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 18-06-2007 a las 14:54:20.
Responder Con Cita
  #6  
Antiguo 19-06-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
En este caso, talvez no importe, si fuese un sevidor de bases de datos propiamente dicho, que es mas costoso, hacer una consulta no planeada desde sql o hacer un filtro? nótese que son 100 registros
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
Filtros sobre Filtros en Paradox Fabricio Tablas planas 9 03-04-2007 18:40:36
Filtros y + filtros leodelca23 Tablas planas 7 19-09-2006 03:45:17
Filtros..bla, bla... gandalf_27 Conexión con bases de datos 2 15-06-2006 02:11:24
Filtros letmedie Varios 5 12-07-2004 23:25:30
Filtros gerly Conexión con bases de datos 4 08-09-2003 19:01:34


La franja horaria es GMT +2. Ahora son las 06:24:40.


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