Fórum Erro no código - por favor ajudem!!! #177812

27/08/2003

0

Olá pessoal

Estou tentando transferir os lançamentos de um veículo para outro, sendo que o veículo (codVeic) é campo das tabelas tblanccred (créditos) e tblancdesc (descontos). Cada veículo tem lançamentos de crédito e desconto.Quando eu escolho os dois veículos (origem e destino) somente transfere o primeiro lançamento de cada tabela, ficando os restantes com código anterior.

Uso:
Delphi 5 Enterprise
Paradox 7

Segue o código.

//Inicio
x := 0;
btnok.Enabled := False;
btnfechar.Enabled := False;
//Movimento Aberto
StatusBar.SimpleText := ´Transferindo do movimento aberto´;
dmdados.tblanccred.Open;
dmdados.tblancdesc.Open;
dmdados.tblancparadas.Open;
dmdados.tblanccred.Filter := ´CodVeic = ´´´+ editveicorigem.Text +´´´ and Data >= ´´´+ editdataini.Text +´´´ and Data <= ´´´+ editdatafinal.Text +´´´´;
dmdados.tblanccred.Filtered := True;
dmdados.tblanccred.First;
dmdados.tblancdesc.Filter := ´CodVeic = ´´´+ editveicorigem.Text +´´´ and Data >= ´´´+ editdataini.Text +´´´ and Data <= ´´´+ editdatafinal.Text +´´´´;
dmdados.tblancdesc.Filtered := True;
dmdados.tblancdesc.First;
dmdados.tblancparadas.Filter := ´CodVeic = ´´´+ editveicorigem.Text +´´´ and Data >= ´´´+ editdataini.Text +´´´ and Data <= ´´´+ editdatafinal.Text +´´´´;
dmdados.tblancparadas.Filtered := True;
dmdados.tblancparadas.First;
//ProgressBar
ProgressBar.Max := dmdados.tblanccred.RecordCount + dmdados.tblancdesc.RecordCount + dmdados.tblancparadas.RecordCount;
While not dmdados.tblanccred.Eof do begin
dmdados.tblanccred.Edit;
dmdados.tblanccredCodVeic.Value := strtoint(editveicdestino.Text);
dmdados.tblanccred.Post;
ProgressBar.Position := x;
x := x + 1;
dmdados.tblanccred.Next;
end;
While not dmdados.tblancdesc.Eof do begin
dmdados.tblancdesc.Edit;
dmdados.tblancdescCodVeic.Value := strtoint(editveicdestino.Text);
dmdados.tblancdesc.Post;
ProgressBar.Position := x;
x := x + 1;
dmdados.tblancdesc.Next;
end;
While not dmdados.tblancparadas.Eof do begin
dmdados.tblancparadas.Edit;
dmdados.tblancparadasCodVeic.Value := strtoint(editveicdestino.Text);
dmdados.tblancparadas.Post;
ProgressBar.Position := x;
x := x + 1;
dmdados.tblancparadas.Next;
end;

//Fim
dmdados.tblanccred.Filtered := False;
dmdados.tblancdesc.Filtered := False;
dmdados.tblanccred.Close;
dmdados.tblancdesc.Close;
dmdados.tblanccred.TableName := ´LancCred´;
dmdados.tblancdesc.TableName := ´LancDesc´;
ProgressBar.Position := 0;
btnok.Enabled := True;
btnfechar.Enabled := True;
StatusBar.SimpleText := ´Transferido com sucesso.´;


Netosdr

Netosdr

Responder

Posts

27/08/2003

Nando

Vc já pensou em utilizar comandos SQL para fazer essas transferências? não precisaria tanto código assim como vc fez.

Não sei qual o Alias que vc está utilizando no programa por isso vou chamá-lo de PATHDADOS, dai vc substitui pelo que deveria ser OK!

with TQuery.Create(nil) do
try
DatabaseName := ´PATHDADOS´;
SQL.Add(´UPDATE lanccred´);
SQL.Add(´SET Codveic = :CODNOVO´);
SQL.Add(´WHERE CodVeic = :CODANT´);
ParamByName(´CODNOVO´).AsInteger := strtoint(ediveicdestino.Text);
ParamByName(´CODANT´).AsInteger := strtoint(ediveicorigem.Text);
ExecSQL;
finally
free;
end;

Agora use o mesmo código somente substituindo lanccred pelo nome das outras tabelas que vc precisa atualizar.

Qualquer dúvida é só entrar em contato!

Espero ter ajudado!


Responder

Gostei + 0

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

Aceitar