![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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á :) |
|
|
![]() |
|