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;
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
Curtir tópico
+ 0
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]
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
Clique aqui para fazer login e interagir na Comunidade :)