FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con consulta a Interbase
Hola Amigos!!!:
Espero que alguien me pueda ayudar con este problemilla que a continuacion describo. Cuento con una BD's en Interbase 6.5 la cual ya he conectado a Delphi 7, y puedo manipular mis datos a través de una DBNavegator, y tambien escribiendo la cadena completa a buscar... procedure TPeliculas.tituloKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then { si es la tecla <enter> } begin IBDATASET2.SelectSQL.Clear; IBDATASET2.SelectSQL.ADD('SELECT TITULO,GENERO,FORMATO,CLASIFIC FROM PELICULAS WHERE PELICULAS.TITULO="'+titulo.Text +'"'); IBDATASET2.Active :=TRUE; titulo.Text:=''; end; end; y si obtnego resultados......PERO lo que en realidad deseo es lo siguiente: Escribir caracteres en un TEdit (escribo el titulo de una pelicula) y que mientras escribo (con el evento KeyPress) se ejecute una consulta que me permita desplagar por medio de un DBGrid aquellos registros que su campo Titulo coincida con lo que se va escribiendo. He probado usando la clausula LIKE pero no arroja los registros correctos (como si lo hace por medio del IBConsole, ya lei que el LIKE tiene problemas), tambien he intentado usando STARTING WITH arametro pero tampoco he tenido exito. Hice este procedimiento en Interbase 6.5 pero ni siquiera me lo crea porque me marca un error en :tit; SET TERM !!; create procedure busca_movie (tit char(30)) returns(tit_mov char(30),form_mov char(3),gen_mov char(20)) as begin select titulo,formato,genero from peliculas where titulo starting with :tit; end!! SET TERM ;!! No se como resolver esta consulta, espero que me puedan apoyar. De antemano muchas gracias y un saludo para todos. |
#2
|
|||
|
|||
Consulta Interbase
ya intentaste ponerlo con el operador "like" no recuerdo exactamente cual es en interbase, si es el mismo de SQL Server podria servir a tus propositos debe de ser ese.
procedure TPeliculas.tituloKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then { si es la tecla <enter> } begin IBDATASET2.SelectSQL.Clear; IBDATASET2.SelectSQL.ADD('SELECT TITULO,GENERO,FORMATO,CLASIFIC FROM PELICULAS WHERE PELICULAS.TITULO like "'+titulo.Text +'%"'); IBDATASET2.Active :=TRUE; titulo.Text:=''; end; end; |
#3
|
|||
|
|||
Muchas gracias Aztaroth, de hecho si funciona el LIKE tal y como tu me hiciste la observación, escribo la cadena o subcadena en el TEdit, pulso enter, evalua la consulta sql y despliega los registros coincidentes en el TDBGrid, el detalle es que tengo que pulsar la TECLA ENTER para que se evalue la consulta, si borro el IF que prueba si la tecla es ENTER pasa lo siguiente:
Al pulsar la primer letra dentro del TEdit esto hace que el codigo se ejecute y el resultado en el Grid muestra todos los registros de la tabla, asi es que sigo sin obtener el resultado que espero. Hay algo mas que sigo sin comprender, supongamos que mi cunsulta se ejecuta bien por medio del LIKE y usando el ENTER como tecla de ejecución, el problema es que si escribo una segunda cadena y pulso enter para que muestre los registros en el Grid esto trae como consecuencia el siguiente ERRROR: Proyect movies.exe raised exception class EDatabaseError with message 'IBDataSet2:Field'' not found'. Muchas gracias por sus comentarios, hasta pronto. |
#4
|
||||
|
||||
Consulta Interbase
Hola ORION!
Mi propuesta es la siguiente: Escribe el siguiente código en el evento OnChange del Componente TEdit, de esta forma no te metes en líos con OnKeyPress
De hecho no es necesario crear el SQL en tiempo de ejecución, puedes añadir las líneas en el SQL en tiempo de diseño y después solamente cambiar el parámetro :Tit en tiempo de ejecución de la siguiente manera:
Decidí utilizar un componente TIBQuery porque la idea es solamente consultar, pero obtienes el mismo resultado si utilizas un TIBDataSet. Espero que te sea útil. Hasta pronto. Última edición por Héctor Randolph fecha: 15-12-2004 a las 09:38:11. |
#5
|
|||
|
|||
Hector Muchas gracias, la solución que me diste es la que yo buscaba, exactamente como queria que funcionara la consulta.
Gracias a todos por el apoyo y seguiremos esforzandonos por aprender. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|