Jump to content

Embarcadero Conference 2019

22/10 - Visite o Stand do ACBr
Saiba mais

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

RibaSoft

ANSWERED Manter a conexão fechada Firebird

Recommended Posts

Olá a todos!

Gostaria de saber qual a melhor forma para se proceder...

Uso => Lazarus, Firebid 2.5, TIbConnection, TSQLQuery, TSQLTransaction, TDataSource, TDBGrid

Sempre que fecho um Form, depois de executar um commit (Transaction.Commit), ou antes de carregar um DBgrid (Query.Open), eu executo o "Connection.Close(True)" para fechar a conexão fazendo com que eu possa ter sempre os dados que estão no banco e não na memoria.

Essa seria a forma mais correta? Ou existe uma forma melhor?

Desde já agradeço a atenção de todos

Share this post


Link to post
Share on other sites
2 horas atrás, RibaSoft disse:

Gostaria de saber qual a melhor forma para se proceder...

Uso => Lazarus, Firebid 2.5, TIbConnection, TSQLQuery, TSQLTransaction, TDataSource, TDBGrid

Sempre que fecho um Form, depois de executar um commit (Transaction.Commit), ou antes de carregar um DBgrid (Query.Open), eu executo o "Connection.Close(True)" para fechar a conexão fazendo com que eu possa ter sempre os dados que estão no banco e não na memoria.

Essa seria a forma mais correta? Ou existe uma forma melhor?

Olá,

  Eu não tenho trabalhado com esses componentes do Lazarus, mas acredito que não seja necessário você executar um Connection.Close depois de executar o Commit.

  Pelo menos em teoria, o Commit deveria fechar a transação e qualquer comunicação com o BD. Assim, apenas isso deveria bastar.

  Da mesma maneira não deveria ser necessário você executar o close antes de carregar um DBgrid.

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Então...

Aparente ele não fecha pois quando dou um commit, ele mostra os dados conforme o terminal que estou usando, se houve alteração por outro terminal ele não mostra, a não ser que eu feche e abra novamente a aplicação. mas fazendo esse Connection.Close(True), ai sim ele busca as informações novamente no banco de dados, e se algum outro terminal fez alguma modificação dai consigo vê-las.

Obrigado pela atenção 🙏

 

Share this post


Link to post
Share on other sites
14 horas atrás, RibaSoft disse:

Então...

Aparente ele não fecha pois quando dou um commit, ele mostra os dados conforme o terminal que estou usando, se houve alteração por outro terminal ele não mostra, a não ser que eu feche e abra novamente a aplicação. mas fazendo esse Connection.Close(True), ai sim ele busca as informações novamente no banco de dados, e se algum outro terminal fez alguma modificação dai consigo vê-las.

Obrigado pela atenção 🙏

 

Será que não está usando o CommitRetaining? Isso poderia explicar manter a conexão.

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Mas uma vez muito obrigado, vou pesquisar a respeito e posto aq o resultado.

DEUS abençoe 🙏

  • Like 1

Share this post


Link to post
Share on other sites

Aparentemente, eu falei besteira, mas continuo precisando de ajuda.

Quando acesso os dados com o ibexpert e mantenho a tabela aberta, não consigo acessar do meu sistema, provavelmente porque o ibexpert de segurar a conexão aberta, já no meu sistema se a tabela esta aberta (DBGrid Carregado), eu consigo acessar pelo ibexpert pois os dados então em memoria do meu sistema, ou seja meu sistema não segura a conexão.

O que eu estou precisando é que a cada consulta que eu faça no meu sistema ele busque as informações no banco de dados e não as que estão na memoria, e é isso que eu resolvi fechando a conexão antes de cada select com o IBConnection.Close(True); Pois preciso das informações atuais caso outro terminal faça alguma alteração.

E é isso que eu queria saber, qual a melhor maneira de fazer.

Pode ser que seja uma pergunta besta, mas pesquisando a respeito vi muita gente com a mesma dúvida e não consegui achar outra solução.

Edited by RibaSoft

Share this post


Link to post
Share on other sites
Em 03/10/2019 at 23:17, RibaSoft disse:

Quando acesso os dados com o ibexpert e mantenho a tabela aberta, não consigo acessar do meu sistema, provavelmente porque o ibexpert de segurar a conexão aberta, já no meu sistema se a tabela esta aberta (DBGrid Carregado), eu consigo acessar pelo ibexpert pois os dados então em memoria do meu sistema, ou seja meu sistema não segura a conexão.

Isso pode ser o formato da conexão. Não tenho certeza que seja como você diz que os dados estão em memória.

Em 03/10/2019 at 23:17, RibaSoft disse:

O que eu estou precisando é que a cada consulta que eu faça no meu sistema ele busque as informações no banco de dados e não as que estão na memoria, e é isso que eu resolvi fechando a conexão antes de cada select com o IBConnection.Close(True); Pois preciso das informações atuais caso outro terminal faça alguma alteração.

Isso está relacionado ao controle de transações. Eu particularmente não tenho muita experiência com esse componente IBConnection. Mas se o jeito de fechar uma transação é usar o Close, então é isso que você precisa fazer.

Mas o ideal é fechar a transação assim que ela deixar de de ser útil e não antes do próximo Select.

Pra ser mais preciso, eu necessito de um programa que exemplifique o seu problema para analisar aqui na minha máquina.

  • Like 2
  • Thanks 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Olá EMBarbosa, como sempre vc me ajudando muito, sem querer vc já me deu uma boa dica de quando usar o Close, vou montar um app e disponibiliza-lo pra vc dar uma olhada, assim que pronto já coloco aq, muiiiiiito obrigado pela atenção.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...