Fórum commit fecha as tabelas ... porque ? #170836

22/07/2003

0

try
if DM_monitora.TabcobCOD_FIL.IsNull then
begin
showmessage(´Campo Filial é Obrigatório!´);
DBLookupComboxfilial.SetFocus;
abort;
end;

with dbeditcodigo do
begin
Color:=clwindow;
Enabled:=true;
end;
with dbeditdata do
begin
Color:=clwindow;
Enabled:=true;
end;
btbitexcluir.enabled:=true;
btbiteditar.enabled:=true;
btbitinserir.enabled:=true;
btbitsalvar.enabled:=false;
btbitcancelar.enabled:=false;
dm_monitora.tabcob.Post;
dm_monitora.IBTransaction.Commit;
except
dm_monitora.IBTransaction.Rollback;
erro1;
end;

e mesmo que eu faça assim tambem

try
dm_monitora.tabcob.post;
dm_monitora.ibtransaction.commit;
except
dm_monitora.ibtransaction.rollback;
end;


Midas

Midas

Responder

Posts

22/07/2003

Marcelo.c

Se você utiliza IBDataSet, dê uma olhada neste tópico:

http://200.196.51.150/forum/viewtopic.php?t=8336&highlight=ibdataset


Responder

Gostei + 0

23/07/2003

Werlon Goulart

Vc deve estar usando os componentes de acesso direto ao IB q vem com o Delphi (pacote IBX).
Realmente se nao forem configurados adequadamente, eles apresentam este problema.

Mas é uma pequena configuração q ta faltando...
Tente ai...

Coloque um IBQuery e para cada IBQuery q desejar editar os dados coloque tb um IBTransaction e clique 2 vezes no IBTransaction e sete os parametros para Read Commited, isso ira fazer com q os registros sejam visiveis nas outras estacoes sem q seja necessario fechar o seu DataBase q a IBQuery esta ligada.

Um Abraço
Werlon Goulart


Responder

Gostei + 0

23/07/2003

Midas

Sr. Goulart Tenho já um ibtransactio no datamodule e esta marcado como dito em read commit ... e sempre que dou um commit ele fechar minhas tabelas...
haveria uma maneira de gravar os dados ao final das transacoes sem que ele feche minhas tabelas ?


Responder

Gostei + 0

23/07/2003

Fer

;)
http://www.forumweb.com.br/index.php?showtopic=2659


Responder

Gostei + 0

23/07/2003

Fava

Cara, o seu nome (Midas) é parte da solução, não deixe de ler este artigo e esclarecer todas suas dúvidas sobre o funcionamento de atualizações no Interbase.

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=156


Responder

Gostei + 0

23/07/2003

Midas

fava este link é magnífico e acho que o clube delphi e outros foruns deveriam adotá-lo como um execelente link para principiantes com tecnologia ibx... Todas as dúvidas que tinha a respeito foram detonadas...heheheh muito obrigado ..... te mais ....


Responder

Gostei + 0

24/07/2003

Werlon Goulart

Para controlar corretamente a atualizacao de registros usando o IBX do Delphi :

Vc ira precisar de :
1 IBDataBase
1 IBQuery
1 IBUpdateSQL
1 IBTransaction
1 DataSource
1 DBNavigator

1-Configure o IBDatabase para acessar seu Banco de Dados;
2-Configure no IBQuery a propriedade ´Database´ com o nome do
IBDatabase q vc colocou;
3-Coloque no IBQuery a propriedade ´Transaction´ com o nome do
IBTransaction q vc colocou;
4-Coloque no IBQuery a propriedade ´UpdateObject´ com o nome do
IBUpdateSQL q vc colocou;
5-De dois cliques no IBUpdateSQL e escolha a tabela q vc ira usar neste
IBQuery, depois clique em ´Get Table Fieds´ depois em ´Dataset
Defaults´, e depois em ´Select Primary Keys´ e por ultimo
em ´Generate SQL´, e feche com o OK;
6-NO IBTransaction na propriedade ´DefaultAction´
coloque ´TACommitRetaining´ para vc poder gravar e continuar a
vendo seus dados na tela, e na propriedade ´DefaultDatabase´
coloque o nome do IBDataBase q vc colocou no Form;
7-Clique duas vezes no IBTransaction e escolha ´Read Commited´;
8-No DataSource na propriedade ´DataSet´ coloque o nome do IBQuery q
vc adicionou no Form;
9-No DBNavigator e na propriedade ´DataSource´ coloque o nome do
IBQuery;
10-No evento ´AfterPost´ do IBQuery coloque :
IBTransaction1.CommitRetaining;

Pronto agora é so testar abrindo DUAS VEZES o programa e alterando em um deles os dados e gravando, depois usando o botao ´Refresh´ na outro programa pra ver se no registro irao aparecer os dados alterados.

Um Abraco
Werlon Goulart


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar