![]() |
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; |
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. |
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:
|
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.
|
La franja horaria es GMT +2. Ahora son las 03:26:31. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi