VB - Conexão remota com Microsoft Access ???


Muitas pessoas perguntam se é possível realizar uma conexão remota com um banco de dados Microsoft Access.

A boa notícia é que é possível sim se conectar remotamente ao Microsoft Access.

A má notícia é que isso não é uma tarefa trivial.

Você precisa ter o IIS - Internet Information Service - em execução no servidor além de realizar algumas configurações definidas para a biblioteca ADO no servidor.

Para mais detalhes sobre a configuração do IIS verifique este link: http://support.microsoft.com/kb/253580

Mas vou ser sincero, não confie muito no MSAccess em uma conexão remota, principalmente via desktop. Ele não foi feito para isso.

Mesmo se você estiver usando o MSAccess no servidor em uma aplicação web, a migração para um banco de dados 'de verdade' como o SQL Server, MySQL, Oracle vai ser uma questão de tempo.

Portanto se você esta construindo qualquer projeto que envolva o MSAccess e se existe a previsão no projeto de que ele tende a crescer, não comece errado; fuja do MSAccess.

Você não precisa acreditar cegamente no que eu estou dizendo veja esses links: KB #154869, KB #299973, KB #299974, KB #222135 , KB #225048, KB #240317 que apontam limitações do MSAccess.

E para não ficar só nisso veja também os links com os problemas relacionados:

80040e07 - Data type mismatch in criteria expression. 
Article #2289, KB #136059, KB #175258, KB #184948, KB #208425, KB #210244, KB #246570 
 
80040e10 - Too few parameters. Expected <x>. 
Article #2128, KB #162980, KB #171850, KB #172898, KB #178070, KB #181209, KB #181832, KB #184233, KB #191619, KB #205972, KB #207586, KB #216425, KB #237994 
 
80040e14 / 80040e37 - The Microsoft Jet Database engine cannot find the table or query 'tablename'. Make sure it exists and that its name is spelled correctly.  
Article #2164, KB #184572 
 
80040e14 - Syntax error in <statement or clause>. 
Article #2086, KB #181489 
 
80040e4d - Too many client tasks. 
KB #154869 
 
80004005 - * 
Article #2009 
 
IIS 6.0 hangs when using Access: 
KB #838306 

A seguir um trecho de código que utiliza a tecnologia ADO para fazer uma conexão remota com um banco de dados MSAccess:

Option Explicit

Dim adoConn As ADODB.Connection
Dim adoRst As ADODB.Recordset

Private Sub Command1_Click()

Dim strConString As String
Dim strSQL As String

 
  'define a string de conexão
  
 strConString = "Provider=MS Remote;" & _
                        "Remote Server=http://192.168.1.1;" & _
                        "Remote Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=SeuBancoAccessRemoto;Persist Security Info=False"


 
  'inicializa a conexão
    Set adoConn = New ADODB.Connection
 
  'abre a conexão
    adoConn.Open strConString, "admin", ""
   
    strSQL = "Select * from Orders"
  
    'inicializa  variável recordset
    Set adoRst = New ADODB.Recordset
    With adoRst
        .Open strSQL, adoConn, , , adCmdText
        If Not .EOF Then
            Do While Not .EOF
        
       'le cada registro
                '...
                .MoveNext
            Loop
            .Close
        End If
    End With
   
  
 'destroi o objeto recordset se necessário
    Set adoRst = Nothing
  
 'destroi o connection recordset se necessário
    Set adoConn = Nothing
End Sub

O que importa no código acima é a string de conexão que segue o seguinte padrão:

"Provider=MS Remote; Remote Server=http://IP_do_servidor;Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Banco_Access.mdb"

Se o banco de dados estiver em uma rede compartilhada uma outra alternativa seria:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\nome_servidor\caminho\banco_dados_access.mdb"

Se você obter uma mensagem de erro ao tentar o código acima verifique problemas com permissões NTFS e Firewalls.

Se o erro obtido for:

Error Type: 
Microsoft ADO/RDS (0x800A20FF) 
Internet Server Error.

Então veja esses links: KB #251122 e KB #184606.

Se tiver problemas de permissão verifique : KB #253580

Se você estiver usando a autenticação do Windows veja : KB #197964

Se o banco de dados estiver em uma rede Novel veja : KB #178045

Esteja atento ao limite de conexões remotas e a versão do seu Sistema Operacional ( XP, Vista, Win7 ) e havendo problemas com isso veja : KB #207671 e KB #189408

Eu espero sinceramente que essas dicas te ajudem a resolver o seu problema com o MSAccess.

Veja os Destaques e novidades do SUPER CD VB 2012 (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super CD .NET e no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C# 2012 com exclusivo material de suporte e vídeo aulas com curso básico sobre C#.

Rom 12:20 Antes, se o teu inimigo tiver fome, dá-lhe de comer; se tiver sede, dá-lhe de beber; porque, fazendo isto amontoarás brasas de fogo sobre a sua cabeça.
Rom 12:21
Não te deixes vencer do mal, mas vence o mal com o bem.

Referências:


José Carlos Macoratti