Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Cita:
Pues bien, me ha servido de mucho para la validacion, pero el problema es que aun asi necesito un metodo para buscar con ADOTable con un filtro o algo asi, porque por ejemplo cuando realize la consulta y pedir buscar por nombre y apellido (o por parte de este), utilizaria el Filtro y mostraria los resultados en un db grid.
Si se trata de campos alfanuméricos la función que te puse en el mensaje anterior funciona perfectamente. De tratarse de campos numéricos, tendrás que filtrar por >, <, = ,>=, <=.

Pero creo entender de tu comentario que no has podido implementar la función del mensaje #2 en tu código, por lo cuál te adjunto un demo funcionando para que puedas revisar con tranquilidad el por qué.

Crea una carpeta, descomprimí los fuentes allí y compila. (incluye dbdemos.mdb que trae Delphi)

Saludos.
Archivos Adjuntos
Tipo de Archivo: zip nefore.zip (67,0 KB, 21 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 17-06-2013
nefore nefore is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 25
Poder: 0
nefore Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.


Si se trata de campos alfanuméricos la función que te puse en el mensaje anterior funciona perfectamente. De tratarse de campos numéricos, tendrás que filtrar por >, <, = ,>=, <=.

Pero creo entender de tu comentario que no has podido implementar la función del mensaje #2 en tu código, por lo cuál te adjunto un demo funcionando para que puedas revisar con tranquilidad el por qué.

Crea una carpeta, descomprimí los fuentes allí y compila. (incluye dbdemos.mdb que trae Delphi)

Saludos.
Hola muchas gracias por tomarte el tiempo para buscar el arhivo que me pasaste, lo he visto y De verdad agradezco tu paciencia y ayuda. Antes que nada, te pido disculpas me he expresado mal, tu codigo, como dices, no tiene ningun problema cuando es string (como nombre y apellido, y dni lo son), el problema es el campo codigo que es integer, probe colocar el AdoTable1 (que es que esta asociado con la tabla propietarios).Filter: 'DNI ='dato; pero me salta un error de "Parametros Incorrectos, fuera del intervalo permitido o en conflicto con otros'.
Me he fijado el archivo que me pasaste, pero justamente realiza la busqueda por name, capital o continent (campos string) y no por los otros campos numericos:

este es el codigo de la busqueda en el cual esta (entre comentarios) el codigo que me pasaste

Código:
function Tclasepropietario.busqueda(dato: string; opcion: Integer): Boolean;
var
  ban: Boolean;

begin
  ban:= False;
  ADOTable1.Filtered := True;
  case opcion of

  1: begin
      //ADOTable1.Filter:= Format(' = ',[CODIGO_TITULAR,dato]);
      //if (ADOTable1.RecordCount > 0)
      //then
      //begin
      //  ban:= True;
      //end
      //else
      //begin
      //  ban:= False;
      //end;
      if (ADOTable1.Locate('CODIGO_TITULAR',dato,[])=True)then
      ban:=True;
     end;
  2: begin
      if (ADOTable1.Locate('DNI',dato,[])=True)then
      ban:=True;
      end;
  3: begin
      ADOTable1.Filter:='APELLIDO_NOMBRES LIKE '''+dato+'*''';
      if (ADOTable1.RecordCount > 0)
        then
          begin
            ban:=True;
          end
        else;
         begin
            ban:=False;
          end;
      end;
  end;
  busqueda:= ban;
end;
He intentado implementar el codigo #2 pero como te mencione, me sigue saltando el error de "Parametros Incorrectos, Fuera del Intervalo permitido o en conflicto con otros". Lo probe con el ADOTABLE.locate (que me mencionaste despues y ha funcionado), pero cuando muestro el ADO en un DB Grid, no me filtra y me muestra solamente esa persona con el dni o con el codigo que haya escrito; solamente apunta a donde se encuentra ese registro (supongo que es por la misma funcion locate, que no es un filtro en realidad, solo busca el valor y se para alli), no es asi con el nombre el cual efectivamente me filtra los resultados.

En el siguiente codigo, ocurre el mismo error:

Código:
procedure TForm7.FormActivate(Sender: TObject);
begin
propietario:= Tclasepropietario.Create;
propietario.conectaBD;
propietario.ConectaTabla(1);
ADOTable1.Filtered:= True;
ADOTable1.Filter:='BORRADO LIKE FALSO';
DataSource1.DataSet := ADOTable1;
end;
En donde Form7 es el formulario donde realizo la modificacion de propietarios, lo que intento hacer es: en un DB Grid que esta en dicho formulario, mostrar solo aquellos cuyo campo BORRADO sea FALSO (es decir mostrar aquellos propietarios que estan activos), y a partir de ahi buscar por codigo, dni o "apellido y nombre".
Pero como te digo me salta el error mencionado.
Responder Con Cita
  #3  
Antiguo 17-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
el problema es el campo codigo que es integer, probe colocar el AdoTable1 (que es que esta asociado con la tabla propietarios).Filter: 'DNI ='dato; pero me salta un error de "Parametros Incorrectos, fuera del intervalo permitido o en conflicto con otros'.
Como te comenté en el mensaje #6:
Cita:
Si se trata de campos alfanuméricos la función que te puse en el mensaje anterior funciona perfectamente. De tratarse de campos numéricos, tendrás que filtrar por >, <, = ,>=, <=.
Cita:
En el siguiente codigo, ocurre el mismo error:

Código Delphi [-]
procedure TForm7.FormActivate(Sender: TObject);
begin
  propietario:= Tclasepropietario.Create;
  propietario.conectaBD;
  propietario.ConectaTabla(1);
  ADOTable1.Filtered:= True;
  ADOTable1.Filter:='BORRADO LIKE FALSO';
  DataSource1.DataSet := ADOTable1;
end;
En el caso de ser un campo lógico también se tiene que accionar de forma diferente:
Código Delphi [-]
procedure TForm1.FilterLogical(const FName: string; const Value: Boolean);
const
  COND : array[Boolean] of string =('''False''','''True''');
begin
  with ADOTable1 do
  begin
    Filtered := False;
    Filter   := Format('%s= %s',[FName, COND[Value]]);
    Filtered := True;
  end;
end;

// LLamada:
...
begin
  FilterLogical('Borrado', True);
  ...
Creo que debes profundizar un poco mas sobre el tema de los filtros.

En el FTP de Club Delphi se encuentra un libro de descarga gratuita en el que se explica cláramente: La cara oculta de Delphi 4 (Capítulo 20).

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Busqueda con ADOTable elpacua OOP 6 28-02-2008 10:46:39
Sum en AdoTable novato03 Conexión con bases de datos 14 02-11-2007 21:58:46
Relación AdoTable novato03 Conexión con bases de datos 3 02-11-2007 17:40:39
EVariantError con ADOTable chujor Conexión con bases de datos 2 17-05-2007 12:38:57
Ordenar una ADOTable manu Conexión con bases de datos 5 05-02-2004 23:48:23


La franja horaria es GMT +2. Ahora son las 20:35:34.


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