Ver Mensaje Individual
  #4  
Antiguo 01-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Si vas a buscar por muchos parámetros, yo construiría varias funciones para no complicar mucho el código:


Código Delphi [-]

procedure SqlPrincipal;
begin

query1.Sql.Text := 'Select * from tabla WHERE '+ 
                          casa_comercial;
end;

function casa_comercial:string;
var tmp:string;
begin
 if editcasaComercial.text = EmptyStr then
    result := emptyStr ; // devolvemos una cadena vacia
 else
   result := ' casa_comercial = ' + quotedStr(editcasaComercial.text);

  tmp := orden_compra;
  if tmp <> emptystr then
    result := result + ' and ' + tmp;
 // concatenamos con AND, OR, o lo que haga falta las diferentes condiciones

 tmp := carta_orden;
  if tmp <> emptystr then
    result := result + ' and ' + tmp;
 // concatenamos con AND, OR, o lo que haga falta las diferentes condiciones
  
end;
    
end;

function orden_compra:
begin
  if editOrdenCompra.text = emptystr then
    result := emptystr
  else
    result := ' orden_compra = '+ quotedStr(editOrdencompra.Text);
end;


function carta_orden:
begin
  if editCartaOrden.text = emptystr then
    result := emptystr
  else
    result := ' carta_orden = '+ quotedStr(editCartaOrden.Text);
end;

Vamos el famoso "divide y vencerás". Cada función se encarga de una pequeña parte (cada condición) y despues devuelve el string con el SQL que corresponde con esa condición.

En este caso es mejor no usar parámetros (parambyname), los parámetros no aportará mejora alguna, porque de una ejecución a otra varía la SQL y con ello el número de parámetros.

Antes de hacer un Query1.Open, haz un Memo1.Lines.Add(query1.Sql.Text) para ver que toda la SQL está correcta, los apostrofes, las uniones con "and" y "or", los espacios en blanco, etc. Así no te mareas mucho

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: 01-06-2006 a las 20:29:37.
Responder Con Cita