GARANTIR DESCONTO

Fórum Loop ??? #203738

31/12/2003

0

Bom dia,

Estou fazendo um loop de inserção em uma tabela que tem apenas 2 registros do mesmo funcionario, quando eu faço a transferência de codigo dele p/um outro código ele só passa pelo loop uma única vez...o q pode estar de errado....

Desde já agradeço.

{Histórico Ocupacional}
Flag := 0;
cdsHist_Oc.Close;
cdsHist_Oc.Params[0].AsInteger := iEmpresa;
cdsHist_Oc.Params[1].AsInteger := iMatricula;
cdsHist_Oc.Open;
if not cdsHist_Oc.Locate(´COD_EMP_HOCUP;MATRIC_HOCUP´,
VarArrayOf([iEmpresa, iMatricula]),[loPartialKey]) then Flag := 1;
if Flag = 0 then
begin
{Atualiza Variáveis}
while not cdsHist_Oc.Eof do
begin
iCodigoHO := cdsHist_Oc.FieldByName(´COD_HOCUP´).AsInteger;
sObsHO := cdsHist_Oc.FieldByName(´OBS_HOCUP´).AsString;
{Insere um novo registro}
cdsHist_Oc.Append;
cdsHist_Oc.FieldByName(´COD_EMP_HOCUP´).AsInteger := iEmpresa;
cdsHist_Oc.FieldByName(´MATRIC_HOCUP´).AsInteger := iMatriculaNova;
cdsHist_Oc.FieldByName(´COD_HOCUP´).AsInteger := iCodigoHO;
cdsHist_Oc.FieldByName(´OBS_HOCUP´).AsString := sObsHO;
{Faz Gravação}
cdsHist_Oc.Post;
cdsHist_Oc.ApplyUpdates(-1);
cdsHist_Oc.Next;
end;
end;


Programadormaster

Programadormaster

Responder

Posts

31/12/2003

Rômulo Barros

{Histórico Ocupacional}
Flag := 0;
cdsHist_Oc.Close;
cdsHist_Oc.Params[0].AsInteger := iEmpresa;
cdsHist_Oc.Params[1].AsInteger := iMatricula;
cdsHist_Oc.Open;
if not cdsHist_Oc.Locate(´COD_EMP_HOCUP;MATRIC_HOCUP´,
VarArrayOf([iEmpresa, iMatricula]),[loPartialKey]) then Flag := 1;
if Flag = 0 then
begin
{Atualiza Variáveis}
[size=18:3823b5001b][color=red:3823b5001b]cdsHist_Oc.First;[/color:3823b5001b][/size:3823b5001b]
while not cdsHist_Oc.Eof do
begin
iCodigoHO := cdsHist_Oc.FieldByName(´COD_HOCUP´).AsInteger;
sObsHO := cdsHist_Oc.FieldByName(´OBS_HOCUP´).AsString;
{Insere um novo registro}
[color=red:3823b5001b]cdsHist_Oc.Insert;[/color:3823b5001b]
cdsHist_Oc.FieldByName(´COD_EMP_HOCUP´).AsInteger := iEmpresa;
cdsHist_Oc.FieldByName(´MATRIC_HOCUP´).AsInteger := iMatriculaNova;
cdsHist_Oc.FieldByName(´COD_HOCUP´).AsInteger := iCodigoHO;
cdsHist_Oc.FieldByName(´OBS_HOCUP´).AsString := sObsHO;
{Faz Gravação}
cdsHist_Oc.Post;
cdsHist_Oc.ApplyUpdates(-1);
cdsHist_Oc.Next;
end;
end;

[color=red:3823b5001b]//Lembre-se de que o ´apend´ insere um novo registro ao final de todos já existentes, chegando então ao fim da tabela (EOF).. Basta utilizar o insert no lugar do apend....[/color:3823b5001b]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar