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)
-   -   Comparar dos campos de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=74210)

leogobo 05-06-2011 23:12:07

Comparar dos campos de una tabla
 
hola,

como hago para comparar dos registros de un mismo campo de una tabla, específicamente con el ultimo. En pseudocodigo:

Código Delphi [-]
if (tabla1.campo1.actual=tabla1.campo1.ultimo) then
begin
 ...
end

estoy utilizando el componente Dbf de lazarus.

Gracias

ecfisa 06-06-2011 00:38:14

Hola leogobo.

Código Delphi [-]
...
var
  d1: variant;
begin
  Dbf1.First;
  d1:= Dbf1.FieldByName('Campo1').Value;
  Dbf1.Last;
  if d1 = Dbf1.FieldByname('Campo1').Value then
  begin
    ...
  end;

Saludos

leogobo 06-06-2011 00:46:41

pero solo quiero comparar, no ir hasta el ultimo porque se me perderia la posición actual de la tabla.

ecfisa 06-06-2011 01:10:25

Hola.

Es que no veo otra manera, no es un arreglo que se pueda manejar por índices o algo parecido. Para acceder al valor de un campo de determinado registro tenés que desplazarte hacia él.

Una posible solución para evaluar el valor de cualquier campo con el valor del último es tenerlo almacenado en una variable.
Código Delphi [-]
...
  // FValorUltimoCampo tiene almacenado el valor del último campo de la tabla
  if Dbf1.FieldByname('Campo1').Value = FValorUltimoCampo then 
  begin
    ...
  end;
Es decir, cuando agregas un registro deberías guardar el valor del campo que te interese en FValorUltimoCampo.


Saludos.

ecfisa 06-06-2011 01:25:35

Hola de nuevo.

No te mencioné el uso de BookmarkStr por que creo que en un post anterior dijiste que el componente TDbf no lo soporta o dá problemas, pero por las dudas probalo.

Seria más o menos así:
Código Delphi [-]
var
  BM: TBookmarkStr;
  d: Variant;
begin
  BM:= Dbf1.Bookmark;
  Dbf1.Last;
  d:= Dbf1.FieldByName('Campo1').Value;
  Dbf1.Bookmark:= BM;
  if d = Dbf1.FieldByName('Campo1').Value then
  begin
    ..
  end;
  ...

Saludos.

leogobo 06-06-2011 21:14:29

Perfecto, ya funciona como lo deseaba.

Gracias


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

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