[firebase-br] Transações com consultas

Tecnobyte Informática temp2 em tecnobyte.com.br
Seg Abr 8 18:09:10 -03 2013


Boa tarde

Como há muito tempo utilizo IBX, até então quase sempre uso CommitRetaining 
e RollbackRetaining, pois para fazer de outra forma com IBX fica bem 
complexo para controlar. Isto resolve o problema de imediato, mas se 
considerarmos uma aplicação que fica rodando durante muito tempo isto pode 
ser problemático.

Uma alternativa seria usar ClientDataSet + DataSetProvider para manter os 
dados na tela mesmo quando executa commit, mas sinceramente não gosto desta 
abordagem porque me permite pouco controle sobre a interação tela x acesso a 
dados.

Atualmente tenho experimentado fazer uma separação entre tela e acesso a 
dados. Para telas em geral estou usando componentes comuns (TEdit, 
TComboBox, etc) e para listagens de dados na tela estou usando ClientDataSet 
+ DataSource + DBGrid. Em ambos os casos crio rotinas para carregar, gravar 
e excluir dados, onde posso fazer o controle transacional de forma 
totalmente independente das telas. No início está dando um bom trabalho, 
visto que não estou muito acostumado com esta abordagem, mas estou gostando. 
Esta estratégia dá total liberdade na construção das telas e pleno controle 
no acesso aos dados. Uma coisa não interfere na outra. De carona ainda ganho 
mais liberdade para escolher o componente de acesso a dados, pois só preciso 
de conexão + transação + componente para executar SQL (IBDatabase + 
IBTransaction + IBSQL, ou, SQLConnection + SQLQuery).

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br

-----Mensagem Original----- 
From: Frederico Godoi
Sent: Monday, April 08, 2013 4:53 PM
To: FireBase
Subject: Re: [firebase-br] Transações com consultas

Acho essa uma boa discussão. Também sinto dificuldades.

Eu uso FIBPlus, que é muito parecido com IBX.
Eu tenho 1 componente GERAL de conexão ao banco. Ele tem 1
FIBTransactiogeral.
TODOS os componentes de tela usam esse Connection e automaticamente todos
usam a mesma IBTransaction.

1. Sempre que dou um commit, preciso colocar um "commitretaining" porque
senão derruba a transação e praticamente a conexão.
Essa é a recomendação dos Srs ?

2. As Querys que fazem uma consulta simples pra mim. Qualquer consulta. Não
fazem commit, mas a propriedade "Autocommit" está true.

3. Quando preciso colocar operação em transação, tipo , ao importar um
arquivo grande e fazer várias alterações que só devem valer se tudo
funcionar no final.
Assim eu não faço CommitRetaining até o fim do meu trabalho. Se funcionar,
faço CommitRetaining, se der algum erro no meio, faço RollbackRetaining.

Qual a sugestão dos srs pra melhorar isso ?




2013/4/8 Luiz Carlos <lcarlos2000 em bol.com.br>

> Gladiston, eu uso o IBX que não tem esta opção.
>
> Luiz Carlos
>
>   ----- Original Message -----
>   From: Gladiston Santana
>   To: FireBase
>   Sent: Monday, April 08, 2013 9:37 AM
>   Subject: Re: [firebase-br] Transações com consultas
>
>
>   Creio que o unico problema em compartilhar a mesma sessão de transação é
>   que o commit de um insert/update/delete afetará também as consultas, o
> que
>   pode atrapalhar componentes como dbgrid e afins que não são capazes de
>   reposicionar a si proprio depois que perde a posição do cursor.
>   Se voce usa o IBO, há uma propriedade acho que no IBQuery  chamada de
>   CommitAction, se mudar para caRefresh, o proprio IBO ao receber um 
> commit
>   vai "commitar" fisicamente, mas não perderá os cursores em seus
> componentes
>   dataware.
>
>
>   Gladiston Santana
>   Departamento de TI
>   Grupo Vidy
>   Tel (11) 4787-3122 ramal 228
>   Rod. Régis Bittencourt 3360 - Km 272,5
>   Taboão da Serra - SP - CEP: 06793-000
>   Visite nosso site: www.vidy.com.br
>   Visite também : www.expolabor.com.br
>
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista