Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2006
Avatar de Goyo
Goyo Goyo is offline
Miembro
 
Registrado: feb 2006
Posts: 89
Poder: 19
Goyo Va por buen camino
Question realizar una consulta por fecha o numerodefactura o importegasto

hola amigos una vez mas molestando.... como puedo realizar una consulta, tengo una tabla llamada bitacoravehiculos y en ella quiero realizar una busqueda: ya sea por el campo fecha o numerodefactura o importe.

tengo un formulario con un dbgrid (con solo estos tres campos) y tres edit1,edit,edit3, lo que deseo es que si quiero buscar por fecha, me tome el primer edit1 y los demas los omita, si quiero buscar por numerodefactura tome el edit2 y con el edit3 si deseo buscar por importe, osea que la busqueda sea con alguna de estos campos y no forzosamente dos o tres solo un campo.

les agradecere su ayuda....
Responder Con Cita
  #2  
Antiguo 12-09-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

Que Base de datos utilizas?

Con Firebird podrias usar Containing sin mayores problemas. Si una de sus variables está vacia, la omite.

Código SQL [-]
Select * from tabla 
where campo1 containing :edit1 and campo2 containing :edit2 and campo3 containign :edit3

Otra forma, olvidando qué base de datos se utilice. Puede ser con condiciones, evaluando cual de esos edit se desea poner en condicion y despues agregarlo a la sentencia.

No se como haces para seleccionar cuál edit debe ser tomado encuenta. Yo tomare que es por tener algun valor en su propiedad Text.
Código Delphi [-]
var
  Sentencia:String;
Begin
  Sentencia:='Select * from tabla';
  if edit1.Text<>'' then
    Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit1.text)//Suponiendo que este campo toma Valores String
  else   if edit2.Text<>'' then
    Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit2.text)
  else   if edit3.Text<>'' then
    Sentencia:=Sentencia+ ' campo1='+ QuotedStr(edit3.text);
  Dataset.Sql.Text:=Sentencia;
__________________
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 12-09-2006
Avatar de Goyo
Goyo Goyo is offline
Miembro
 
Registrado: feb 2006
Posts: 89
Poder: 19
Goyo Va por buen camino
ya lo hice como me indicaste, solo que no me muestra nada, todo el codigo lo pongo en un SpeedButton1, la base de datos es una de Paradox, el edit1.text hace referencia al campo fechadeservicio (tipo Date), el edit2.text hace referencia a un campo tipo entero (numerofactura) y el edit3.text hace referencia a un dato tipo moneda ($), lo hice de la siguiente manera:

Código Delphi [-]
procedure TFrmBuscarVehiculo.SpeedButton1Click(Sender: TObject);
 var consulta : string;
begin
  consulta:='Select * from BitacoraVehiculos';
  if edit1.Text<>'' then
     consulta:=consulta+ ' fechadeservicio='+ QuotedStr(edit1.text)//Suponiendo que este campo toma Valores String
     else   if edit2.Text<>'' then
               consulta:=consulta+ ' numerofactura='+ QuotedStr(edit2.text)
     else   if edit3.Text<>'' then
               consulta:=consulta+ ' importe='+ QuotedStr(edit3.text);
     query1.SQL.Text:=consulta;
     query1.ExecSQL;
 end;

para que se ejecute la consulta debo pulsar el boton de busqueda, el query1 lo puse en el formulario de busqueda.., osea que este formulario (FrmBusquedas) lo llamo desde otro formulario llamado (FrmBitacora) y dentro de este formulario tengo un dbgri1 con todos los registros...

de antemano muchas gracias...
Responder Con Cita
  #4  
Antiguo 12-09-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

Prueba
Código Delphi [-]
procedure TFrmBuscarVehiculo.SpeedButton1Click(Sender: TObject);
 var consulta : string;
begin
  consulta:='Select * from BitacoraVehiculos';
  if edit1.Text<>' ' then begin
    Query1.Sql.Text:=consulta+ ' fechadeservicio=:fecha';
    Query1.ParamByName(fecha).asDate:=StrtoDate(fecha.text);
//Suponiendo que este campo toma Valores String
  end else 
  if edit2.Text<>' ' then begin
    Query1.Sql.Text:=consulta+ ' numerofactura=:fact'
    Query1.ParamByname('fact').AsInteger:= StrtoInt(edit2.text);
  end else
  if edit3.Text<>' ' then begin
    Query1.Sql.Text:=consulta+ ' importe=:importe'
    Query1.ParamByName('importe').Asfloat:=StrtoFloat(edit3.text);
  end;
//     query1.SQL.Text:=consulta;
//     query1.ExecSQL;//<==Esto no se utiliza para una sentencia de Consulta.
  Query1.Open;
 end;
Intenta esto
__________________
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
Problema al realizar una consulta ... serhasae SQL 0 31-07-2006 15:01:39
Realizar una consulta con sumas jfragueiro SQL 2 25-05-2005 10:02:50
Como realizar esta Consulta en SQL Jose Manuel SQL 3 11-10-2003 16:01:02
Realizar una consulta a otra máquina lore Conexión con bases de datos 2 02-10-2003 16:29:23
Realizar una multiplicacion en una consulta muli SQL 2 19-06-2003 19:44:32


La franja horaria es GMT +2. Ahora son las 00:18:50.


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