PDA

Ver la Versión Completa : Actualizar campo en access


javieron
17-12-2006, 01:36:56
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:

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