Avelino Sampaio- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3900
Registrado : 04/04/2010
Avelino Sampaio 20/10/2011, 10:14
Olá
Veja aqui se resolve:
- Código:
O método DoCmd.TransferDatabase do Access oferece a maneira mais fácil de importar, exportar ou vincular tabelas de outro banco de dados (arquivo mdb/mde). Neste caso, a ação a ser executada dependerá da constante atribuída ao argumento transfertype: acExport, acImport (padrão), ou acLink.
Veja a sintaxe completa desse método no Help (F1) do Access.
1 - Importar tabelas de outro banco de dados
Para viabilizar o uso do método supracitado, eu criei a rotina Importa, que recebe como argumentos o caminho e a senha (opcional) de um banco de dados. Esta rotina importa todas as tabelas do referido banco de dados, ignorando obviamente as tabelas de sistema e as tabelas ocultas.
Sub Importa(ByVal strDbPath As String, _
Optional ByVal varPwd As Variant = "")
'Desenvolvido por JR
'http://www.accessjr.cjb.net
Dim db As DAO.Database, tdf As DAO.TableDef
Dim strNome As String, I As Integer
On Error GoTo ErrHandler
Screen.MousePointer = 11 ' Muda cursor para ampulheta
Set db = DBEngine(0).OpenDatabase(strDbPath, False, _
False, ";pwd=" & varPwd)
I = 0 'Zera contador de tabelas importadas.
For Each tdf In db.TableDefs
' Pula tabelas de sistema ou ocultas.
If Left(tdf.Name, 4) <> "MSys" Then
strNome = tdf.Name
DoCmd.TransferDatabase acImport, "Microsoft Access", _
db.Name, acTable, strNome, strNome, False
I = I + 1 ' Ajusta contador de tabelas.
End If
Next tdf
MsgBox "Foram importadas " & I & " tabelas de" & vbCrLf _
& Dir(db.Name), vbExclamation, "Status da importação"
Sai:
Screen.MousePointer = 0
Set db = Nothing ' Libera memória
Set tdf = Nothing
Exit Sub
ErrHandler:
MsgBox "Erro nº " & Err.Number & vbCrLf _
& Err.Description, vbCritical, "Erro"
Resume Sai
End Sub
Você pode associar a rotina ao evento Ao Clicar de um botão de comando, como no exemplo abaixo:
Private Sub Comando0_Click()
Dim strDb As String
strDb = "C:\Temp\Estoque.mdb"
Call Importa(strDb, "Teste")
End Sub
Nota: Se o mdb que contém as tabelas não tiver senha, simplesmente não preencha o argumento varPwd da rotina. Por exemplo:
Call Importa(strDb)
E não se esqueça de que a senha de um banco de dados é sensível a letras maiúsculas e minúsculas.
2 - Criar tabelas vinculadas a outro banco de dados
Para criar tabelas vinculadas a outro banco de dados (chamado de back-end), simplesmente altere o código da rotina Importa na linha referente ao método DoCmd.TransferDatabase: altere a constante acImport para acLink.
3 - Atualizar tabelas vinculadas anteriormente
Na pergunta Como atualizar tabelas vinculadas por código?, você encontrará um modo de atualizar os vínculos (caminho do back-end) das tabelas vinculadas existentes no front-end, sem precisar deletá-las e recriá-las novamente com o método DoCmd.TransferDatabase.
Sucesso!
.................................................................................
Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces
Clique AQUI e analise o custo beneficio do material oferecido.