Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Recorrer y comprar datos en un DBgrid (https://www.clubdelphi.com/foros/showthread.php?t=81484)

gonzabec 19-11-2012 01:28:33

Recorrer y comprar datos en un DBgrid
 
Buenas, soy muy nuevo en esto. En mi caso tengo los datos de una tabla (DBgrid) , donde esta esta conectada a un DataSorurce. Lo que yo necesito es: Recorrer El DBgrid y comparar cada registro con TEdit, en caso de encontrar cadenas iguales, reportar Verdadero o encontrado y en caso contrario Falso o no encontrado. Es para hacer un control de los datos de la tabla. Para verificar la existencia del dato buscado.
Gracias.
Saludos.

Caral 19-11-2012 01:30:53

Hola
El problema que veo es que por cada dato siempre mostrara o bien falso o verdadero.
Me parece algo ilogico.
Que base de datos usas ?
Que componentes de conexión ?
Saludos

gonzabec 19-11-2012 01:39:38

Creo que me exprese mal. La base de datos que uso es Acces. Los coponentes que uso son DBGrid,Data Source y TTable. Lo que yo quiero hacer es: Buscar la existencia de un dato respecto a un dato ingresado por un TEdit. Con este dato ingresado buscar si existe o no en el DBGrid. En caso de no existir, reporta que no se encontro lo pedido.
Gracias.

Caral 19-11-2012 01:55:47

Hola
Me imagino que buscaras el dato de algun campo de la tabla en especifico.
Usando un ttable tienes que usar un filtro que comparara el dato del campo contra el dato que escribiste en el edit.
Usando la logica de esto se tendra que recorrer la tabla para buscar el dato:

Código Delphi [-]
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then // si el edit NO esta vacío entonces sigue
   begin
      TuTable.Filtered := False;
  
     While not TuTable.Eof do
   begin
     Filtro := 'Tu_Campo = '''+ Edit1.Text + '*''';
      TuTable.Filter := Filtro;
      TuTable.Filtered := True;
      If Filtro <> Edit1.Text then 
     begin
     Showmessage('Registro NO encontrado');
    end;
     TuTable.Next;
         
   end

   else TuTable.Filtered := False;

Osea:
1-creo un filtro al campo de la tabla.
2-recorro la tabla buscado los datos que sean iguales.
3-indico si el dato NO se encontro
Saludos
PD: Codigo sin probar, al vuelo :D

Caral 19-11-2012 02:02:00

Hola
En realidad el codigo anterior es allgo ilogico ya que al estar conectado el ttable con el dbgrid al ser filtrado lo que hara sera borrar el contenido del dbgrid y mostrar solamente el dato que sea igual al del edit.
Creo que no se lo que buscas, tal vez te sirva de guia, pero no es lo correcto, lo mas logico es simplemente mostrar el dato usando un tquery u otro ttable.
Saludos

gonzabec 19-11-2012 02:03:52

Buenisimo! Pruebo, y aviso.
Gracias.

gonzabec 19-11-2012 02:31:59

Lo que quiero es buscar un dato a partir de otro que tengo es TEdit nada mas!. Osea Obtengo el dato y luego lo busco en DBgrid. Si no esta informo lo mismo al usuario, sino lo busco normalmente con un filtro

Caral 19-11-2012 02:55:21

Hola
Coloca un TQuery en el form, conectalo a la bd:
Código Delphi [-]
TuQuery.sql.text:= 'Select TuCampo from TuTabla where tucampo = '''+ Edit1.Text + '*''';
TuQuery.Open;
If TuQuery.Fields[0].Value <> Edit1.Text then
Showmessage('El dato no existe');
TuQuery.Close;
A ver asi:
Saludos

fidel 20-11-2012 19:57:59

"Locate" también te sirve si la tabla no es muy grande. Busca en la ayuda.

jsc 20-11-2012 21:18:47

Cita:

Empezado por Caral (Mensaje 449854)
Hola
Coloca un TQuery en el form, conectalo a la bd:
Código Delphi [-]
TuQuery.sql.text:= 'Select TuCampo from TuTabla where tucampo = '''+ Edit1.Text + '*''';
TuQuery.Open;
If TuQuery.Fields[0].Value <> Edit1.Text then
Showmessage('El dato no existe');
TuQuery.Close;
A ver asi:
Saludos

yo optaria por esta opción que te indica Caral
por aportar algo quiza en lugar de
Código:

If TuQuery.Fields[0].value <> Edit1.text then
sea mas vistoso de cara a no equivocarte en donde hacer el filtro o la busqueda sea
Código:

IF TuQuery.Fieldbyname('CAMPO').value <> Edit1.text then
donde CAMPO seria el campo de la tabla en la bd donde tendrias que buscar para encontrar o no coincidencias
saludos


La franja horaria es GMT +2. Ahora son las 12:26:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi