PDA

Ver la Versión Completa : como hace una busqueda en mi dbgrid


jas010
28-02-2005, 23:33:59
como hago una busqueda en mi bdgrid
los datos los tengo ya cargados desde una consulta de sql osea en mi dbgrid esta el resultado de mi consulta (sql) el punto es que
necesito hacer
if dbgrid.¿? <>'' then
showmessge(..............)

marcoszorrilla
01-03-2005, 07:34:31
Lo correcto sería lanzar un Locate sobra la propia consulta.

Un Saludo.

Nbull
01-03-2005, 09:00:36
Hola Marcos como se haría eso, yo tengo una consulta SQL de la siguiente manera:




if radiobutton1.checked then begin // Si hemos decidido filtrar por
// el nombre...
Form1.Query2.Close();
// Utilizo quotedStr para ponerle comillas simple a la cadena
Form1.Query2.SQL.Text := 'SELECT * FROM agenda WHERE
Nombre='+quotedStr(Edit1.Text);
Form1.Query2.Open();
//...


Asi realizo yo las busquedas en mi DbGrid y me funciona, pero, me gustaría poderlo hacer con un Locate, para asi, conforme escribo dos letras que se posicione en los registros que empiezan por esas dos letras.No se si me he explicado.

Se que con Locate existe la posibilidad de hacer [LoPartialKey] y [LoCaseInsensitive] que me harian eso, mi pregunta es: ¿Puedo añadir un Locate a mi consulta sin deshacer el código que te he mostrado antes?
He probado y no lo consigo, o no lo llamo bien al método o no se:confused: .

Gracias y Un saludo.

Lepe
01-03-2005, 11:32:22
if radiobutton1.checked then begin // Si hemos decidido filtrar por
// el nombre...
Form1.Query2.Close();
// Utilizo quotedStr para ponerle comillas simple a la cadena
Form1.Query2.SQL.Text := 'SELECT * FROM agenda WHERE
upper(Nombre) like '+quotedStr(uppercase('%'+Edit1.Text)+'%');
Form1.Query2.Open();
Form1.Query2.Locate('Nombre', edit1.text,[lopartialkey, locaseinsensitive]);
//...


He modificado el sql para que busque sin tener en cuenta las mayusculas, tambien, con el comodin % para que muestre todos los que contengan el texto del edit. (Suponiendo que el % sea el comodin de tu base de datos, tambien puede ser el *).

Saludos

jas010
01-03-2005, 16:57:01
las aclaraciones hechas estan claras solo que la duda no esta resuelta

como le pregunto a la maquina si mi dbgrid tiene un dato o no tiene (dbgrid vacio)
si tiene un dato que me lo muestre en un showmessage y si no entonces que no haga nada
espero que me haya podido explicar y me hayan comprendido gracias una ves mas :cool:

DB-ADO
01-03-2005, 18:38:15
No se ni me interesa

marcoszorrilla
01-03-2005, 18:44:12
procedure TForm1.Button1Click(Sender: TObject);
begin
if query1.IsEmpty then
ShowMessage('No hay Registros que mostrar')
else
ShowMessage('Hay Registros que mostrar');
end;



Un Saludo.

Nbull
02-03-2005, 16:14:14
Hola Lepe, nada quería decirte que muchas gracias que me ha funcionado muy bien,:p lo único que en el código que pusiste había que quitar el 'upper' que pusiste delante del campo Nombre, el código funcionando se quedaría así:



if radiobutton1.checked then begin // Si hemos decidido filtrar por el nombre...
Form1.Query2.Close();
// Utilizo quotedStr para ponerle comillas simple a la cadena (en el caso
//que sea de tipo string ;)
Form1.Query2.SQL.Text := 'SELECT * FROM agenda WHERE Nombre Like
'+quotedStr(uppercase('%'+Edit1.Text+'%'));
Form1.Query2.Open();
Form1.Query2.Locate('Nombre',edit1.Text,[lopartialkey, locaseinsensitive]);


Nada Lepe muchas gracias de nuevo y que pases buena tarde.

Un Saludo;)

Lepe
03-03-2005, 12:08:04
No se ha dicho que gestor de bases de datos estas usando, en una búsqueda ultrarápida http://www.brettb.com/SQL_Help_Change_Lower_Upper_Case.asp
se ve que esa función pertenece al sql y si funciona.

El motivo de incluir esa función es para que se encuentre el texto de búsqueda, tanto en mayusculas como en minusculas.

Ahora mismo solo te encontrará los que esten escritos en mayusculas.

Saludos de nuevo.