tenho sistema contabil compartilhado mais de 30 arquivos;
quando um usuario entra ativa todos os arquivos ficando aberto, e proximo usa tambem, so se fecha quando o sistema procura se na tem nenhum usuario no sistema, no arquivo de ARQ_REDE do sistema:
estaria certo este procedimento,
mesmo sem o usuario nao usar todos os arquivos,
mas tem que estar aberto porque e um sistema compartilhado entre varios
agradeco ajuda neste pensamentos
duvida de uso em arquivos abertos com shared
Moderador: Moderadores
Eu trabalho com dois métodos:
- Abrindo todos os arquivos necessários no inicio do sistema e só fechando-os na saída do sistema.
- Abrindo somente os necessários (globais) no inicio e cada módulo abre e fecha os que tiverem necessidades para ele (locais)
Ex. Controle de acesso é global, então é aberto durante toda a execução do sistema. Cadastro de fornecedor é local, então só é aberto nos módulos que vão utiliza-lo.
O primeiro é mais rápido para trabalhar com o sistema, pois os arquivos já estão abertos quando o sistema entra em um módulo. Mas é perigoso, pois todos os arquivos estão abertos e em uma rede instável, pode provocar muitos problemas nos arquivos.
A segunda é mais lenta, mas é mais segura. Os arquivos só estão abertos quando necessário. O sistema fica abrindo e fechando os arquivos conforme vc navega pelo sistema. Esse trabalho de abrir e fechar arquivo provoca lentidão na entrada dos módulos, mas vc garante que os dados foram gravados quando fechou os arquivos. Isso diminuiu muito o meu problema com corrupção de índices em determinados usuários.
Boa sorte. Espero ter ajudado.
- Abrindo todos os arquivos necessários no inicio do sistema e só fechando-os na saída do sistema.
- Abrindo somente os necessários (globais) no inicio e cada módulo abre e fecha os que tiverem necessidades para ele (locais)
Ex. Controle de acesso é global, então é aberto durante toda a execução do sistema. Cadastro de fornecedor é local, então só é aberto nos módulos que vão utiliza-lo.
O primeiro é mais rápido para trabalhar com o sistema, pois os arquivos já estão abertos quando o sistema entra em um módulo. Mas é perigoso, pois todos os arquivos estão abertos e em uma rede instável, pode provocar muitos problemas nos arquivos.
A segunda é mais lenta, mas é mais segura. Os arquivos só estão abertos quando necessário. O sistema fica abrindo e fechando os arquivos conforme vc navega pelo sistema. Esse trabalho de abrir e fechar arquivo provoca lentidão na entrada dos módulos, mas vc garante que os dados foram gravados quando fechou os arquivos. Isso diminuiu muito o meu problema com corrupção de índices em determinados usuários.
Boa sorte. Espero ter ajudado.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Dércio_Luiz_Zanatta
- Usuário Nível 3

- Mensagens: 153
- Registrado em: 11 Jan 2006 15:37
- Localização: Ibirubá - RS
resp
pois bem a dica e abrir na rotina1e usar banco1,banco2,banco3 fechar ao sair.. pois bem
e se outro usuario entrar na rotina2 e usar banco2 ao incluir estiver fechado pelo usuario 1, como fica esta questao
---- seria fericar que verificar na inclusao ou exclusao se esta aberto o banco2
e se outro usuario entrar na rotina2 e usar banco2 ao incluir estiver fechado pelo usuario 1, como fica esta questao
---- seria fericar que verificar na inclusao ou exclusao se esta aberto o banco2
Acho que temos um problema de comunicação.
Vamos procurar resolver a comunicação. Explique melhor como vc montou essa parte do sistema.
O sistema1 abre os arquivos para ele. O sistema2 abre os arquivos para ele mesmo (sistema2).
O fato do arquivo estar fechado pelo usuário1 quando o usuário2 for trabalhar nele não influencia nada.
Vamos procurar resolver a comunicação. Explique melhor como vc montou essa parte do sistema.
O sistema1 abre os arquivos para ele. O sistema2 abre os arquivos para ele mesmo (sistema2).
O fato do arquivo estar fechado pelo usuário1 quando o usuário2 for trabalhar nele não influencia nada.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
resp
e um sistema contabil compartilhado com varios dbf´s e varias rotinas.
a questao e uso de varios arquivos abertos, e temos varios usuarios.
pois bem foi dada a solucao de ao terminar uma rotina1 tenha que fechar os dbf´s usados nesta rotina.
ex; razao usa dbf = contas, balancet, custos
mas ao mesmo temo no usuario 2: na rotina diario usa-se os mesmos arquivos.
--- pois o usuario1 ao terminar a rotina 1 vai fechar os arquivos
mas o usuario2 ta la usando os arquivos
na hora de incluir,alterar, excluir : vai ter que estar aberto
=== na questao do uso de varios dbf´s abertos em sistema grande
pode causar danos ao auqui ou indice ou ma instabilidade de rede,
==== solucao seria o fechamento apos usalos, mas na questao de ter
varios usuarios usando este arquivos em rotinas separadas
como ficaria na inclusao teria que ser verificado toda hora se esta aberto o tal arquivo
==== ou se engano tal fechamento nao alteraria para os outros usuarios
?
:f
a questao e uso de varios arquivos abertos, e temos varios usuarios.
pois bem foi dada a solucao de ao terminar uma rotina1 tenha que fechar os dbf´s usados nesta rotina.
ex; razao usa dbf = contas, balancet, custos
mas ao mesmo temo no usuario 2: na rotina diario usa-se os mesmos arquivos.
--- pois o usuario1 ao terminar a rotina 1 vai fechar os arquivos
mas o usuario2 ta la usando os arquivos
na hora de incluir,alterar, excluir : vai ter que estar aberto
=== na questao do uso de varios dbf´s abertos em sistema grande
pode causar danos ao auqui ou indice ou ma instabilidade de rede,
==== solucao seria o fechamento apos usalos, mas na questao de ter
varios usuarios usando este arquivos em rotinas separadas
como ficaria na inclusao teria que ser verificado toda hora se esta aberto o tal arquivo
==== ou se engano tal fechamento nao alteraria para os outros usuarios
:f
Vamos ver se conversamos a mesma linguagem. (tenho dificuldade nisso)
Imagine um controle de vendas: produtos, clientes, mov estoque, fornecedores, contas à receber (e outros arquivos)
Na estação1, o usuario1 abre os arquivos para uma consulta em contas à receber. Serão abertos os arquivos de clientes e contas a receber.
Na estação2, o usuário2 abre os arquivos para verificar uma entrada de peças. Serão abertos os arquivos de produtos, mov estoque e fornecedores.
Na estação3, o usuário3 abre o arquivo para consultar um produto no estoque. Será aberto o arquivo de produtos.
Como os arquivos estão compartilhados, o fato do usuário2 e usuário3 estarem com o arquivo aberto ao mesmo tempo não os impedem de trabalharem. O usuário3 fechar o arquivo de produtos não significa nada para o usuário2, que continua trabalhando normalmente.
Assim como o usuário1 fechar os arquivos não afetará os outros usuários.
O que afeta um para os outros é o bloqueio de registro ou arquivo.
Se vc bloqueou um arquivo, outros usuários não poderão abri-lo.
Se vc bloqueou um registro, outros usuários poderão lê-lo, mas não alterar seu conteúdo.
Tvz seja esse o motivo da sua postagem.
Ah! Pelo menos é isso que estou entendendo que vc esta com dificuldade. Se estou errado, tente explicar algo que me permita entender. tks.
Imagine um controle de vendas: produtos, clientes, mov estoque, fornecedores, contas à receber (e outros arquivos)
Na estação1, o usuario1 abre os arquivos para uma consulta em contas à receber. Serão abertos os arquivos de clientes e contas a receber.
Na estação2, o usuário2 abre os arquivos para verificar uma entrada de peças. Serão abertos os arquivos de produtos, mov estoque e fornecedores.
Na estação3, o usuário3 abre o arquivo para consultar um produto no estoque. Será aberto o arquivo de produtos.
Como os arquivos estão compartilhados, o fato do usuário2 e usuário3 estarem com o arquivo aberto ao mesmo tempo não os impedem de trabalharem. O usuário3 fechar o arquivo de produtos não significa nada para o usuário2, que continua trabalhando normalmente.
Assim como o usuário1 fechar os arquivos não afetará os outros usuários.
O que afeta um para os outros é o bloqueio de registro ou arquivo.
Se vc bloqueou um arquivo, outros usuários não poderão abri-lo.
Se vc bloqueou um registro, outros usuários poderão lê-lo, mas não alterar seu conteúdo.
Tvz seja esse o motivo da sua postagem.
Ah! Pelo menos é isso que estou entendendo que vc esta com dificuldade. Se estou errado, tente explicar algo que me permita entender. tks.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
Resposta
É isso aí mesmo dos colegas de cima.
Ajuda bastante abrir e fechar os arquivos somente quando for lê-los, ou gravá-los, e sempre no início e no fim da abertura. Não precisa nem ser no início da função ou procedure.
O fato de um usuário fechar ou abrir um arquivo não influencia em nada. Isso só ocorre para cada um. Ex: Um usuário abriu um arq. contas.dbf. Minutos depois, eu também o abri em outro terminal. Ápós, ele o fecha. Mas, não influencia em nada para mim. Continuo com ele aberto no meu terminal. E se ele entrar de novo e eu fechar, também não atrapalha ele em nada.
Abrir os arquivos no início dos programas, entre outras coisas, faz o sistema ficar lento para os terminais. Eu percebi isso num sistema no meu trabalho e tratei de modificá-lo para abrir e fechar somente quando precisar ou não. Deu um trabalhão, mas valeu.
Em síntese, quando eu abro um arquivo, abro-o para mim, apenas. Quando eu fecho um arquivo, fecho-o para mim, apenas.
Ah! E o fato de estar compartilhado (shared) significa apenas que vários usuários podem acessá-lo ao mesmo tempo. Somente isso. O abrir e fechar será independente para cada usuário em cada terminal.
Espero que tenha contribuído.
Ajuda bastante abrir e fechar os arquivos somente quando for lê-los, ou gravá-los, e sempre no início e no fim da abertura. Não precisa nem ser no início da função ou procedure.
O fato de um usuário fechar ou abrir um arquivo não influencia em nada. Isso só ocorre para cada um. Ex: Um usuário abriu um arq. contas.dbf. Minutos depois, eu também o abri em outro terminal. Ápós, ele o fecha. Mas, não influencia em nada para mim. Continuo com ele aberto no meu terminal. E se ele entrar de novo e eu fechar, também não atrapalha ele em nada.
Abrir os arquivos no início dos programas, entre outras coisas, faz o sistema ficar lento para os terminais. Eu percebi isso num sistema no meu trabalho e tratei de modificá-lo para abrir e fechar somente quando precisar ou não. Deu um trabalhão, mas valeu.
Em síntese, quando eu abro um arquivo, abro-o para mim, apenas. Quando eu fecho um arquivo, fecho-o para mim, apenas.
Ah! E o fato de estar compartilhado (shared) significa apenas que vários usuários podem acessá-lo ao mesmo tempo. Somente isso. O abrir e fechar será independente para cada usuário em cada terminal.
Espero que tenha contribuído.
