Edmar Santos
não registrado
|
|
Postada em 13/05/2009 15:29 hs
Amigos, Não estou conseguindo desenvolver uma aplicação para rodar em rede (servidor / cliente). O que acontece: Estou utilizando DAO, e na aplicação que roda na estação cliente apresentou-se dois erros: [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data. Dai, usei o código abaixo: Dim Arquivo, Conn, RS Const ReadOnly = False Arquivo = "\serversharearquivo.mdb" Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(Arquivo,,ReadOnly) Set RS = Conn.OpenRecordset(SQL)
Mas mesmo assim, apresentou-se um erro informando que o controle ActiveX não pode criar o objeto solicitado. Já tentei o código abaixo, mas nada deu resultado. Set Conn = DBEngine(0).OpenDatabase(Arquivo,,ReadOnly)
O que está errado?
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 13/05/2009 19:50 hs
Primeiro colega vá em Project / References e selecione Microsoft DAO 3.6 object Library
depois tente abrir desta forma
Dim DB As Database Caminho = "\\PC da Rede\SeuBD.MDB" Set DB = Workspaces(0).OpenDatabase(Caminho)
as duas barras invertidas indicam que o banco está na rede, depois vem o nome do pc, a pasta onde está o banco de dados, e o banco entendeu.
|
TÓPICO EDITADO
|
|
|
|
Álvaro
|
GUARULHOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/05/2009 09:20 hs
Edmar conseguiu resolver esse problema? Senão apenas completando o que o nosso amigo treze falou: No General vc cria Public DB As Database Public Caminho As Recordset
No Form Load Set DB = OpenDatabase("pc da redeseubanco.mdb") Set Caminho = DB.OpenRecordset("suatabela", dbOpenTable)
Abraço e que DEUS te abençõe, espero poder ter te ajudado  Eu sou o Senhor, o DEUS de vocês; eu os seguro pela mão e lhes digo; Não fiquem com medo, pois eu os ajudo Isaias 41:13
|
|
|
Edmar Santos
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 16/05/2009 16:21 hs
Caros,
Eu faço o seguinte: tenho um arquivo .ini que o sistema lê no inicio com o caminho do banco de dados na rede. Mas ainda acontece o erro acima. Não sei como resolver...
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 16/05/2009 17:58 hs
vale lembrar que a rede tem de estar montada
veja como faço a conexão utilizando um arquivo ini
primeiro em um módulo tenho a seguinte função para ler e escrever em um arquivo ini
Global DB As Database ' Global REG As Recordset ' ' funções para escrever e ler arquivos ini ' Declare Function WritePrivateProfileString Lib "kernel32" Alias _ "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName _ As String) As Long ' Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _ As String, ByVal nSize As Long, ByVal lpFileName As String) As Long ' Public Ret As String ' ' sub função para gravar um arquivo ini ' Public Sub WriteINI(FileName As String, Section As String, Key As String, Text As String) WritePrivateProfileString Section, Key, Text, FileName End Sub ' ' Função para ler um arquivo ini ' Public Function ReadINI(FileName As String, Section As String, Key As String) Ret = Space$(255) retLen = GetPrivateProfileString(Section, Key, "", Ret, Len(Ret), FileName) Ret = Left$(Ret, retLen) ReadINI = Ret End Function
e para abrir
Dim Caminho As String Caminho = ReadINI("c:\configp3.ini", "programa", "caminho") Set DB = Workspaces(0).OpenDatabase(Caminho) Set REG = DB.OpenRecordset("tbarquivo", dbOpenDynaset)
veja como deve estar no arquivo ini
[programa] caminho=\\pc da rede\pasta\bancodedados.mdb
|
TÓPICO EDITADO
|
|
|
|
Edmar Santos
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 25/05/2009 12:23 hs
Galera,
Ainda continuo com o mesmo problema. O caminho do banco de dados está com as duas barras invertidas, tudo conforme acima, mas dá dois erros: que o Jet não pode acessar porque está em modo de leitura ([Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.) ou que o Active X não pode criar o objeto. O que ainda posso estar fazendo de errado? Outro detalhe: O servidor é windows Vista e o cliente é windows XP, tem alguma diferença? No setup estou configurando todas as dll's e ocx's para que o PC onde será instalado registre e etc....
|
|
|
|