Erro em Transaçoes
01/12/2005
0
a estrututura e essa
procedure TFormAtualizarFatorContribuicaoInss.FormShow(Sender: TObject); begin //bla bla bla ... modulo.Dbcad.StartTransaction; //aqui eu inicio uma transação end;
:arrow: so que nesta linha de comando
procedure CarregarNovosValoresParaTabelaEncargos; var i:integer; texto:String; begin Modulo.TbEncFun.close; Modulo.TbEncFun.EmptyTable; //*********Nesta linha de comando Modulo.tbencfun.open; bla bla bla... end; end;
:cry: :cry: :cry: :cry:
[b:3a2f565a04][color=red:3a2f565a04]eu obtenho um erro , que segue abaixo:[/color:3a2f565a04][/b:3a2f565a04]
[URL=http://imageshack.us][img:3a2f565a04]http://img187.imageshack.us/img187/1238/imagemtabelaparadoxerro6wz.jpg[/img:3a2f565a04][/URL]
Agora tres coisas a acrescentar:
:?: :?: :?: :?: :?:
:arrow: eu não sei[b:3a2f565a04] se a causa do relacionamento [/b:3a2f565a04]pode ser responsavel por este erro...
:arrow: No fundo estou sem saber o porque e a principio não gostaria de mexer na estrutura do formulário e sim tentar entender o conceito envolvido e o porque do erro...
Muito obrigado... :P :P :P
Marco Salles
Posts
02/12/2005
Thomaz_prg
02/12/2005
Marco Salles
mas a questão esta ai ... Eu preciso da transação antes desta linha
Porque o que eu faço na verdade é apagar todos os dados desta tabela e inserir novos dados. Eu preciso do inicio da transação antes da linha.. Porque se algo der errado eu consigo recuperar os dados iniciais.
Tres coisas no meu ponto de vista são importantes como eu disse anteriormente
02/12/2005
Marco Salles
Este formulario , não faz nada , alem de abrir uma transação e excluir uns registros e depois cancelar estas alteraçoes
Neste formulario tem tres botoes e um codigo bem simplificado
uses UModulo, UForMenu; {$R *.DFM}
no evento onshow abro as duas tabela s e inicio uma transação
procedure TForm2.FormShow(Sender: TObject); begin Modulo.TbEncFun.open; modulo.tbauxfam.open; modulo.Dbcad.StartTransaction; end;
Limpo a tabela EncargosFuncionarios
procedure TForm2.Button1Click(Sender: TObject);
begin
Modulo.TbEncFun.close;
Modulo.TbEncFun.EmptyTable;
Modulo.tbencfun.open;
end;
Limpo a tabela Auxilio Familia******
procedure TForm2.Button3Click(Sender: TObject); begin Modulo.TbAuxFam.close; Modulo.TbAuxFam.EmptyTable; Modulo.tbAuxFam.open; end;
Cancelo a transação
procedure TForm2.Button2Click(Sender: TObject); begin modulo.Dbcad.Rollback; end;
encerro o formulario
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin modulo.tbencfun.Close; modulo.tbauxfam.close; end;
Qual a diferença entre clicar o button2 e o button3.. Aparentemente nenhuma diferença
So que no botão 2 temos um erro... Verifiquei mais a fundo e percebi uma diferença nas definiçoes dos dois componentes table
[b:e47599dd81]o componente table1 que aponta para tabela encargos tem na sua definição de DabaseName no objecto inspector um objeto DataBase que aponta para o Aliase
o componente table2 que aponta para tabela SalarioFamilia tem na sua definição de DabaseName no objecto inspector o proprio Aliase [/b:e47599dd81]
Alterei então a definição do DataBase do Table2 -->>> Isto é , apontei tb para o componenente DataBase
Feito isto pude verificar o mesmo tipo de erro
[b:e47599dd81]Conclui então que o método EmptyTable não pode ser aplicado quando a propriedade DataBaseName estiver apontando para um componente DataBase.. A Razão disso eu não sei , talves os mais teoricos possam explicar explicar ou tentar explicar esta conclusão..[/b:e47599dd81]
Clique aqui para fazer login e interagir na Comunidade :)