CONEXAO COM ACCESS

MMMX 27/09/2011 09:35:43
#385330
Galera, banco de dados Access 2007 .accdb no servidor. Um segundo sistema fazendo conexão com o bd dá o seguinte erro: [Ô]Não foi possível usar. O arquivo já está em uso.[Ô] Como faço pra usar o Access com vários usuários simultaneos?
KERPLUNK 27/09/2011 10:02:33
#385336
Com conexões ADO, sem problemas. Mas se vc abrir o ACESS e deixar o arquivo com alguma tabela aberta, ou alguma outra operação exclusiva, vai dar esse erro.
MMMX 27/09/2011 10:12:00
#385341
Putz cara, até veergonha perguntar. Mas como defino sobre a operação exclusiva? Vc diz nos recordsets? Ou isso é definido na string de conexão? Pois o erro, quando o segundo usuário abre o programa em outra máquina, está dando já na string de conexão.
MARCELO.TREZE 27/09/2011 10:37:33
#385350
posta sua string de conexão para vermos
MMMX 27/09/2011 10:43:03
#385354
[Ô]Provider=Microsoft.ACE.OLEDB.12.0;data Source = K:\bdSistemaPA\bdPA.accdb;Jet OLEDB:Database Password=1234567[Ô]
MMMX 27/09/2011 10:47:02
#385356
Putz, MARCELO-TREZE, meu xará. Agora que vc falou eu percebi que tava faltando isso aqui [Ô]Persist Security Info=False[Ô]. Será a causa do problema?
KERPLUNK 27/09/2011 10:53:59
#385357
Não. [Ô]Persist Security Info=False[Ô], informa ao provedor(a conexão ADO) que a autenticação deve ser o usuário e senha que vc está informando na connectionstring. Se fosse [Ô]True[Ô], a conexão usaria como autenticação o seu usuário do windows.
MARCELO.TREZE 27/09/2011 12:08:33
#385369
posta toda string de conexão ou seja a função de conexão completa
MMMX 27/09/2011 13:39:50
#385380
Uai?? Fora isso

Set cnBasePa = New ADODB.Connection
cnBasePa.Open [Ô]Provider=Microsoft.ACE.OLEDB.12.0;data Source = K:\bdSistemaPA\bdPA.accdb;Persist Security Info=False;Jet OLEDB:Database Password=1234567[Ô]

Só os recorset mesmo. Mas já ta travando aí.
ROBIU 27/09/2011 14:53:08
#385391
Resposta escolhida
Você pode até conseguir, mas corre o risco de corromper o Banco.
Coloca isso antes de abrir a conexão para vê se resolve:
CnBasePa.Mode = adModeReadWrite


O Banco access não é indicado para ser usado em servidor. Para contornar sua limitação, deixe o banco sempre fechado. Abre a conexão, faz as operações (Listar, incluir, editar, etc) e fecha o banco. Isso resolve uns 80 % dos problemas. Para maior segurança, você pode criar um arquivo .txt ou uma chave no Registro do win que retorne o status do Banco (Fechado, Aberto). Então você faz a checagem em um timer, para aguardar o banco ser fechado para abri-lo.

Anexo um exemplo de como abrir o banco, pegar os dados e fechar o banco. Testa no servidor.
Tópico encerrado , respostas não são mais permitidas