Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 02-12-2004
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 24
Er_Manué Va por buen camino
mmmm..

Exactamente eso es lo que te expliqué la primera vez que te respondí , La propiedad filter lo que hace es establecer un filtro sobre los registros recuperados por el TTable, TQuery,... Si lo que quieres es hacer un filtrado ANTES de obtener los datos y así sobrecargar menos el motor, debes hacer el filtrado mediante el uso de SQL.

Para hacer un filtrado mediante SQL, únicamente debemos establer el criterio de selección en el campo WHERE de la consulta. Por ejemplo, si tenemos los siguientes datos:

- Una tabla que se llama clientes
- La tabla clientes tiene los siguiente campos:
  • id_cliente: Campo de tipo numérico que almacena la Clave Primaria de la tabla
  • nombre: Campo de tipo string.
  • apellidos: Campo de tipo string.
  • empresa: Campo de tipo string.
  • direccion: Campo de tipo string.
  • resto de campos que ahora mismo no me interesan...

Una anotación, la estructura básica de una sentecia SQL es:
SELECT campos FROM tabla WHERE condicion

campos = CAMPOS a recuperar de cada registro, si los queremos todos ponemos *
tabla = TABLA de la queremos recuperar los datos.
condicion = CONDICIÓN de filtrado que le quermos aplicar a la TABLA seleccionada.

weno con todo esto, ahora queremos hacer una búsqueda mediante el campo nombre sería tan simple como añadir a la propiedad SQL del TQuery:
Código:
.....
Form1.Query1.SQL.Text := 'SELECT * FROM clientes WHERE nombre='+quotedStr(edtFiltroNombre.text);
......
edtFiltroNombre es un campo TEdit que contiene el nombre que quiero buscar.

Si quiero realizar una búsqueda por el campo empresa debemos utilizar la siguiente sentencia:
Código:
.....
Form1.Query1.SQL.Text := 'SELECT * FROM clientes WHERE empresa='+quotedStr(edtFiltroEmpresa.text);
......
edtFiltroEmpresa es un campo TEdit que contiene la empresa que quiero buscar

Y ahora por último, si quisieramos hacer un filtrado mediante los campos nombre y empresa, usamos:
Código:
.....
Form1.Query1.SQL.Text := 'SELECT * FROM clientes WHERE
 nombre='+quotedStr(edtFiltroNombre.text)+' AND empresa='+quotedStr(edtFiltroEmpresa.text);
......
Si quisieramos a demás filtrar tambien por el campo direccion únicamente deberíamos incluir una condición más en la clausula WHERE:

Código:
...WHERE nombre='+quotedStr(edtFiltroNombre.text)+
' AND empresa='+quotedStr(edtFiltroEmpresa.text)+' AND direccion='+quotedStr(edtFiltroDireccion.text)
Espero que te haya quedado más claro, si aún asi sigues teniendo dudas, te mando un ejemplo para que lo puedas estudiar.

Un salu2
Er_Manué
Responder Con Cita
 



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


La franja horaria es GMT +2. Ahora son las 10:32:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi