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