Ver Mensaje Individual
  #2  
Antiguo 11-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Hay dos formas:
- Ponerle en el combo el mismo nombre que tiene el campo, y otro listbox con los simbolos ">", "<", "="; después de eso un TEdit donde el usuario pondrá la cadena de búsqueda. Esos 3 controles se pueden crear tantas veces como el usuario quiera para marcar varios criterios de búsqueda a la vez (usando frames, por ejemplo).

- Hacer la interfaz más bonita, poniendo un grid pequeñito que muestre el código de cliente y el nombre; el usuario marcará el que quiera. Para las demás opciones de búsqueda, puedes usar RadioButtons, checkboxes etc

La última vez que hice algo así, ricé el rizo. Mediante la JVCL, creé un menú calcado a la pantalla de búsqueda de windows XP (sin el muñeco del perrito ). Potente y bonito.

El primer caso no resulta muy atractivo para el usuario final, (tampoco cómodo); el segundo caso, es más atractivo, pero tardarás más en hacerlo.

En cuanto a armar el SQL, yo parto en varias funciones el sql, (aunque el ejemplo es sencillo, en la realidad se complica bastante, y una sola rutina es enorme, con un montón de variables, lo prefiero así:
Código Delphi [-]
const campos = 'select campo1, campo2 campo3 from tabla ';
var TheSql :String;
       where :string;
begin
TheSql := campos + periodoFechas + Cliente + Pagado ;
end;

function Cliente :string;
begin
     Result :=  ' cliente  = ' inttostr(dbgrid.columns[0].Fieldbyname('cod_cli').asstring;
end;

function Pagado:string
begin
  if chkPagado.checked then
     result := ' and pagado = 1';
  else
   Result := '';
end;
Periodofechas obliga a elegir entre dos fechas (datetimepickers) así siempre me aseguro que tiene una condición en el where y las demás opciones que vienen por detrás, no darán error de sintaxis, como cliente y/o pagado, siempre incluyen el 'and' que une las cláusulas.


Hay algunos componentes de terceros que sirven para construir sqls, te pueden ayudar un poco más.

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: 11-10-2008 a las 11:32:54.
Responder Con Cita