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 13-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Problemas con Consulta Sql en Una Búsqueda

Buenas tardes Amigos tengo un problema con el uso del procedimiento que mas abajo les presento, el problema consiste en que si el campo que el usuario selecciono para buscar esta vacio en la tabla porque este Campo permite valores nulos (Campo último número utilizado) en el Grid que estoy mostrando los datos de la consulta cuando limpio los datos en el edit no me muestra todos los registros que deberian mostrarse en el Grid de tres registros que habia en la tabla uno no se muestra despues de buscar por este campo vacio, despues con los que si estan llenos no pasa esto.

Me gustaria si es posible saber que tengo que modificarle para que no me suceda esto.

Utilizo una base de datos en Sql Server y un TRadioGroup para que el usuario seleccione el campo por el cual quiere realizar la busqueda.



Muchas GRacias de antemano por la ayuda que me puedan dar al respecto y por su valioso tiempo.




procedure TFBuscarNumerosdeSerie.EValorChange(Sender: TObject);
const
// Consulta Sql
STRSQL = 'Select * From Numeros_de_Serie';
STRORDER = 'ORDER BY Codigo';


begin
QDatos.Close;

// Está vacío
if (Evalor.Text = '') then begin
QDatos.SQL.Text := STRSQL;

end
else

If rgbuscarpor.ItemIndex = 0 then
begin
// montamos la sql
QDatos.SQL.Text := STRSQL + ' WHERE (Codigo) LIKE (' + QuotedStr('%' + Evalor.Text + '%') + ')' +
// Añadimos el WHER
// Añadimos el orden
STRORDER;
end;

If RGBuscarpor.ItemIndex = 1 then
begin
LValor.Caption:='Descripción';
// montamos la sql
QDatos.SQL.Text := STRSQL + ' WHERE (Descripcion) LIKE (' + QuotedStr('%' + Evalor.Text + '%') + ')' +
// Añadimos el WHER
// Añadimos el orden
STRORDER;
end;
If RGBuscarpor.ItemIndex = 2 then
begin
// montamos la sql
QDatos.SQL.Text := STRSQL + ' WHERE (Numero_Inicial) LIKE (' + QuotedStr('%' + Evalor.Text + '%') + ')' +
// Añadimos el WHER
// Añadimos el orden
STRORDER;
end;

If RGBuscarpor.ItemIndex = 3 then
begin
// montamos la sql
QDatos.SQL.Text := STRSQL + ' WHERE (Numero_Final) LIKE (' + QuotedStr('%' + Evalor.Text + '%') + ')' +
// Añadimos el WHER
// Añadimos el orden
STRORDER;
end;
If RGBuscarpor.ItemIndex = 4 then
begin
// montamos la sql
QDatos.SQL.Text := STRSQL + ' WHERE (Ultimo_Numero_Utilizado) LIKE (' + QuotedStr('%' + Evalor.Text + '%') + ')' +
// Añadimos el WHER
// Añadimos el orden
STRORDER;
end;

QDatos.Open;

end;

Última edición por hondaalberto fecha: 13-02-2012 a las 21:10:53. Razón: error en el titúlo del mensaje
Responder Con Cita
  #2  
Antiguo 13-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola hondaalberto.

Por favor cuando incluyas código en tu mensaje utiliza los TAG's para que sea más fácil de entender, su uso es:



Saludos y gracias por tu colaboración.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 13-02-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola hondaalberto, no he entendido muy bien tu pregunta, pero lo que creo que te falta es un begin end en el else. Como tu consulta se repite y solo cambia el campo, puedes reducir un poco tu codigo de esta forma:

Código Delphi [-]
const
// Consulta Sql
STRSQL = 'Select * From Numeros_de_Serie';
STRORDER = 'ORDER BY Codigo';

Var
 Campo:String;
begin
 QDatos.Close;

// Está vacío
 if (Evalor.Text = '') then begin
  QDatos.SQL.Text:= STRSQL;    
 end
 else
  begin
   Case rgbuscarpor.ItemIndex Of
    0: Campo := 'Codigo';
    1: Campo := 'Descripcion';
    2: Campo := 'Numero_Inicial';
    3: Campo := 'Numero_Final';
    4: Campo := 'Ultimo_Numero_Utilizado';
   end;
   QDatos.SQL.Text:=STRSQL+' WHERE '+Campo+' LIKE ('+QuotedStr('%'+Evalor.Text+'%')+')'+
   STRORDER;
  end;
  
 QDatos.Open;
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 14-02-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Muchas Gracias a Todos por el Tiempo Invertido en ayudarme a solucionar este inconveniente en especial a Caro. Muy buena respuesta y muy eficiente la corrección que me recomendaste.
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
Ayuda consulta de busqueda en lista inad20 Firebird e Interbase 9 22-05-2011 19:36:26
consulta para busqueda mikylin SQL 2 14-12-2007 13:43:37
Problemas en busqueda destrukthor Conexión con bases de datos 13 01-08-2006 12:58:37
consulta sobre busqueda... fergape Varios 5 02-06-2006 16:02:45
Consulta Busqueda Incremental Gustavo Gowdak SQL 1 13-12-2004 09:27:08


La franja horaria es GMT +2. Ahora son las 13:29:22.


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