Velocidade com Interbase
Olá amigos programadores.
Eu desenvolvi um sistema de PDV, que gerencia várias vendas simultâneas. O aplicativo fica instalado em terminais e quando um usuário inicia um venda em um deles, um indicador deve acusar isso nos demais.
Eu utilizo o Interbase 6 como base de dados, e a forma que descobri para atualizar os dados nos terminais em tempo real, ou seja, quando alterações forem feitas, foi fechar e abrir a transação responsável pelo controle dos dados. Eis o meu problema: sempre que a transação fecha, as tabelas fecham junto. E com isso, toda vez que preciso acessar uma delas com muitos dados, o processo é muito lento. Por exemplo, o usuário quer inserir um produto na venda, mas a tabela do estoque foi fechada, então a busca pelo item demora vários segundos, o que não ocorreria se a tabela ficasse aberta durante toda a execução do programa, pois bastaria eu ´dar´ um ´Last´ no DataSet para que os dados fossem carregados para a memória do terminal. Mas como a tabela fecha a cada 5 segundos...
Eu pensei em colocar um objeto exclusivo para o IBDataSet do estoque, mas para isso seria necessário alterar vários trechos do código ao longo do fonte do programa.
Por isso recorri a este fórum, que já me ajudou muito em várias ocasiões.
Se alguém souber de uma alternativa para acelerar a pesquisa, ou qualquer outra sugestão, eu ficaria muito grato.
Agradeço qualquer ajuda, amigos!
Abraços,
Michael :-)
Eu desenvolvi um sistema de PDV, que gerencia várias vendas simultâneas. O aplicativo fica instalado em terminais e quando um usuário inicia um venda em um deles, um indicador deve acusar isso nos demais.
Eu utilizo o Interbase 6 como base de dados, e a forma que descobri para atualizar os dados nos terminais em tempo real, ou seja, quando alterações forem feitas, foi fechar e abrir a transação responsável pelo controle dos dados. Eis o meu problema: sempre que a transação fecha, as tabelas fecham junto. E com isso, toda vez que preciso acessar uma delas com muitos dados, o processo é muito lento. Por exemplo, o usuário quer inserir um produto na venda, mas a tabela do estoque foi fechada, então a busca pelo item demora vários segundos, o que não ocorreria se a tabela ficasse aberta durante toda a execução do programa, pois bastaria eu ´dar´ um ´Last´ no DataSet para que os dados fossem carregados para a memória do terminal. Mas como a tabela fecha a cada 5 segundos...
Eu pensei em colocar um objeto exclusivo para o IBDataSet do estoque, mas para isso seria necessário alterar vários trechos do código ao longo do fonte do programa.
Por isso recorri a este fórum, que já me ajudou muito em várias ocasiões.
Se alguém souber de uma alternativa para acelerar a pesquisa, ou qualquer outra sugestão, eu ficaria muito grato.
Agradeço qualquer ajuda, amigos!
Abraços,
Michael :-)
Michael
Curtidas 0
Respostas
Gasper
17/03/2004
Cara, não entendi direito o seu problema, mas se vc estiver usando os componentes da paleta do Interbase, existe dois comandos para finalizar uma transação.
Commit -> Fechas todas as transações, e todas as tabelas...
CommitRetaining -> Fecha a transação atual, e não fecha as tabelas...
8)
Commit -> Fechas todas as transações, e todas as tabelas...
CommitRetaining -> Fecha a transação atual, e não fecha as tabelas...
8)
GOSTEI 0