VB6 - BANCO .MDB JA ESTA EM USO

LUISLPC 24/05/2012 14:22:32
#402682
Boa tarde amigos...

Estou utilizando um banco de dados .mdb, porem quando abro em 2 pcs ao mesmo tempo, usando o mesmo .mdb da erro dizendo que o arquivo ja esta em uso. tem alguma rotina ou alteracao para permitir usar o banco em 2 pcs ao mesmo tempo? da erro e aponta para a linha abaixo:

con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;[Ô] & _
[Ô]Data Source=[Ô] & caminho



andei pesquisando mas ate agora nao achei nada a respeito, vou continuar tentando...

mas se alguem tiver alguma ideia agradeco..

obrigado
CASTELO 24/05/2012 14:49:49
#402686
LUIS

Utilizo um módulo onde parametrizei a conexão da seguinte maneira.

Set conexao = New ADODB.Connection
With conexao
.Provider = [Ô]Microsoft.Jet.OLEDB.4.0[Ô]
.ConnectionString = [Ô]Data Source=[Ô] & bancodedados & [Ô];Jet OLEDB;[Ô]
.Open
End With

Utilizo o banco de dados em rede, onde carrego de um arquivo INI o endereço do banco [Ô]\\servidor\pasta\banco.mdb[Ô].

Nunca tive problemas deste tipo.

LUISLPC 24/05/2012 15:42:00
#402688
opa

pois eh, estranho, agora poco deu q nao foi possivel usar porque o arquivo ja esta em uso.

abaixo o codigo q faz a conexao:

  Dim caminho As String
[ô]verifica se já há uma instância do programa sendo executado
If App.PrevInstance = True Then
Dim Form As Form
For Each Form In Forms
Unload Form
Set Form = Nothing
Next Form
End
End If

[ô]define caminho para base de dados, help e imagens
caminho = ReadINI([Ô]Geral[Ô], [Ô]Caminho[Ô], App.Path & [Ô]\Config.ini[Ô])


Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;[Ô] & _
[Ô]Data Source=[Ô] & caminho

[ô]Objeto de acesso à tabela Products
Dim rs1 As ADODB.Recordset
Set rs1 = New ADODB.Recordset
rs1.Open [Ô]SELECT * [Ô] & _


mais abaixo essa conexao eh fechada, algumas rotinas no sistema abrem e fecham, mas utilizam os mesmos parametros.
PAULOOLIVEIRA 24/05/2012 16:02:51
#402689
Companheiro, seu erro é o run time error 3051 ?

Caso sim, veja o seguinte...

Se for windows vista/seven, verifique usuarios..

outra possibilidade é no regedit..

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5, ou 4.0, e aumente a chave MaxLocksPerFile , para 15000 por exemplo..

deve resolver
LUISLPC 24/05/2012 16:15:30
#402691
opa

amigo, to testando no windows xp, essas chaves no registro estao com o valor [Ô]251c[Ô] sao do tipo REG_DWORD...

altera-las para 1500?

alterei mas nao resolveu, acho que tem q alterar de outra forma certo?
CASTELO 24/05/2012 16:19:46
#402692
Luis

Como estão as questões de acesso a pasta compartilhada?

LUISLPC 24/05/2012 16:26:37
#402693
acesso completo, sem senha, nem restricao...

mto estranho, andei pesquisando e vi q tem algo sobre definir o .mdb como compartilhado, mas nao encontrei isso no acess 2007...

CASTELO 24/05/2012 16:39:14
#402696
Posso estar sendo ingênuo, mas qts usuários se conectam ao mesmo tempo ao recurso na rede?
você disse que tá usando XP, então... http://support.microsoft.com/kb/314882/pt-br

mesmo assim vou continuar buscando na net.

QUanto ao [Ô]definir o .mdb[Ô] tenta editar as propriedades diretamente do arquivo MDB (propriedades - compartilhamento)
LUISLPC 24/05/2012 16:40:50
#402698
na verdade estou so com o servidor e mais um pc.


achei a opcao de modo compartilhado, e ja esta marcada....nao mencionei acima, mas tenho uma rotina em vb que fica consultando o banco de dados de tempo em tempo....com um timer, entao creio que essas consulta caiam no mesmo tempo em certos momentos, mas nao sei se eh isso que esta implicando.
CASTELO 24/05/2012 16:46:26
#402699
Luis...

Qual a forma de conexão dessa rotina ?
LUISLPC 24/05/2012 16:48:00
#402700
para deixar mais explicado, abaixo esta o codigo do timer que faz a consulta no banco... nao entendo muito, mas acho que o problema eh o excesso de consultas no banco, pois tenho 8 timers executando essa consulta a cada segundo, mudando apenas o campo equip.text
e carregando o retorno em outros textbox.

  Private Sub Timer10_Timer()
Dim caminho As String
[ô]verifica se já há uma instância do programa sendo executado
If App.PrevInstance = True Then
Dim Form As Form
For Each Form In Forms
Unload Form
Set Form = Nothing
Next Form
End
End If

[ô]define caminho para base de dados, help e imagens
caminho = ReadINI([Ô]Geral[Ô], [Ô]Caminho[Ô], App.Path & [Ô]\Config.ini[Ô])


Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;[Ô] & _
[Ô]Data Source=[Ô] & caminho

[ô]Objeto de acesso à tabela Products
Dim rs1 As ADODB.Recordset
Set rs1 = New ADODB.Recordset
rs1.Open [Ô]SELECT * [Ô] & _
[Ô]FROM alarme1 [Ô] & _
[Ô]WHERE equipamento = [ô][Ô] & equip5.Text & [Ô] [ô] and data = [ô][Ô] & dataatual.Text & [Ô][ô] and hora = [ô][Ô] & principal.horaatual.Caption & [Ô][ô][Ô] & _
[Ô]ORDER BY Código;[Ô], con, adOpenKeyset, adLockReadOnly
[ô]Rotina para alimentar o ComboBox
Do While Not rs1.EOF
statusacao5.Text = rs1.Fields([Ô]acao[Ô])
Timer9.Enabled = True
[ô] Combo1.ItemData(Combo1.NewIndex) = rs1.Fields([Ô]codigo[Ô])
rs1.MoveNext
Loop
con.Execute [Ô]delete * from alarme1 where equipamento = [ô][Ô] & equip5.Text & [Ô] [ô] and data = [ô][Ô] & dataatual.Text & [Ô][ô] and hora = [ô][Ô] & principal.horaatual.Caption & [Ô][ô][Ô]
[ô]Fechar e descarregar os objetos de acesso da memória
rs1.Close
Set rs1 = Nothing
con.Close
Set con = Nothing

End Sub
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas