Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Por que no me funciona esta consulta SQL en mi programa? (https://www.clubdelphi.com/foros/showthread.php?t=3440)

IcebergDelphi 07-09-2003 05:22:02

Por que no me funciona esta consulta SQL en mi programa?
 
Hola amigos del foro , estoy haciendo un simple programa de consulta de clientes, y lo estoy haciendo en Firebird, lo que pasa que como son miles de clientes, tengo que hacer un filtro con sql solo mostrandolos por su Numero de alta o por su Nombre.
En Mi formulario tengo dos campos Tedit, uno se llama:
EdtBuscar y Edt Buscar2, el primero buscara el Numero de alta del cliente y el segundo en nombre, el codigo va asi:

procedure TForm1.Button1Click(Sender: TObject);
Var
Buscar,Con1:String;
Function Condiciona(Entrada:String):String;
Var
Temporal:String;
Begin
Temporal:='';
If (Length(Entrada)>0) Then
Temporal:='Or ';
Condiciona:=Temporal;
End;
begin
Buscar:='Select * From "Clientes" Cli ' ;
If Length( EdtBuscar.Text)>0 Then
Con1:='Cli."NoCliente" ='+ EdtBuscar.Text+''
Else
Con1:='';
If Length( EdtBuscar2.Text)>0 Then
Con1:=Con1+ Condiciona(Con1)+'Upper(Cli."Nombre") Like '+'%'+ UpperCase(EdtBuscar2.Text)+'%';
If Length(Con1)>0 Then
Buscar:=Buscar +' Where '+Con1;
TClientes.Close;
TClientes.SQLs.SelectSQL.Clear;
TClientes.SQLs.SelectSQL.Add(Buscar);
TClientes.Prepare;
TClientes.GenerateSQLs;
TClientes.Open;

end;

El Campo de la Bd NoCliente es Numerico, y si hago una consulta escribiendo sobre el TEdit Llamado EdtBuscar la consulta se realiza perfectamente, pero cuando quiero hacer la consulta por Nombre , escribiendo un Nombre o letra en el Tedit llamado edtBuscar2 me sale errores que si el % no lo conoce, que si el campo ( El dato que se escribio dentro del EdtBuscar2) es una columna desconocida ect. cabe recordar que el campo nombre es varchar en mi base de datos.

Me podrian ayudar a desifrar que esta pasando o cual es mi error en la instruccion sql.

Sera que no puede evaluar los campos de tipo Varchar?

Gracias.

Angel 08-09-2003 08:44:47

si no me equivoco, cuando haces:

Código:

Con1:=Con1+ Condiciona(Con1)+'Upper(Cli."Nombre") Like '+'%'+ UpperCase(EdtBuscar2.Text)+'%';
despues de like tendras que poner +''''+ y al final +'''' para insertar comillas puesto que al estar buscando una cadena, dicha cadena en SQL debe estar entre comillas. Otra cosa que tambien creo que funciona es utilizando una función de pascal llamada quotedStr (cadena)

Código:

Unit                      Sysutils
Category              String handling routines

function QuotedStr(const S: string): string;


IcebergDelphi 15-09-2003 04:12:07

Gracias Amigo por tu ayuda pero fijate que pasa algo extraño, en una maquina diferente en donde tambien tiene Delphi , la instruccion que expuse en el problema si funciona, pero intentare hacer el consejo que me dices, ya que ahorita no tengo mucho tiempo, muchisimas gracias.


La franja horaria es GMT +2. Ahora son las 04:49: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