Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Comparar y Validar Campos

Buenas tardes, Estoy super nuevo en esto de la programacion

Mi requerimiento es el siguiente estoy trabajando con una data de un sistema administrativo (base de datos DBISAM)y necesito una aplicación que lea el código del cliente en la tabla y el saldo (deuda) que posee el mismo, en estos momentos estoy comenzando con la búsqueda del cliente con el siguiente código:
Código Delphi [-]
Procedure TF_Clientes.VerificaCodigo;
var codigo : string;
begin
  With DataM.T_Clientes do
  begin
    codigo:= edit1.Text;
    IF  FieldByname('FC_CODIGO').AsString = codigo then
    begin
       ShowMessage('Codigo Encontrado');
    end
    else
    begin
      ShowMessage('Codigo No Existe');
    end;
  end;
end;

El detalle esta que solo valida el primer registro, no hallo como hacer una secuencia para que busque el código que digité en el edit.text

Me imagino que puede ser con un while o alguna sentencia como el LOCATE (no se si este ultimo lo acepta el DBISAM) pero no se como utilizarlo.

Disculpen y Gracias.

Última edición por ecfisa fecha: 13-10-2011 a las 22:24:03. Razón: ETIQUETAS [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 13-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 L3st4t.

Por favor te ruego que uses las etiquetas [delphi] [/delphi] para encerrar tu código Delphi. ( Etiquetas vB )

Creo que deberías hacer algo como:
Código Delphi [-]
...
  if DataM.T_Clientes.Locate('FC_CODIGO', Edit1.Text, []) then
    ShowMessage('Codigo Encontrado')
  else
    ShowMessage('Codigo No Existe');
...
No sé con que componentes estas trabajando ya que también se puede hacer mediante una consulta SQL.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 13-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola L3st4t.

Por favor te ruego que uses las etiquetas [delphi] [/delphi] para encerrar tu código Delphi.

Creo que deberías hacer algo como:
Código Delphi [-]
...
  if DataM.T_Clientes.Locate('FC_CODIGO', Edit1.Text, []) then
    ShowMessage('Codigo Encontrado')
  else
    ShowMessage('Codigo No Existe');
...
No sé con que componentes estas trabajando ya que también se puede hacer mediante una consulta SQL.

Un saludo.
Gracias por la pronta respuesta disculpa lo de las etiquetas no habia leido el apartado vB

Resulta que no me funciona ya que estoy usando
Código Delphi [-]
FieldByname
Si en el no me permite ver el registro desde la tabla me genera una error. Respecto a los componentes tendrias que decirme para ver si te entiendo pero creo que si acepta una consulta SQL....

Saludos...
Responder Con Cita
  #4  
Antiguo 13-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Es que no es excluyente el uso del método FieldByName con el uso de la función Locate, ambas realizan taréas diferentes.

El método FieldByName es utilizado para acceder al valor de un campo (visualizar/asignar/modificar) mediante su nombre, en tanto que la función Locate, sirve para buscar/posicionarse en un registro de una tabla.

Respecto a los componentes me refiero si estas usando TTable, TQuery (BDE) - TADOTable, TADOQuery (ADO) - TIBDataSet, TIBQuery (IBX) ...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 13-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Entiendo pero cuando coloco la instruccion que me diste me genera erro,r porque supungo que no encuentra o relaciona el campo FX_CODIGO que esta dentro de la tabla y respecto a los componentes creo que utilizo SQLQUERY ya que los otros que me mencionas no me suenan por ningún lado.

Saludos
Responder Con Cita
  #6  
Antiguo 13-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Entonces se trata de los componentes dbExpress.

La busqueda usando un TSQLQuery sería:
Código Delphi [-]
function ExisteElDato(AQuery: TSQLQuery; Dato: string): Boolean;
begin
 with AQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM TU_TABLA');
    SQL.Add('WHERE TU_CAMPO = :DATO');
    ParamByName('DATO').AsString:= Dato;
    Open;
    Result:= not IsEmpty;
  end;
end;
Deberás reemplazar: TU_TABLA y TU_CAMPO, por los nombres que le hayas dado a la tabla y al campo sobre el que realizás la búsqueda.

Ejemplo de uso:
Código Delphi [-]
 if ExisteElDato(SQLQuery1, Edit1.Text) then
    ShowMessage('Existe')
  else
    ShowMessage('No existe');

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-10-2011 a las 23:53:39. Razón: Sacar carita (:D) del código...
Responder Con Cita
  #7  
Antiguo 14-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Yo estoy mas perdido que la palabra... Pues no me resulto... Yo creo que no cuento con esos componentes, te cuento estoy usando delphi 5 la base de datos con la que estoy trabajando es DBISAM 4.29

Como lo haría con un ciclo repetitivo u otra forma?

La verdad que me estoy frustrando.... No logro entender....
Responder Con Cita
  #8  
Antiguo 14-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
A ver... vamos a empezar por lo primero así llegamos a buen puerto.

En tu form has puesto componentes para conectarte a la base de datos sea quál fuere. ¿ De que pestaña de Delphi los has sacado ?



Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 14-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Ok

Para para conectar la base de datos utilice Un modulo de datos y cree las tablas para consultas con el componente o pestaña DBISAM Utilice un DATASOURCE del componente DATA ACCES y lo que es formas, botones, edit, dbgrid del standar el mismo apunta al DataSource.

Saludos
Responder Con Cita
  #10  
Antiguo 14-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Ahora sí entiendo, yo no conocía en absoluto (hasta ahora) DBISAM, y me confundió el comentario de tu primer post:
Cita:
(base de datos DBISAM)
Basándome en él pensé que sería algún motor de base de datos (que no conocía) y no componentes, de allí la confusión.

Como te digo arriba no conozco esos componentes, pero voy a ver que información puedo conseguir sobre ellos.

Quizá algún compañero haya trabajado con ellos y te puede ayudar más facilmente.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 14-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Ok

Muchas Gracias..


Quedo Atento....

Saludos
Responder Con Cita
  #12  
Antiguo 14-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Pude encontrar esto: DBISAM Driver Manual

Pero lo que creo que te va a resultar más útil es esto: DBISAM_DEMO, un demo sobre el úso de los componentes. Aunque no pude probarlo por carecer de los mismos, pareciera que soportan la función Locate ya que en una parte del código dice:
Código Delphi [-]
  ...
   qryCopyCustFromMem.ExecSQL;
    // immediately locate the new customer in the dataset
    // using the just inserted ID number

    tblCustomers.Locate('CustNo', VarArrayOf([tblCustomers.LastAutoIncValue]), []);
 ...

Espero que te ayude.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-10-2011 a las 01:42:40.
Responder Con Cita
  #13  
Antiguo 14-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Thumbs up

Gracias amigo por toda tu ayuda... Revisaré el contenido enviado y te avisaré muy agradecido por tu interés.


Saludos
Responder Con Cita
  #14  
Antiguo 16-10-2011
L3st4t L3st4t is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
L3st4t Va por buen camino
Saludos, al final si pude hacer la cuestión, lo pude hacer con un TBISAMquery y setencias mySQL voy abrir otro tema en "varios" por una duda que no tiene que ver con esto...

Gracias por ese manual lo he estado hojeando y se ve muy interesante.
Responder Con Cita
Respuesta



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
Comparar dos campos de una tabla leogobo Conexión con bases de datos 5 06-06-2011 21:14:29
Problema al comparar dos campos en sql m.ruiz SQL 6 02-08-2007 11:33:48
Comparar 4 campos fechas y hacer un update con el más nuevo pablo_911 SQL 0 11-07-2006 23:39:27
time, comparar 2 campos ttime Pascual Montes Varios 2 29-03-2005 19:50:47
Comparar campos de un DBGrip conectado a in IBDataSet Durbed Conexión con bases de datos 0 01-10-2004 16:46:16


La franja horaria es GMT +2. Ahora son las 16:01:30.


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
Copyright 1996-2007 Club Delphi