Fórum Como mover registros de uma tabela p/ outra #151609
03/04/2003
0
Possuo em uma base de dados Access, com conexao via ADO, 2 tabelas:
TabelaCadastro
TabelaBaixa
Ambas com os seguintes campos:
COD AutoInc
PROTOCOLO Número
NOME Texto
Criei na tela de baixa de operações o seguinte código no botão de baixa:
[color=blue:86a217e52a]procedure TF_Baixa.btnBaixarClick(Sender: TObject);
var
i: Integer;
begin
with Modulo do
if MessageDlg(´Deseja baixar o registro?´, mtCustom, [mbYes, mbNo], 0)= idYes then
begin
tbBaixa.Append;
for i:= 0 to tbProt.FieldCount - 1 do
tbBaixa.Fields[i].Assign(tbProt.Fields[i]);
tbBaixa.Post;
tbProt.Delete;
end
else
Abort;
end;[/color:86a217e52a]
Esse código acima faria o seguinte:
Se eu clicar no botão ´Sim´, o registro seria copiado para a TabelaBaixa e depois excluído da TabelaCadastro.
Mas acaba surgindo a seguinte mensagem de erro:
[color=red:86a217e52a]´List index out of bounds (20)´[/color:86a217e52a]
e o registro selecionado para baixa nem é copiado para a TabelaBaixa e nem excluído da TabelaCadastro.
Como devo proceder nesse caso?
Desde já agradeço.
Vega.x
Curtir tópico
+ 0Posts
03/04/2003
Marcelo.c
tbBaixa.Append;
Gostei + 0
03/04/2003
Vega.x
Gostei + 0
03/04/2003
Marcelo.c
Gostei + 0
03/04/2003
Marcelo.c
if MessageDlg(´Tem certeza que deseja transferir o aluno para não-freqüentes?´,mtinformation,[mbyes,mbNo],0) = mrNo then
exit;
DM_Geral.TabParados.open;
Dm_Geral.TabControle.edit;
Dm_Geral.TabParados.insert;
for Num := 0 to DM_Geral.TabControle.FieldCount - 1 do
DM_Geral.TabParados.Fields[Num].Assign(DM_Geral.TabControle.Fields[Num]);
Dm_Geral.TabParados.post;
Dm_Geral.TabControle.delete;
Gostei + 0
03/04/2003
Vega.x
Gostei + 0
03/04/2003
Marcelo.c
Gostei + 0
03/04/2003
Vega.x
Um colega meu falou que o erro não é nos INSERT, APPEND e EDIT, e sim na linha:
[color=red:dab183a662]for i:= 0 to tbProt.FieldCount - 1 do[/color:dab183a662]
A função da linha acima (como ele disse) é atribuir um valor à variável ´i´.
Quando eu executo o comando DELETE, o erro acontece.
Como eu poderia proceder neste caso?
Gostei + 0
03/04/2003
Anonymous
espero ter ajudado....
Gostei + 0
03/04/2003
Marcelo.c
A idéia do [b:f0c0430d82]Balceiro[/b:f0c0430d82] é válida, mas o código que estou utilizando funciona bem, veja o código completo:
procedure TF_DPessoais.BitBtnEnviaClick(Sender: TObject);
[b:f0c0430d82]var
Num: SmallInt;[/b:f0c0430d82][i:f0c0430d82]//integer também funciona.[/i:f0c0430d82]
begin
if DM_Geral.TabControle.TableName=´Controle de Alunos´ then
begin
if MessageDlg(´Tem certeza que deseja transferir o aluno para não-freqüentes?´,mtinformation,[mbyes,mbNo],0) = mrNo then
exit;
DM_Geral.TabParados.open;
Dm_Geral.TabControle.edit;
Dm_Geral.TabParados.insert;
for Num := 0 to DM_Geral.TabControle.FieldCount - 1 do
DM_Geral.TabParados.Fields[Num].Assign(DM_Geral.TabControle.Fields[Num]);
Dm_Geral.TabParados.post;
Dm_Geral.TabControle.delete;
end
end;
Gostei + 0
04/04/2003
Vega.x
Finalmente consegui.
Gostei + 0
04/04/2003
Marcelo.c
:D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)