Delphi - Help Busqueda en BD 2

 
Vista:

Help Busqueda en BD 2

Publicado por Hector (39 intervenciones) el 31/01/2009 05:31:03
atabes de un onclick de un botón con un edit me busque en la tabla, por eje un nombre.
tengo DBGrid1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Help Busqueda en BD 2

Publicado por Eva (484 intervenciones) el 31/01/2009 12:10:54
En el evento OnChange del edit pones esto

TuDataSet.Locate('APELLIDOS',Edit1.Text,[loPartialKey, loCaseInsensitive])

Con esto no te hace falta botón, a medida que vayas escribiendo te irá buscando.
Si escribes A se situará en el primero que empiece por A, al escribir AL en el primero con AL, etc. etc.

Si lo quieres hacer con el botón para buscar exacto pon ese mismo código en el evento OnClick del botón

También lo puedes hacer con el botón y con SQL, incluso para que te busque por ejemplo un apellido aunque sea el segundo.

TuDataSet.Close;
TuDataSet.SelectSQL.Text := 'select * from TUTABLA where UPPER(' + CAMPOAPELLIDOS + ') LIKE :QUEBUSCO' ;
TuDataSet.ParamByName('QUEBUSCO').AsString := '%' + AnsiUpperCase(Trim(Edit1.Text)) + '%';
TuDataSet.Open;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Help Busqueda en BD 2

Publicado por Hector (39 intervenciones) el 31/01/2009 19:21:57
El primer ejemplo sin problema pero el segundo me da error en SelectSQL puedes explicarme un poco mas por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Help Busqueda en BD 2

Publicado por Eva (484 intervenciones) el 31/01/2009 21:29:14
Bueno, lo segundo es otra cosa, pero tiene más potencia.

Imaginate que tienes una base de datos de una biblioteca y tienes que buscar un libro por el título. Nunca sabremos como está exactamente registrado. Por ejemplo puede poner: Don Quijote de la Mancha o El ingenioso hidalgo Don Quijote o El Quijote. Entonces sería muy dificil buscarlo con el primer sistema porque no sabemos como empieza, pero en cambio suponemos que en todos los caso llevará la palabra Quijote. Con el segundo sistema podríamos localizarlo facilmente.

Supongamos:
Tabla llamada BIBLIOTECA donde se registran todos los libros, y uno de sus campos es TITULO. Esta tabla la tienes visualizada en un DBGrid a traves de un DataSet llamado LIBROSBIBLIO

En algún momento de la aplicación habrirás la tabla (o la tienes siempre abierta porque lo has diseñado así).

Ahora ponemos un Edit (que tiene propiedad Text pero no Caption) y un botón [Buscar]

Escribimos en el edit alguna palabra característica del título a buscar: por ejemplo Quijo
y le damos al botón buscar que tiene en su evento OnClick este código

LIBROSBIBLIO.Close;
LIBROSBIBLIOSQL.Text := 'select * from BIBLIO where UPPER(' + TITULO + ') LIKE :QUEBUSCO' ;
LIBROSBIBLIO.ParamByName('QUEBUSCO').AsString := '%' + AnsiUpperCase(Trim(Edit1.Text)) + '%';
LIBROSBIBLIO.Open;

Con esto en el DBGrid aparecerán todos los libros que en su TITULO lleven el texto Quijo independientemente que esté en mayúsculas o minúsculas y que al buscar lo hayamos puesto en mayúsculas o minúsculas.

Explicación mas o menos válida, porque va al vuelo y no lo he probado, por lo que puede haber errores.

//se cierra la tabla
LIBROSBIBLIO.Close;
//se selecciona en la tabla biblioteca todos los registros que en el titulo contengan (se
//hace con LIKE) lo que desee (se hace con el parámeto QUEBUSCO).
//upper lo transforma en mayúsculas
LIBROSBIBLIOSQL.Text := 'select * from BIBLIO where UPPER(' + TITULO + ') LIKE :QUEBUSCO' ;
//lo que busco lo escribes en el edit. % es un comodín, como hay uno al principio y al
// final será CULAQUIER COSA + LOQUEBUSCO + CUALQUIERCOSA
//AnsiUpperCase es para transformar a máyúsculas, incluidas vocales acentuadas
//ñ, Ç , etx.
LIBROSBIBLIO.ParamByName('QUEBUSCO').AsString := '%' + AnsiUpperCase(Trim(Edit1.Text)) + '%';
//abro la tabla y aparecerán los registros que cumplan las condiciones entradas.
LIBROSBIBLIO.Open;

Busca un manual de SQL que hay muchos por internet.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Help Busqueda en BD 2

Publicado por Hector (39 intervenciones) el 31/01/2009 23:32:18
Me da errores mira yo lo tengo todo clásico en los nombres por ejemplo (Table1) campo (Serie) y esto (través de un DataSet llamado LIBROSBIBLIO) no lo entiendo puedes usarme los nombres por defecto.
Supongo que quedaría algo así
Table1.Close;
Table1sql.Text := 'select * from BIBLIO where UPPER(' + Serie + ') LIKE :QUEBUSCO' ;
Table1.ParamByName('QUEBUSCO').AsString := '%' + AnsiUpperCase(Trim(Edit1.Text)) + '%';
Table1.Open;:
Pero me da error aquí Table1sql.Text
No entiendo como es esto
Mi idea es una BD para poner Las serie de TV que he visto tiene una Tabla 1 y un campo Serie para el nombre de ellas.
Ayúdame por favor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Help Busqueda en BD 2

Publicado por Eva (484 intervenciones) el 01/02/2009 23:26:03
Busca en estas direcciones sobre SQL, en el índice vete a Consultas Básicas

http://www.asptutor.com/sql/
SELECT Campos FROM Tabla;
( si pones * son todos los campos)

http://www.aspfacil.com/tutsql/
(SELECT campo1, campo2, campo3 FROM nombre_tabla)
( si pones * son todos los campos)

http://programacion.com/tutorial/sql/

http://www.aulaclic.es/sql/f_sql.htm

Pero si yo te pongo un ejemplo de una biblioteca tu no puedes poner eso, deberás poner los nombres que tu estás usando.
Cambia BIBLIO por en nombre de tu tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar