SISTEMA EM REDE VB6
Cara, a citada acima é de MySQL, não foi oque voce disse?, agora acho que voce ta tendo problemas atoa, o access não, é tão complicado, ele é limitado, mas não complicado...
Eu tenho um sistema de administração escolar compartilhado em rede, atualmente uso somente o banco (ACCESS) em pasta compartilhada. O executável copio para a máquina que irá utilizar o programa. O sistema funciona assim:
Copio o executável para o terminal.
Ao abrir o programa, localizo o banco de dados e gravo um arquivo INI.
São 6 computadores interligados.
Abro a conexão ao iniciar o sistema e fecho na saÃda. Nas consultas abro e fecho os recordset.
Não tenho problemas com permissão ou coisa parecida.
Você já compilou seu projeto ?
Copio o executável para o terminal.
Ao abrir o programa, localizo o banco de dados e gravo um arquivo INI.
São 6 computadores interligados.
Abro a conexão ao iniciar o sistema e fecho na saÃda. Nas consultas abro e fecho os recordset.
Não tenho problemas com permissão ou coisa parecida.
Você já compilou seu projeto ?
Eu particularmente acho o Access mais fácil de se usar, mas como eu disse, ele é bem limitado, mas tirando isso, eu acho mais fácil do que o MySQL, mas de toda maneira o MySQL mudou minha vida.. hehehe..
Cristian eu uso o VB6 com Access desde 95. Tenho um sistema grande que em vários clientes que implantam de formas diferentes, mas sem problemas:
- Tudo em Terminal Server
- Parte Terminal Server e parte nas Estações de Trabalho com EXE no servidor
- Tudo nas Estações de Trabalho e EXE no Servidor
- e até os que querem até o EXE nas estações (baita trabalho de atualização), mas...
Tenho clientes com até 100 usuário, sendo alguns com 5 unidades em cidades diferentes interligado pelo TS. Um deles é uma central de atendimento médico, com vários atendentes que ficam o dia inteiro acessando o sistema. Funciona perfeitamente, sendo que o banco (Access) no caso é super otimizado, quase tudo é Ãndice, tem tabelas com até 5 campos de Ãndice. Porém com acessos diários e simultâneos, sem nenhum problema.
Algumas considerações são importantes:
- Banco deve ser compartilhado e a pasta no servidor ter as permissões de acesso a cada usuário da rede.
- A conexão não pode ser exclusiva, veja isso na web que tem exemplo. Ao abrir uma conexão exclusiva, exemplo quando se trabalha com o editor do próprio acess, nennhum outro usuário consegue acessar o banco.
- A conexão ADO também deve ter os atributos corretos, como citou um outro colega. Se você bloquear a página de registros, outros não conseguirão acesso, etc... Veja informações sobre restrições do ADO.
- Por último tem que ver como seu código está feito, pois se não houver identificação de acesso [Ô]simultâneo[Ô] ao mesmo registro, dará erro mesmo. Veja que acesso simultâneo = ao mesmo tempo em informática é algo muito difÃcil, mas ocorre e com boa frequência, em função do tipo de programa e dados usados. Assim 2 usuários não conseguirão (No Access Claro) acessar o mesmo registro ao mesmo tempo para edição ou exclusão,etc... já no MySQL ou SQL Server, isso será gerenciado pelo Banco e não por sua aplicação que usa Access.
Não sei se ficou claro, o que quiz dizer é que quando houver uma cesso simultâneo no banco, haverá um erro no seu programa, ele deve identificar o código e fazer um tratamento, que pode ser:
- Repetir a operação, assim dando tempo da primeira ser realizada
- Avisar o usuário que o mesmo registro está sendo alterado e deve aguardar, inclusive com opção de exibir as alterações que foram feitas por último a fim de decidir se continua ou não
- etc...
Nestes 17 anos do meu sistema, apenas por duas vezes houve corrupção do banco Access em clientes diferentes. Em um houve perda total após cair um raio na empresa, com queima de computadores etc.. Tiveram de usar um Backup antigo (não faziam regularmente) e tendo de refazer boa parte do trabalho. Na última, a uma semana por coincidência, foi possÃvel recuperar o banco sem perder nenhum dado. Por este motivo estou migrando para Net com SQL Server. Uso o MySQL no meu site, bem pouco só dados de controle dos clientes. Ambos MySQL e SQL Server Express são muito fáceis de trabalhar, quase 95% igual ao Access no que diz respeito as strings SQL de acesso. Só cuidado com datas e alguns compos de tipos diferentes. A única diferença considerável é quando a distribuição do aplicativo e gerenciamento de acessos (Usuários) do banco, que é totalmente diferente do Access, já que neste não existe. Os bancos devem ser instalados no cliente (gerenciadores), outra diferença do access, além que é fortemente recomendado um servidor de dados e uma pessoa que conheça o banco para administrá-lo no cliente, do contrário você será acionado sempre para resolver os problemas lá.
Eu particulamente não uso o recordset para gravar dados, só para consulta. Após manipular os dados nos campos, passo tudo via Insert ou update em SQL mesmo pelo command do ADO. Prefiro ter controle total sobre o que está acontecendo na aplicação, inclusive nunca uso objetos acoplados, faço todos os preenchimentos via código.
Boa sorte.
- Tudo em Terminal Server
- Parte Terminal Server e parte nas Estações de Trabalho com EXE no servidor
- Tudo nas Estações de Trabalho e EXE no Servidor
- e até os que querem até o EXE nas estações (baita trabalho de atualização), mas...
Tenho clientes com até 100 usuário, sendo alguns com 5 unidades em cidades diferentes interligado pelo TS. Um deles é uma central de atendimento médico, com vários atendentes que ficam o dia inteiro acessando o sistema. Funciona perfeitamente, sendo que o banco (Access) no caso é super otimizado, quase tudo é Ãndice, tem tabelas com até 5 campos de Ãndice. Porém com acessos diários e simultâneos, sem nenhum problema.
Algumas considerações são importantes:
- Banco deve ser compartilhado e a pasta no servidor ter as permissões de acesso a cada usuário da rede.
- A conexão não pode ser exclusiva, veja isso na web que tem exemplo. Ao abrir uma conexão exclusiva, exemplo quando se trabalha com o editor do próprio acess, nennhum outro usuário consegue acessar o banco.
- A conexão ADO também deve ter os atributos corretos, como citou um outro colega. Se você bloquear a página de registros, outros não conseguirão acesso, etc... Veja informações sobre restrições do ADO.
- Por último tem que ver como seu código está feito, pois se não houver identificação de acesso [Ô]simultâneo[Ô] ao mesmo registro, dará erro mesmo. Veja que acesso simultâneo = ao mesmo tempo em informática é algo muito difÃcil, mas ocorre e com boa frequência, em função do tipo de programa e dados usados. Assim 2 usuários não conseguirão (No Access Claro) acessar o mesmo registro ao mesmo tempo para edição ou exclusão,etc... já no MySQL ou SQL Server, isso será gerenciado pelo Banco e não por sua aplicação que usa Access.
Não sei se ficou claro, o que quiz dizer é que quando houver uma cesso simultâneo no banco, haverá um erro no seu programa, ele deve identificar o código e fazer um tratamento, que pode ser:
- Repetir a operação, assim dando tempo da primeira ser realizada
- Avisar o usuário que o mesmo registro está sendo alterado e deve aguardar, inclusive com opção de exibir as alterações que foram feitas por último a fim de decidir se continua ou não
- etc...
Nestes 17 anos do meu sistema, apenas por duas vezes houve corrupção do banco Access em clientes diferentes. Em um houve perda total após cair um raio na empresa, com queima de computadores etc.. Tiveram de usar um Backup antigo (não faziam regularmente) e tendo de refazer boa parte do trabalho. Na última, a uma semana por coincidência, foi possÃvel recuperar o banco sem perder nenhum dado. Por este motivo estou migrando para Net com SQL Server. Uso o MySQL no meu site, bem pouco só dados de controle dos clientes. Ambos MySQL e SQL Server Express são muito fáceis de trabalhar, quase 95% igual ao Access no que diz respeito as strings SQL de acesso. Só cuidado com datas e alguns compos de tipos diferentes. A única diferença considerável é quando a distribuição do aplicativo e gerenciamento de acessos (Usuários) do banco, que é totalmente diferente do Access, já que neste não existe. Os bancos devem ser instalados no cliente (gerenciadores), outra diferença do access, além que é fortemente recomendado um servidor de dados e uma pessoa que conheça o banco para administrá-lo no cliente, do contrário você será acionado sempre para resolver os problemas lá.
Eu particulamente não uso o recordset para gravar dados, só para consulta. Após manipular os dados nos campos, passo tudo via Insert ou update em SQL mesmo pelo command do ADO. Prefiro ter controle total sobre o que está acontecendo na aplicação, inclusive nunca uso objetos acoplados, faço todos os preenchimentos via código.
Boa sorte.
Tópico encerrado , respostas não são mais permitidas