Ver Mensaje Individual
  #8  
Antiguo 07-05-2006
arpegius25 arpegius25 is offline
Registrado
 
Registrado: may 2006
Posts: 6
Reputación: 0
arpegius25 Va por buen camino
Thumbs up agradezco tu ayuda lepe

muchas gracias por la informacion probare lo que me enviaste
Cita:
Empezado por Lepe
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.
Responder Con Cita