[firebase-br] Commit ou CommitRetaining

RedDevil reddevil_fdb em yahoo.com.br
Seg Jun 19 00:32:30 -03 2006


ola Luís,

nesse teu caso ae, como se trata do IBObjects, se voce quiser, voce pode
fazer o seguinte:

1 - coloque a propriedade *CommitAction* da TIB_Query que aponta para a
tabela cidades como "caInvalidateCursor"...

2 - se voce quiser que quando um registro seja inserido o "foco" acompanhe
esse registro, ou seja, por exemplo se voce estiver inserindo registros em
um form e depois retornando a um TIB_Grid e quiser que, apos a inclusao de
um novo registro, esse registro recem incluido fique selecionado no
TIB_Grid, coloque a propriedade *RefreshAction* da TIB_Query cidades como
"raKeepDataPos"...

mas se voce quiser que apos a inclusao de um registro o "foco" permaneça no
registro no qual estava antes da inclusao (algo semelhante aquela historia
de uso de bookmarks que eh necessario fazer com os componentes de acesso
convencionais), deixe a propridade *RefreshAction* quieta, no seu sabor
default, que eh "raKeepRowNum"...

okeyz, uma vez tendo feito isso ae acima, ao inves de usar o famigerado
*CommitRetaining* e deixar as tuas transaçoes totalmente azaradas, ativas
por tempo desnecessario, voce podera tranquilamente usar o *Commit*, que a
tua cidade incluida/alterada/excluida sera salva, a transaçao sera encerrada
e o teu dataset permanecera aberto...

e apenas por precauçao, para ter a absoluta certeza que que a cidade recem
incluida vai aparecer na seleçao meeessssmo (comigo nunca aconteceu de nao
aparecer, mas eu ja vi isso acontecer), voce pode definir uma variavel em
sabor Integer no delphi, por exemplo, uma variavel chamada worder, e apos o
*Commit*, fazer algo tipow assim:

worder := DM.qryCidades.OrderingItemNo;
DM.qryCidades.OrderingItemNo := 0;
DM.qryCidades.OrderingItemNo := worder;

isso ae acima vai fazer algo como que um "soft refresh" na TIB_Query das
cidades, "refreshando" apenas o que esta no buffer, sem entrar em umas de
alugar o servidor...

e para voce dar o teu *Commit*, eu sempre achei legal fazer algo tipow
assim:

 try
   DM.qryCidades.Post;
   DM.TransContatos.Commit;
 except
   on Exc: Exception do
     begin
       DM.TransContatos.Rollback;
       showmessage('Aconteceu a Advertência:'+#13#13+EXC.Message+#13#13+'A
Cidade Não Foi Incluída/Alterada/Excluída!');
     end;
   end;


boa sorte ae...


[]s
força sempre!!!
ate +++

--
Luiz "RedDevil" Stefanski - Linux User #399026
http://www.RedDevil.eti.br - Delphi 4 Powered by IBObjects
exemplos e dicas sobre o IBObjects:
http://www.RedDevil.eti.br/ibob.htm
usando o IBExpert no Linux:
http://www.firebase.com.br/fb/artigo.php?id=1366



----- Original Message -----
From: "Luís Cosmo" <jrcosmolui em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Sunday, June 18, 2006 2:06 PM
Subject: [firebase-br] Commit ou CommitRetaining


Pessoal,

Como resolvo esse problema:

Quando faço uma inclusão no cadastro de cidade e se eu quiser, logo após,
incluir um novo registro em outro Cadastro, onde tenho que informar essa
cidade que acabei de gravar, ela não aparece ainda na lista de cidades, quer
dizer, não esta atualizando imediatamente... pra isso acontecer tenho que
fechar e abrir aplicação. Estou usando no botão Gravar a seguinte linha de
código:

  .....
  .....
  DM.TransContatos.CommitRetaining;
  ....
  ....

  Como resolvo esse problema? Estou usando o DELPHI 7 + IBO + Firebird

  Obrigado


Luis Jr


--
Luis Jr



	

	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 






Mais detalhes sobre a lista de discussão lista