Ver Mensaje Individual
  #1  
Antiguo 22-09-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 22
Giniromero Va por buen camino
problemas selectSQL-Like, pasando datos desde código en el delphi

Hola a todos,

Tengo una aplicación en delphi 6 con interbase 7.

Estoy intentando agregar un "form de busqueda" a mi aplicación.

Utilizo un IBDataset, y el selectSQL

En este Form tengo un RadioGroup, según el cual el usuario puede elegir el campo del IBDataSet por el que se va a buscar.
Este campo se guardará en la variable RCampo.

Los campos que se pueden seleccionar son: Apellidos, Nombre y nºCliente

Tengo un TEdit creado (EditBuscar), donde se tiene que escribir el criterio de busqueda, y quiero que la busqueda se haga con un like, al hacer click sobre un botón.

El problema, es que, aunque la variable RCAmpo, que es private, tiene bien tomado el dato del campo, cuando pulso el botón que me ejecuta esta consulta, me da el siguiente error:




""exception class EIBInterBaseError with message 'Dinamic SQL Error
SQL error code = -206
Column unknown
GARCIA*'. ""


Donde GARCIA es lo que he escrito en el campo EditBuscar, y mi código para todo esto es:


procedure que gestiona el RadioGroup:


// según radio que seleccionemos así nos busca en un campo u en otro
// el texto que escribimos en EditBuscar
procedure TFrmSeleAlu.RadioGroup1Click(Sender: TObject);
begin
//la tabla que utiliza, en cualquier caso, es la FrmDModule.TbAlumnos
//Ponemos el campo editBuscar vacio de texto
EditBuscar.Text := '';
TRY
//deshabilitamos los controles de la tabla
FrmDModule.TbAlumnos.DisableControls;
//cerramos la tabla
FrmDModule.TbAlumnos.Close;
//borramos el contenido de la propiedad SelectSQL
FrmDModule.TbAlumnos.SelectSQL.Clear;
//le asignamos el SQL que tenía al inicio la tabla
FrmDModule.TbAlumnos.SelectSQL.Add(FrmDModule.VAlumnosSQL);
//para, dependiendo del campo por el que vamos a querer que nos ordene la tabla
//así añadir el código


//si seleccionamos Apellidos
IF (RadioGroup1.ItemIndex = 0) THEN BEGIN
RCampo := 'APELALU';
//hacemos que se ordene la tabla por apellidos
FrmDModule.TbAlumnos.SelectSQL.Add( 'ORDER BY ' + RCampo);
EditBuscar.SetFocus;
END
// si seleccionamos matricula
ELSE IF (RadioGroup1.ItemIndex = 1) THEN BEGIN
RCampo := 'NUMALU';
//hacemos que se ordene la tabla por numero de alumno (por defecto)
FrmDModule.TbAlumnos.SelectSQL.Add( 'ORDER BY ' + RCampo);
EditBuscar.SetFocus;
END
//si seleccionamos nombre
ELSE IF (RadioGroup1.ItemIndex = 2) THEN BEGIN
RCampo := 'NOMALU';
//hacemos que se ordene la tabla por nombre
FrmDModule.TbAlumnos.SelectSQL.Add( 'ORDER BY ' + RCampo);
EditBuscar.SetFocus;
END;
//una vez modificado el sql del select, abrimos la tabla
FrmDModule.TbAlumnos.Open;
//SetFocus hace que vuelva el cursor al campo EditBuscar
EditBuscar.SetFocus;
FINALLY
//volvemos a habilitar los controles de la tabla
FrmDModule.TbAlumnos.EnableControls;
END;

end;



Este código nos funciona bien,

Pero el problema llega cuando le introducimos parámetros de busqueda y hacemos click sobre el botón de busqueda

el código es el siguiente:



//al pulsar el botón de buscar
procedure TFrmSeleAlu.SpeedButton1Click(Sender: TObject);
begin
TRY

//para, dependiendo del campo por el que vamos a querer que nos ordene la tabla
//así añadir el código

IF EditBuscar.Text = '' THEN BEGIN //Si no hay datos en el campo de texto para buscar
//mostramos mensaje que pida insertar texto
Showmessage ('No se ha introducido parámetros de búsqueda');
//Salimos del procedure
Exit;
END
ELSE BEGIN //si hay parámetros de búsqueda
Showmessage ('SI se ha introducido parámetros de búsqueda');
//deshabilitamos los controles de la tabla
FrmDModule.TbAlumnos.DisableControls;
//cerramos la tabla
FrmDModule.TbAlumnos.Close;
//borramos el contenido de la propiedad SelectSQL
FrmDModule.TbAlumnos.SelectSQL.Clear;
//le asignamos el SQL que tenía al inicio la tabla
FrmDModule.TbAlumnos.SelectSQL.Add(FrmDModule.VAlumnosSQL);
//insertamos los parámetros de búsqueda en la sentencia selectSQL
FrmDModule.TbAlumnos.SelectSQL.Add('WHERE ' + RCampo + ' LIKE " ' + EditBuscar.Text + '*" ' );
//ordenamos por ...
FrmDModule.TbAlumnos.SelectSQL.Add( 'ORDER BY ' + RCampo);
//abrimos la tabla
FrmDModule.TbAlumnos.Open;

END;

FINALLY
//volvemos a habilitar los controles de la tabla
FrmDModule.TbAlumnos.EnableControls;
END;


end;





Me imajino que estaré poniendo algo mal relaccionado con el sql , pero no sé que.


os agradezco la ayuda de antemano.


Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita