IBX, como fechar todas as tabelas e transações ao mesmo temp

Firebird

19/09/2005

Boa noite o titlo já diz tudo,como fechar todas as tabelas e transações ao mesmo tempo....

Uso IBX...

Grato

[color=green:8e55c82dbf]Movido de Delphi para Interbase/Firebird[/color:8e55c82dbf]


Marcos Fernando

Marcos Fernando

Curtidas 0

Respostas

Wilson Brito

Wilson Brito

19/09/2005

Desconecte a Database.

Ex:

IBDatabase1.Connected := False;



GOSTEI 0
Martins

Martins

19/09/2005

Desconecte a Database. Ex:
IBDatabase1.Connected := False;


Pode ser, mas lembre-se sempre de só abrir as tabelas quando for utilizá-las, e após utilizar fechá-las, não tem necessidade de deixar tabelas q não serão utilizadas por determinado procedimento abertas, já imaginou 20 tabelas em um DataModule, todas marcadas com o [b:61515e35d7]Active = True[/b:61515e35d7] ainda em tempo de projeto, o programa vai ser carregado com todas as tabelas abertas, não é uma boa prática, além de aumentar consideravelmente o índice de corrupções de sua base. Vai utilizar um procedimento de vendas, vai precisar da TbProdutos, TbClientes, abra apenas quando for chamar o procedimento, logo em seguida torne a fechar as tabelas.

Bom desenvolvimento!!!


GOSTEI 0
Marcos Fernando

Marcos Fernando

19/09/2005

Como o nosso amigo [b:0bdcff37c6]wilsondrb[/b:0bdcff37c6] declarou eu uso, sempre abro e fecho as tabelas de acordo com a necessidade, nunca deixo nanda aberto quando não utilizo..

por isso que procuro uma maneira facil de fechar todas as tabelas e transações,

Nosso amigo [b:0bdcff37c6]Martins [/b:0bdcff37c6]declarou pra mim fechar a database toda ves, pode ser mais ai não vai demorar mais porque toda ves terei que fazer a conexão com a base novamente???

alguém faz diferente?


GOSTEI 0
Paulo

Paulo

19/09/2005

var i:integer; begin with DataModule2 do begin for i:= 0 to ComponentCount-1 do begin if (Components[i]).ClassName = ´TIBQuery´ then TIBQuery(Components[i]).Active:=False; end; end; end;


Só não se esqueça de adicionar a unit IBQuery ou qquer outra referente a classe dos componentes referenciado em cada formulário onde terá a rotina acima.


GOSTEI 0
Gigatel

Gigatel

19/09/2005

Eu faço assim ( apesar de ser duramente criticado pelo método.. ) tenho um tada módule onde fica o IBDatabase e IBTransaction somente isto.. ligo as tabelas as elas em seu próprio form..ou seja Cadastro de clientes...lá só tem a tabela clientes e mais alguma que nescessitar..quando inicializo o form ele ativa as tabelas e quando sai desliga..ou seja o banco de dados só estará funcionando quando for requisitado..no prescesso de insert ou exclusão dou Commit no IBTransaction e pronto...tudo funcionando as mil maravilhas...t+ e valew,,


GOSTEI 0
Marcos Fernando

Marcos Fernando

19/09/2005

Grato amigos usei a dica do PAULO:
fiz assim:

var
i:integer;
begin
with dmdados do begin
// fecha TTIBQuery
for i:= 0 to ComponentCount-1 do begin
if (Components[i]).ClassName = ´TIBQuery´ then
TIBQuery(Components[i]).Active:=False;
end; //fim TIBQuery

// fecha TIBDataSet
for i:= 0 to ComponentCount-1 do begin
if (Components[i]).ClassName = ´TIBDataSet´ then
TIBDataSet(Components[i]).Active:=False;
end; //fim TIBDataSet

// fecha TIBTransaction
for i:= 0 to ComponentCount-1 do begin
if (Components[i]).ClassName = ´TIBTransaction´ then
TIBTransaction(Components[i]).Active:=False;
end; //TIBTransaction

end;
end;


Se alguém tiver alguma recomendação as ordens

Thanks


GOSTEI 0
Afarias

Afarias

19/09/2005

with IBDatabase do
  for i := 0 to Pred(TransactionCount) do
    if Transactions[i].InTransaction then
      Transactions[i].Commit;



T+


GOSTEI 0
Afarias

Afarias

19/09/2005

outra forma é usar:

[b:a375241161]IBDatabase.CloseDataSets;[/b:a375241161]

mas as transações só serão fechadas se estiverem configuradas com a propriedade [b:a375241161]AutoStopAction[/b:a375241161] diferente de [b:a375241161]saNone[/b:a375241161]


T+


GOSTEI 0
POSTAR