Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2006
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Question Novato (Parametros de busqueda)

tengo un boton que al presionar sale una ventana de busqueda, aqui os dejo el codigo:
Código Delphi [-]
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
  // Muestra el diálogo de consultas
  dlgBuscar.ShowModal;
  if dlgBuscar.ModalResult = mrOK then begin
      qryConsulta.Close;
      qryConsulta.ParamByName('Casa_Comercial').AsString :=
          dlgBuscar.BuscarEdt.Text+'%';
      qryConsulta.Open;
      if qryConsulta.EOF then
         ShowMessage('No se encontró!');
  end;
end;
yo quiero saber como puedo ampliar los parametros, o sea, que no busque solamente por casa_comercial, sino tambien orden_compra, carta_orden y asi sucesivamente, pero me gustaria que me presentara todos las coincidencias en una grilla aunque en un campo este repetido.

gracias!!!!

Última edición por marcoszorrilla fecha: 01-06-2006 a las 18:18:09.
Responder Con Cita
  #2  
Antiguo 01-06-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Pare hacer eso debes modificar la sentencia sql e indicarle por cual campo buscar.
Código Delphi [-]
procedure TForm3.BitBtn1Click(Sender: TObject);
var
  campo:String
begin
  Campo:='Carta_orde';//O cualquier otro campo
// Muestra el diálogo de consultas
dlgBuscar.ShowModal;
if dlgBuscar.ModalResult = mrOK then begin
qryConsulta.Close;
qryConsulta.Sql.Text:='Select * from tabla where '+campo+'=:busqueda';
qryConsulta.ParamByName('busqueda').AsString :=
dlgBuscar.BuscarEdt.Text+'%';
qryConsulta.Open;
Donde campo es una variable string que indica el campo que deseas buscar
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 01-06-2006
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
o sea que para que el edit busque no solamente un solo campo sino varias hago lo siguiente:

procedure TForm3.BitBtn1Click(Sender: TObject);
var
campo:String
carta:String
Valor:Currency
begin
Campo:='Carta_orden';//O cualquier otro campo
carta:='Casa_Comercial';
Valor:='Valor_orden';
// Muestra el diálogo de consultas
dlgBuscar.ShowModal;
if dlgBuscar.ModalResult = mrOK then begin
qryConsulta.Close;
qryConsulta.Sql.Text:='Select * from tabla where '+campo+' "" '+carta+' "" '+Valor+'=:busqueda';
qryConsulta.ParamByName('busqueda').AsString :=
dlgBuscar.BuscarEdt.Text+'%';
qryConsulta.Open;
end;
end;

es correcto? o que es lo que esta mal?? recuerda que quiero que busque varios campos de una tabla y no una sola como mostre en el codigo anterior.

gracias!!!!
Responder Con Cita
  #4  
Antiguo 01-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
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
  #5  
Antiguo 02-06-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por enecumene
...recuerda que quiero que busque varios campos de una tabla y no una sola como mostre en el codigo anterior.
Ah bueno, ya Lepe ha resuelto

enecumene, trata de usar las etiquetas [delphi] [/delphl] para los codigos, no ves la diferencia entre mi codigo y el tuyo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Novato (Busqueda de registros con TEdit y DBGrid) enecumene Conexión con bases de datos 3 27-05-2006 20:04:12
busqueda por distintos parametros raffagia Varios 10 26-08-2005 11:45:51
busqueda por dos parametros rolando_s Conexión con bases de datos 1 03-03-2005 12:12:20
Pregunta de novato.. pero de muy novato CFPA86 PHP 1 08-08-2004 06:53:42
Muy Novato miguel_fr SQL 5 09-04-2004 15:54:00


La franja horaria es GMT +2. Ahora son las 17:13:16.


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