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)
-   -   Actualizar campo en access (https://www.clubdelphi.com/foros/showthread.php?t=38517)

javieron 17-12-2006 01:36:56

Actualizar campo en access
 
Hola a todos, lo primero gracias por vuestro tiempo :).
Lo que tengo es una conexión con una tabla de access mediante ado.
Quiero que al iniciar el formulario principal compruebe un valor de cada uno de los registros de una tabla y lo cambie si es necesario, dicho campo es la franja de edad (0-3 años bebe, 3-13 infantil etc..) ahora viene lo raro...
Si dicho campo esta vacio en todos los registros me los cambia en todos y listo (són más de 4000 registros), si por ejemplo solamente dejo vacio el campo del primer y del último registro me cambia el primero pero no el último.
Si recorro la tabla al reves, desde el ultimo registro hasta el primero me cambia el valor del último pero no del primero. Pongo el código para ver si queda un poco claro que me parece que estoy dando demasiadas vueltas :confused:

Código Delphi [-]
procedure TfrmPrincipal.FormShow(Sender: TObject);
var
  fnac:tdatetime;
  anios,i:integer;
begin

datamodule2.ADOSocios.First;
while datamodule2.ADOSocios.eof=false do
begin
fnac:=datamodule2.ADOSociosFNac.Value;
anios:=strtoint(Edad(fnac));
if anios<=3 then
begin
  if datamodule2.ADOSociosFRANJA.Value<>'BEBE' then
    begin
    datamodule2.ADOSocios.edit;
    datamodule2.ADOSociosFRANJA.Value:='BEBE';
    datamodule2.ADOSocios.post;
    end;
end
else
  if (anios>3) and (anios<=13) then
  begin
    if datamodule2.ADOSociosFRANJA.Value<>'INFANTIL' then
    begin
    datamodule2.ADOSocios.edit;
    datamodule2.ADOSociosFRANJA.Value:='INFANTIL';
    datamodule2.ADOSocios.post;
    end;
  end
  else
    if (anios>13) and (anios <=17) then
    begin
      if datamodule2.ADOSociosFRANJA.Value<>'JUVENIL' then
      begin
      datamodule2.ADOSocios.edit;
      datamodule2.ADOSociosFRANJA.Value:='JUVENIL';
      datamodule2.ADOSocios.post;
      end;
    end
    else
      if (anios>17) and (anios <=64) then
      begin
        if datamodule2.ADOSociosFRANJA.Value<>'ADULTOS' then
        begin
        datamodule2.ADOSocios.edit;
        datamodule2.ADOSociosFRANJA.Value:='ADULTOS';
        datamodule2.ADOSocios.post;
        end;
      end
      else
      begin
        if datamodule2.ADOSociosFRANJA.Value<>'MAYORES 65' then
        begin
        datamodule2.ADOSocios.edit;
        datamodule2.ADOSociosFRANJA.Value:='MAYORES 65';
        datamodule2.ADOSocios.post;
        end;
      end;
datamodule2.ADOSocios.Next;
end;
end;

No se cual será el error, ya digo que si están todos los campos vacios lo comprueba bien y me inserta el valor bueno en todos los registros de la tabla. Gracias otra vez, un saludo

poliburro 17-12-2006 04:04:16

Lo ideal sería que lo hicieras con un query, si gustas pásame el DDL de la tabla y las condiciones y te ayudo a generar la consulta de actualización

javieron 17-12-2006 12:52:54

Hola poliburro, gracias por la respuesta. Lo siento pero no se a que te refieres con el ddl de la tabla, soy principiante en esto de las bases de datos :o
crees que con una query funcionaria?. Voy a intentar hacerlo con una query a ver que pasa. Un saludo


La franja horaria es GMT +2. Ahora son las 12:00:54.

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