Ver Mensaje Individual
  #7  
Antiguo 07-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Para llenar los combos con los campos de la base de datos, mira en el TTable.Fields[i].Name, tendrás que usar un bucle para rellenar los combos; tienes el TTable.FieldCount para saber cuantos campos hay.

Los Operadores los incluyes de forma fija, <, >, <>, =

Para construir el sql con las condiciones del usuario, tendrás que hacer algo así:

cboFields1 es el primer combo con el nombre del campo
cboOperator1 es el primer combo con los operadores <, > , <>, =, etc.
edSearch es el Edit donde el usuario escribe lo que quiere buscar.

Código Delphi [-]
  TheSql := 'select * from tabla where ';
if (cboFields1.Itemindex <>-1) and 
  (cboOperator1.itemindex <> -1) and 
  (edSearch1.text <> EmptyStr) then
begin
  TheSql := TheSql + cboFields1.items[cboFields1.itemindex] + ' ' +
             cboOperator1.items[cboOperator1.itemindex] + ' ' +
             quotedStr(edSearch.text) ;
  query1.Sql.text := TheSql;
  query1.Open;
end;

Todo esto sería para la primera condición que el usuario desea indicar. El campo elegido guarda un String.

Una vez entendido como funciona, hay más detalles que he omitido, porque si el campo es numérico no puedes usar quotedStr sino que tienes que enviarlo sin las comillas que pone el QuotedStr, para ello tendrás que mirar en la definición del campo TTable.FieldsDef.Datatype y si es un número, no incluir el QuotedStr.

Yo no usaría los filtros porque no son flexibles, es más comodo armar una consulta y pedirla al servidor, es más laborioso, pero funcionará mejor (a mi parecer claro ).

Saludos y espero se entienda.
__________________
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: 07-05-2006 a las 10:30:11.
Responder Con Cita