... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Vinculando tabelas com barra de progresso

Arquitetura básica de banco de dados comercial

Qualquer empresa hoje em dia possui computadores em rede.  E para que todos os usuários tenham acesso à Base de Dados é necessário compartilhá-la em uma pasta , em um dos computadores.  

Para atender a este perfil de estrutura de rede, realizamos a divisão do nosso banco de dados em duas partes básicas: uma que contém a base de dados (tabelas) e que é chamada de back-end e a outra que contém o restante da aplicação ( formulários, relatórios, macros, ...) e que é chamada de front-end

O back-end fica na pasta compartilhada e o front-end é copiado para cada uma dos computadores.  E cada um dos front-end tem que ser ligado ao back-end.   Podemos ligá-los através de programação ou através do que chamamos de vinculação.  

Vantagens de se separar o banco de dados

O front-end, utilizado em cada um dos computadores, reduz o tráfego de rede e melhora o desempenho; especialmente em redes não-hierárquicas.  O grande benefício da divisão é a capacidade de atualizar facilmente o front-end, sem afetar os dados armazenados no back-end.

Qual é o método utilizado para ligar o front-end ao back-end?

A ligação por vinculação é a mais utilizada e é toda gerenciada pelo Access, enquanto que a ligação por programação é gerenciada pelo programador.  Cada um dos métodos tem suas vantagens e desvantagens.  O método por vinculação é o que nos interessa neste tutorial.

O Access tem assistentes para nos auxiliar neste processo de divisão e vinculação?

Sim, o Access tem assistente para executar esta tarefa, mas você pode também aprender como utilizar este processo, assistindo a vídeo-aula sobre segurança máxima utilizando o Open

Os problemas enfrentados na prática

No processo de vinculação, o que temos que fazer é informar ao Access a localização do back-end.  De posse desta localização, o Access cria os vínculos das tabelas entre o front-end e o back-end.  O front-end passa a se comunicar com as tabelas, como se elas estivessem no local.

Se por algum motivo a localização do back-end for modificada (e isso volta e meia acontece na prática), os vínculos ficam quebrados, acarretando em erro.  É necessário, então, abrirmos o gerenciador de vínculos e informar ao Access a nova localização do back-end, para que sejam refeitos os vínculos, com o novo caminho indicado.

Outras situações que costumam provocar erro: 

o computador do usuário não se comunicando com a rede;
o computador que armazena o back-end desligado;
troca do nome do computador que armazena o back-end;
troca do IP do computador que armazena o back-end (sim, você pode vincular pelo IP da máquina);
O Windows do computador do back-end entrando em estado de hibernação (bloqueia a comunicação com a rede).

O que acontece é que você não pode permitir que esta falha seja gerenciada pelo Access, pois vai parecer para o usuário, que a falha é sua.  veja o mensagem do Access para o usuário:

Back-end não encontrado

 

Certamente, com esta mensagem, a primeira providência que o usuário vai tomar é ligar para você.  

E mesmo que a solução seja simples, não será possível de se resolver à distância, pois na maioria das vezes o usuário costuma não ter acesso a estrutura do banco de dados e a senha do back-end (se tiver)  terá que ser passada para ele.

Agora, veja uma mensagem programada por nós:

Back-end não encontrado no caminho indicado

 

Mesmo que o usuário venha a pedir o seu auxílio, certamente que as informações passadas por ele serão mais objetivas e tudo poderá ser resolvido por esta tela.

Suponha que tenha ocorrido uma alteração na localização do back-end.  Basta o usuário clicar no botão procurar, localizar o back-end no novo caminho.  Após informar o novo caminho, o usuário irá clicar no botão "salvar novo caminho" e o processo de revinculação se inicia , exibindo uma barra de progresso personalizada.

Observe a revinculação ocorrendo:

Barra de progresso personalizada

 

Um outro problema enfrentado na prática é quando você deseja distribuir seu aplicativo pela internet, por exemplo.   Ora, quando a pessoa baixar o seu aplicativo e instalar, certamente que a localização do back-end irá ser diferente e portanto os vínculos com o front-end  ficarão quebrados.   Com este aplicativo que estou oferecendo, esta questão fica bem resolvida.  Você mesmo irá comprovar quando baixar o exemplo aqui do tutorial e rodar o front-end.  De imediato irá aparecer a barra de progresso vinculando automaticamente as tabelas.

Versão mais aprimorada - Baixe a versão atual do aplicativo Maestro, que possui um sistema de vinculação aprimorado. 

Veja mais detalhes clicando aqui.

Pequeno Vídeo


 

Faça o login aqui para ter acesso ao vídeo.

 


 

 


87 comentários

Brigido   03/04/2010 06:37:40

Parabéns amigo Avelino, sua ferramenta é uma excelente alternativa ao assistente nativo do Access.

MARCIO MELO MARTINS   03/04/2010 10:51:01

Feliz Páscoa! sensacional a simplicidade do projeto, muito bem elaborado, passarei a adotar sua solução que é muito mais profissional do que a minha que utilizava de três formulários, no seu caso o mesmo formulário que avisa sobre o problema também faz a vinculação, só para acrescentar que poderia ser colocado a nível de segurança uma senha master entregue ao administrador de rede para que nenhum usuário tomasse a iniciativa de fazer o vinculo, pois tenho feito na prática compartilhamento oculto \\metrologia$ ou um botão invisível escondido com o caractere de atalho &^ assim a chamada da senha seria algo assim Alt + ^ + ^ algumas dicas simples que deixo aqui para nos assegurar com algumas funções secretas rsrs tenho feito desses artifícios para agilizar algumas soluções sem perda de tempo, como não temos o vinculo não sabemos se o usuário é o administrador, na prática os usuários não sabem lidar com a situação, sendo mais seguro eles terem apenas a visualização das mensagens sem poderem ter acesso as funções de caminho e salvar. Show de bola... Sou mais Brasil!

José Mendes   03/04/2010 13:07:09

Avelino,

Um exemplo bastante simples de se implementar o que é óptimo.

No meu caso tenho as seguintes dúvidas:

Como fazer para pedir o vinculo de vários BE?

No meu caso uso 3 pelo menos digamos que como módulos.

Será possível por exemplo definir um BE preferencial?

Por exemplo, se estiver no escritório irei trabalhar com o BE que está no servidor e que é o original, mas se estiver em casa, por exemplo para consulta ou até para desenvolvimento vou ter que vincular as tabelas a uma cópia do BE que tenho no computador pessoal, o que vai aconteçer é que no dia seguinte ao chegar ao escritório o mais certo é esquecer-me que tenho o FE vinculado ao meu BE do meu computador e não ao do servidor.

Luís Augusto   07/04/2010 12:34:28

Essa ferramenta veio em hora certa. Estou em constante processo de melhorias no Front End, com certeza facilitou muito minha vida no processo de vinculação das tabelas.
Estou ancioso para o próximo vídeo explicativo para o Monta Ribbons, sua praticidade tem feito sucesso em meu trabalho.
Muito obrigado Avelino.

STELLA MARIS   01/05/2010 21:22:40

Avelino,
Gostei muito da forma deste vinculo, esse procedimento pode ser usado para a versao do access 2003 no access 2007?
grata

Avelino Sampaio   02/05/2010 05:54:00

Brigido e Marcio,

Muito obrigado pelo apoio e participação de vocês.

José,

Conforme email que te passei esta solução é possível sim mas infelizmente estou sem tempo para te oferecer um exemplo. Anotei aqui para num futuro próximo modificar meu exemplo e atender a algumas reivindicações que me fizeram.

Stella,

Pode sim, sem problema.

Sucesso

Gilberto   14/05/2010 16:03:47

Avelino, seu site é sensacional.

Uma coisa, aqui no Autoexec, esta dando erro no Ao ocorrer erro next, diz que não pode executar a macro, então eu tirei a linha e funciona, mas eu não estou tendo que vincular as tabelas, será que pode dar problema tirar esse tratamento de erro?

Abs

Avelino Sampaio   14/05/2010 17:12:53

Gilberto,

obrigado pelo seu apoio e participação.

De fato ocorre problema se o arquivo rodar no modo runtime. O tratamento de erro não é aceito.

Eu já havia corrigido isso no exemplo Maestro, que disponibilizo aqui no site mas esqueci deste exemplo.

Já está corrigido. Baixe novamente , por gentileza.

Fico grato por me comunicar o ocorrido.

Sucesso

Mario scandolera   11/06/2010 21:56:48

Bom exemplo, não incomodando muito voce não teria uma versão para o access 2003.?

Desde ja agradeço.


Angelo Duque   18/06/2010 02:12:20

Avelino
Parabens pelo site, realmente é muito organizado e didático.
Bom vc não teria esses exemplos na versão access 2000. Eu tive um problema muito sério com a versão 2003. Sempre que estava quanse terminando um formulário, ele fechava e acusava um erro de falta de memória (erro 2004). depois de perder vários formulários e procurar solução descobrir que esse problema só ocorre na versão 2002 e 2003. Então voltei a usar o access 2000. E quanto ao 2007, eu não gostei de usa-lo e ainda não tenho prática com o mesmo.

Desde já agradeço.

Helder Castro   07/07/2010 15:43:58

Avelino,
qual é a senha do bd mesmo?
Abraços

Avelino Sampaio   08/07/2010 06:21:16

Angelo,

Me desculpe eu não tenho exemplos para o 2000.

Helder

A senha do back-end é "xpto"

Esdras   15/06/2011 14:23:54

Boa tarde!
gostei muito de seus exemplos parabéns! gostaria de saber como faço para adaptar a barra de processo, para que ela possa rodar quando o Bd esta gerando uma planilha!
Em meu Bd tem um Function que executa um seria de consultas e ao final é gerado um relatório final, este processo leva certo tempo
Por isto gostaria de saber se da para utilizar esta barra para esta finalidade!!
Desde já agradeço

Avelino Sampaio   20/06/2011 05:37:24

Esdra,

No meu tutorial sobre "Backup" uso o FileSystem.FileLen para determinar se arquivo (no seu caso a planilha) já foi gerado. Enquanto não for gerado a barra corre.

Sucesso!

Filipe Monteiro (newest fan)   26/08/2011 12:08:57

Boas .. ao executar a aplicação de pois de ter alterado o local do back-end aparece-me o erro "Erro:3276 - Referência de objecto de banco de dados inválida".

É no "DoCmd" que dá o erro...
If Len(Trim(DLookup("formPrincipal", "tblCaminhoBe")) & "") > 0 Then
DoCmd.OpenForm DLookup("formPrincipal", "tblCaminhoBe")
End If

Já consegui colocar a funcionar uma vez, e foi quando andei com os "breakpoints" a ler a estrutura do código, quando os tirei e fechei a base de dados voltou a ficar com o erro.

Diz alguma coisa p.f., Filipe

Filipe Monteiro (newest fan)   26/08/2011 12:14:13

Novos comentários:
Estou a utilizar a versão Access 2010
Já descobri como coloquei a funcionar ... depois de ter alterado a localização aparece-me o tal erro acima referido. Fecho a BD, abro-a e compilo, fecho novamente ... ao abrir já funciona bem.

Filipe

Avelino Sampaio   26/08/2011 12:21:56

Filipe,

o Access veio com um bug na revinculação. Use também o compactar e reparar.

Já saiu o pacote de atualizações SP1. Instale para corrigir estes bugs.

Sucesso!

Marcelo David   11/09/2011 22:56:17

Avelino, boa noite.
Já uso esta automação em muitos de meus projetos, porém, em um projeto em particular que terminei (Access 2010), está ocorrendo que ao abrir o aplicativo, ele abre uma MsgBox e diz que a tabela não foi encontrada. Mas depois de apertar ok, ele funciona perfeitamente. Mas tem esse incoviniente de sempre que abro, dizer que a tabela não foi encontrada. Alguma sugestão?

Forte Abraço

Avelino Sampaio   12/09/2011 06:21:41

Marcelo,

o Access 2010 veio com uns bugs esquisitos no tocande a vinculação das tabelas.

Use o compactar e reparar. Se não resolver, delete todas as tabelas vinculadas, volte a vincular e logo após use o compactar e reparar. Se ainda assim não resolver, crie um novo BD, importe todos os seus objetos, exceto as tabelas vinculas. Vincule as tabelas e logo após use o compactar e reparar.

Vc deve também atualizar o seu office com o pacote Sp1 que me parece resolver estes bugs.

Sucesso!

Mário Júnor   04/10/2011 19:48:34

Caro Avelino, a vinculação de tabelas funciona perfeitamente, para front-end que trabalham com apenas um back-end, eu tenho uma aplicação que trabalha com 3 back-end, é um banco de dados bem grande, por isso tenho de dividir as tabelas em mais de um back-end (limitação 2GB). Seria possível vc me indicar uma solução para este tipo de vinculação.

Parabéns pelo trabalho.


Aloisio Barros   22/11/2011 12:00:22

Avelino,
Minha situação é parecida com a do Mário J. Tenho algumas tabelas em comum em 3 bancos, como a que autentica o usuário (login e senha). Alguma sugestão para vincular essas tabelas.?

Jose Donizeth Rodrigues   21/12/2011 10:42:47

Avelino,

Utilizo esta automação já algum tempo, mas meu BD não tinha senha, agora coloque senha no e utilizo o connect com senha, mas tenho 50 tabelas vinculadas e quando ocorre a viculação automatica a barra de vinculo diz que tem um total de 165 tabelas, e faz a contagem até 165.

Avelino Sampaio   02/01/2012 10:20:00

José,

Delete os vínculos das tabelas no seu front-end e refaça-os manualmente.

Para refazer os vínculos, siga os seguintes passos:

clique na guia "dados externos" da ribbon
no grupo "Importar", clique no botão "Access"
seleciona a opção : "vincular à fonte de dados criando uma tabela vinculada"
Clique no botão procurar e encontre o seu back-end.
informe a sua senha e selecione as tabelas que serão vinculadas

Sucesso!

Jr. Faustino   07/02/2012 23:11:44

Caro Avelino,

Muito obrigado pelo que estou aprendendo no seu site. É muito bom saber que tem pessoas, como você, que transmitem o que sabem de forma gratuita e dedicada para todos.
Já estou usando em meus aplicativos o Backup e a Vinculação de tabelas e esses dias vou adquirir o MontaRibbons.

Valeu!

Evandro Gondran   21/02/2012 13:28:01

Olá Avelino,
Primeiramente parabéns pelo MontaRibbons!
Estou usando o código para vincular automaticamente as tabelas porém estou com um pequeno problema: meu front-end é accdb e minhas tabelas estão em mdb. Na caixa de seleção para encontrar as tabelas o filtro só permite encontrar formato accdb. Preciso então escrever o nome do arquivo mdb. Funciona normalmente, mas para o usuário isso não será tão funcional. Tem como eu desativar o filtro? Não posso passar as tabelas para accdb porque são réplicas de outro mdb, e pelo que vi o formato accdb não permite replicação.
Abraço...

Avelino Sampaio   22/02/2012 07:25:14

Evandro,

use o módulo global "mod_procurarArquivo" do aplicativo Maestro_v3 e acrescente a chamada do mdb na função abaixo:

Public Function fncLocalizarArquivo()
Dim fd As Office.FileDialog
On Error GoTo trataerro
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
With .Filters
.Clear
.Add "Banco de Dados", "*.mdb", 1
.Add "Banco de Dados", "*.accdb", 2
.Add "Todos", "*.*", 3
End With
.Title = "Selecionar Banco de Dados)"
.AllowMultiSelect = False
.InitialFileName = "c:\"
.InitialView = msoFileDialogViewPreview
If .Show Then
fncLocalizarArquivo = .SelectedItems(1)
End If
End With
sair:
Exit Function
trataerro:
fncLocalizarArquivo = ""
Resume sair:
End Function


A seguinte linha foi acescentada na função acima:

.Add "Banco de Dados", "*.mdb", 1

Sucesso!

Eliando   27/02/2012 17:03:09

Avelino,

O meu aplicativo é usado em várias filiais, cada uma com um banco de dados no mesmo formato, mas com informações diferentes. Para um usuário acessar um banco de dados diferente do seu, usual, é possivel criar um form com diversas opções de bancos de dados de mesmo nome e caminhos diferentes e accessar atraves da vinculação?

Abraços

Roberto   07/03/2012 21:57:35

Prezado Avelino,

Baixei aqui o seu exemplo e procedi da seguinte forma:

1º extrai os arquivos com o winrar para uma pasta que chamei "teste vinculo"
2º dentro da pasta "teste vinculo" fiz uma pasta "teste" e nela coloquei o BE
3º Abri o FE e selecionei o caminho do BE e salvei (vínculo ok)
4º Fechei o FE
5º fiz uma pasta teste dentro da teste já existente, portanto "teste vinculo"/"teste"/"teste" e nela coloquei o BE
6º Abri o FE e selecionei o BE e mandei vincular.
7º Erro 3276 - referência de objeto de Banco de Dados Inválida

Qual o problema?

Valeu e parabéns!

Avelino Sampaio   08/03/2012 04:53:30

Roberto,

se tiver testando com o Access 2010 poderá de fato acusar um erro pois existe um bug na revinculação.

Por gentileza, baixe o aplicativo MAESTRO da seção Download. Este aplicativo tem o sitema de revinculação atualizado.

Sucesso!

Adriana   14/03/2012 19:30:34

A rotina funciona muito bem. Resolveu muitos problemas que há tempo me perseguiam. Valeu.

Nilo Aires Jr   15/03/2012 00:44:52

Eu fiz todo o processo como mostrado no tutorial, apenas mudei o nome do meu BE e do FE
Não uso formulário principal, nem senha..mas me apresentou os seguintes erros:
Erro: 3625
Item não encontrado nessa coleção
Erro:11
Divisão por zero

Avelino Sampaio   15/03/2012 07:53:30

Nilo,

retire o código do aplicativo Maestro, que está mais atualizado.

Grato
Avelino Sampaio

Andre Jacob   21/03/2012 17:15:55

Excelente Avelino... reduz muitos entraves para quem quer disponibilizar aplicações na internet.... Obrigado

Robson Rampinelli   01/04/2012 11:30:58

Avelino,

Gostaria de externar minha grande satisfação em poder contar com teus conhecimentos nas minhas aplicações...

Obrigado por ser um bom TUTOR!!!! Ainda assim, gratuito!!!

Abraços,

Avelino Sampaio   02/04/2012 04:24:59

Andre e Robson,

fico muito agradecido pelos comentários. É muito gratificante saber que estou conseguindo contribuir!

Sucesso!

Anderson Garcia Adorno   17/04/2012 16:17:27

Olá, sou seu fã...
Fiz tudo que pede no tutorial, mais da erro no meu sistema, na verdade se mostra funcional, mas só vincula a 1ª tabela e na barra nostra 47 tabelas mais vincula com 60 que não existe. eu testo este seu aplicativo e funciona bem, mas quando implemento em meu projeto surge o erro.

Avelino Sampaio   17/04/2012 16:58:20

Anderson,

vá nos códigos do formulário frmbarraProgresso e ative as linha correta. Se o seu Back-end não tem senha, ative a linha de cima e desative a debaixo.

'---------------------------
'para o back-end sem senha
'---------------------------
'Conn = ";DATABASE=" & CaminhoAtual

'-------------------------------------------
'para o back-end com senha
'a senha do back-end deste exemplo é: a1234
'-------------------------------------------
Conn = "MS Access;PWD=a1234;DATABASE=" & CaminhoAtual

Sucesso!

Anderson Garcia Adorno   17/04/2012 17:57:23

Avelino, cara pensa na minha felicidade...

Deu certo, cara como que uma coisinha simples dificulta a vida de nós mortais do access, ainda bem que temos deuses como você para nos ajudar, obrigaduuu...

Obrigaduuu mesmo, e aguarde pois esta foi a primeira de muitas duvidas que terei.

"Tudo que um homem possa pensar, outros poderão realizar" Julio Verne.

Kleyton   09/05/2012 17:57:26

Boa tarde,

Apliquei o exemplo do vinculador do back end e funcionou perfeitamente porém gostaria que ele me aparece-se a opção para localizar o back end sempre, tenho um mesmo BD para varias localidades e que acesso varias vezes durante o dia, se ele me aparecer aquele box para localizar o back end me facilitaria.É possivel?

Avelino Sampaio   12/05/2012 16:51:19

Kleyton,

basta criar um botão e chamar pelo formulário "frmCaminhoBe"

Sucesso!

Khaled Murshed   16/10/2012 09:59:39

Avelino,

Parabéns pelo projeto, é realmente muito útil e ao mesmo tempo simples de utilizar!

Porém estou com um problema, quando tento prosseguir com a vinculação, recebo o Erro: 3625
(Item não encontrado nessa coleção) ao executar a macro AutoExec. Mesmo assim o codigo abre o formulario para escolha do caminho do BE, e após eu ter indicado o caminho, recebo o Erro:11
Divisão por zero. Após isso o aplicativo fecha e nenhuma vinculação é realizada.

Tirei o código do MAESTRO, e estou com a biblioteca OFFICE OBJECTS 12.0 ativada, alguma idéia do que pode ser?

Obrigado

Avelino Sampaio   18/10/2012 11:45:01

Khaled,

Toda vez que acrescentar uma nova tabela ao projeto, terá que deletar manualmente todos os vinculos e rafazê-los do zero. Para refazer os vinculos manualmente:

Clique na guia “Dados externos” da ribbon > Clique no botão Access, no grupo importar > selecione a opção “Vincular a fonte de dados ...” > clique no botão procurar >Procure pelo seu back-end > selecione as tabelas que deseja vincular > Clique em Ok e vincule as tabelas

Depois de pronto, a revinculação irá funcionar, para o caso de trocar o back-end de localidade.


Pedro Melo   01/11/2012 06:00:33

Bom dia a todos. Especialmente ao Grande Mestre Avelino Sampaio pois graças aos seus tutoriais e exemplos eu tenho evoluído bastante no access. Graças a isso estou desenvolvendo um aplicativo em Access 2007 que permite o controle de estoque da empresa.
Ja tenho tudo feito mas como quero inserir a base de dados em um servidor de rede entao decidi dividir a BD em Front_End e Back_End. Corri logo no meu mestre para tira todas as informações necessarias e fiz tudo como descrito pelo tuto13 (barraVinculo.accdb) o qual alias acho que deveria ser actualizado pois não esta correcto. Exemplo simples: se usarmos a BD Maestro_v4_be.accdb para extrairmos o que nos diz no tuto13 ira dar erro pois a "fncCrip" encontra-se no mod_Geral o qual nao pedem que extraiamos para nossa base de dados e no mod_ChecaVinculo chama por essa funçao. mas isso sao promenores menores. lol
Voltando ao meu problema fiz tudo o que foi pedido e o que se passa é que quando abro a BD pela primeira vez ele abre o frmCaminhoBe tudo normal, eu localizo a _be e ele vincula as tabelas normal, e fecha o programa. o problema começa aqui sempre que eu volto a abrir ele vincula as tabelas automaticamente e fecha o programa, e sempre que eu voltar a abrir ele faz isso!!! Será que alguém podera me dar uma luz! Obrigado por tudo e desculpem por qualquer coisa.

Avelino Sampaio   01/11/2012 07:25:01

Pedro Melo,

quero lhe agradecer pela observação feita, em relação a função fncCrip, que está fora de posição. Já atualizei o Maestro v.4, colando a função fncCrip no módulo mod_checaVinculo.

quanto ao seu problema, de estar sempre vinculando ao abrir, pode ser que tenha que realizar um ajuste na função fncFalhaViculo (está no módulo mod_checaVinculo).

Public Function fncFalhaVinculo()
Dim rs As DAO.Recordset
On Error Resume Next
Set rs = CurrentDb.TableDefs("tblusuários").OpenRecordset
If Err Then
Err.Clear
fncFalhaVinculo = True
Else
rs.Close
fncFalhaVinculo = False
End If
Set rs = Nothing
End Function

Observe que eu uso a tabela tblusuários para realizar a verificação. Se não tiver esta tabela no seu projeto, troque para uma que exista.

A tabela tblCaminhoBe tem que ficar no front-end.

Se não tiver êxito com as dicas, entre em contato pelo email : avelino(arroba)usandoaccess(ponto)com(ponto)br

Sucesso!

Pedro Melo   01/11/2012 07:44:20

Avelino
Só agora reparei que essa fnc fazia relação a tblUsuários.
O meu problema deve ser mesmo esse pois não tenho a tblUsuários.
Importei essa tabela e agora o erro que tenho é: "Erro:2580 A origen de registros 'tblInformes' especificada neste formulario ou relatorio não existe."
Avelino não estou intereçado em resolver esse problema e sim perceber o que faz de concreto a fnc_FalhaVinculo e se da para evitar aquele loop de vincular tabelas sem ter que fazer relaçao a qualquer tabela na fnc_FalhaVinculo.

Avelino Sampaio   01/11/2012 08:53:12

Pedro melo,

eu não me recordo de imediato a razão deu ter incluido a função fncFalhaVinculo. Vc até pode modificar a função fncFalhaVinculo, conforme sugestão abaixo:

Public Function fncFalhaVinculo()
Dim rs As DAO.Recordset
Dim tbl As DAO.TableDef
Dim booFalha As Boolean
On Error Resume Next
For Each tbl In CurrentDb.TableDefs
If Len(CurrentDb.TableDefs(tbl.Name).Connect) > 0 Then
Set rs = CurrentDb.TableDefs(tbl.Name).OpenRecordset
If Err Then
Err.Clear
booFalha = True
Exit For
End If
End If
Next
fncFalhaVinculo = booFalha
End Function

A função irá pegar a primeira tabela vinculada e abrir o seu recordset. A questão é se esta tabela for grande, haverá um atraso na abertura do aplicativo. Prefiro manter a indicação de uma tabela, que tenho a certeza de ser pequena. Se conhecer outra forma de testar, serei muito grato.

Sucesso!

Pedro Melo   01/11/2012 16:21:01

Avelino
Muito obrigado por tudo. depois de perceber como funcionava a fncFalhaVinculo foi facil resolver.
Deixei mesmo a funçao como estava, So tive que criar uma tabela sem grande significado e substituir a tblUsuarios por ela.
esta funcionando perfeito.
Minha proxima etapa e conseguir portar os formularios de login e de permissao de usuarios pois gostei muito das que tens na tua BD.
Obrigado.
(quando puderes diz algo sobre minha formula de redimencionamento consuante a resoluçao de tela.)

Pedro Melo   01/11/2012 16:42:00

So mais uma pequena duvida
Preciso adicionar uma coluna na tblCaminhoBe que me indique o caminho da Back_End.
Seria o Path_0 sem o NomeBe.
Ja tentei de varias maneiras mas nao funciona. mas tambem nao da erro.....
Alguma ideia?

Avelino Sampaio   03/11/2012 06:12:09

Pedro,

uma alternativa é criar a função abaixo:

Public Function fnccaminhoBe() As String
fnccaminhoBe = Replace(DLookup("path_0", "tblcaminhoBe"), "\" & DLookup("NomeBe", "tblCaminhoBe"), "")
End Function

Sucesso!

Pedro Melo   05/11/2012 06:15:59

Avelino
Muito obrigado por tudo.
Mas é nestes casos que eu vejo que sou mesmo amador nisto.... nao consegui por em pratica a tua ideia.
Consegui obter resultados com outra maneira mas nao estou conseguindo obter o que quero.
Consigo obter o caminho do Back_End mas nao como quero....
Ex:
preciso de C:\......\Desktop
mas so obtenho C:\.....\Desktop\StockControl_be.accdb

Henrique Leal   06/11/2012 11:33:29

Bom dia a todos..

Grande mestre Avelino, não sabia absolutamente nada de Access e agora já me arrisco até a fazer programas simples, nisso voce tem participação de no minimo 80%..rs

Estou finalizando um sistema de gestão de clientes e incorporei esse exemplo de vincular tabelas, acontece que ao mandar o front end para uma filial do Sul, ocorreu o erro por conta do outro computador ser 64 bits... Apareceu a seguinte mensagem esta incompleta, mas o teor era esse:

"Analise e atualize as Instruções Declare e em seguida marque-as com o atributo Ptrsap".

É normal? O código não funciona para pcs com 64 bits?

Obrigado e parabéns por todo seu empenho e sabedoria!!

Avelino Sampaio   06/11/2012 11:42:55

Henrique,

Baixe a nova versão do Maestro que o sistema de vinculação foi aprimorado.

Vc tem que adaptar todas as API's utilizadas no seu projeto para rode na versão de 64 bits. Aqui na seção tutorial tem o artigo "64 bits - seus aplicativos no futuro do presente" para você saber o que fazer.

Sucesso!

Henrique Leal   06/11/2012 13:32:19

Muito obrigado pelo retorno Avelino, irei fazer o recomendado.

Grande abraço

Kleyton Peixoto Mendes   13/11/2012 14:18:45

Boa tarde Avelino,

Sou um grande adminirador de vosso trabalho, apliquei este método do vinculador e esta funcionando perfeitamente porém tenho uma necessidade quanto a este vinculador do qual já fiz algumas tentativas e preciso do vosso apoio...

No meu caso, tenho o mesmo BD instalado em varias bases, onde os arquivos BE estão todos num servidor separados por pastas com o nomes das bases da empresa.

A ajuda que solicito é a seguinte tem situações em que preciso acessar a base de dados de outras bases, e toda vez que realizar esse acesso tenho que mudar o BE em que estou usando de lugar para por ele dar a msg de erro de vinculo e então eu conseguir vincular com outra base. Seria possivel fazer com que o sistema peça o vinculo do BE toda vez que acessar o sistema, ou então um botão que "zere" o enderço vinculado nas tabeladas ou um outro método sugerido para zerar o vincular e vincular de novo?

Grato pelo vosso apoio.

Kleyton

Kleyton Peixoto Mendes   13/11/2012 14:22:06

Tentei criar um botão chamando a form fmrcaminhobe mas aparece a msg: a ação openform foi cancelada.

Grato

Kleyton

Avelino Sampaio   13/11/2012 18:00:33

Kleyton,

vá na seção download e baixe o aplicativo Maestro v.4. Lá vc encotrará um sistema de vinculação mais aprimorado em que os vinculos são deletados e refeitos do zero. Veja mais detalhes na seção "dicas" , no artigo "Veja as novidades da versão 4 do aplicativo Maestro"

Sucesso!

Kleyton Peixoto Mendes   14/11/2012 09:48:19

Avelino, baixei o maestro v.4 e a opção refazer vinculos ao que entendi quando clicamos nele ele revincula utilizando o ultimo endereço do ultimo be. No meu caso eu necessitaria que ele me desse a opção poder selecionar o be novamente, pois algumas vezes não será o mesmo be.

Avelino Sampaio   14/11/2012 10:00:23

Kleyton

Crie um formulário, com origem na tabela tblCaminhoBe , para alterar o caminho , o nome e a senha do BE, para depois então disparar a barra de progresso.

Na função fncOnAction

...
Case "btvincular"
DoCmd.ShowToolbar "ribbon", acToolbarNo
'--------------------------------------------------------------------------------
docmd.OpenForm "NomeDoSeuFormParaMudarBE", , , , ,acDialog
'---------------------------------------------------------------------------------
DoCmd.OpenForm "frmBarraprogresso", , , , , , 1


Sucesso!

Kleyton Peixoto Mendes   14/11/2012 11:27:49

Obrigado Avelino... desculpe lhe encomodar desta forma, hoje não trabalho com ribbon e estou com o projeto que é bem grande com tempo meio esgotado, pretendo na segunda versão mudar para ribbon.
Para este pensei em criar a form, coloquei o campo path_0 e criei um botão localizarbe com o seguinte codigo:

On Error Resume Next
Dim strCaminho As String
strCaminho = localizarArq("c:\")
If IsNull(strCaminho) Or strCaminho = "" Then Exit Sub
Me.Path_0 = strCaminho
On Error GoTo 0

E assim ao click deste botão ele altera a localizaçao do BE, coloquei um botão sair do BD, pois quando saiu e acesso de novo ele revincula a partir da localização que alterei usuando a form.

Pergunto como eu faria para ao invés de ter sair para chamar barra de progresso, chama se ela somente com um botão sem ter que sair do BD?

É possivel?

Augusto   20/11/2012 13:00:01

Olá AVelino ..
Baixei o Maestro V4 e tentei adaptar o sistema de vinculação ao meu projeto..
Acontece que depois de copiados os módulos, tabelas e formulários, toda vez que entro aparece a mensagem de que a tabela não foi encontrada.. Minhas ribbons estão na tabela USysRibbons e foram feitas no Montaribbons que adquiri com vc aqui no site. Vi que seu código trabalha com a tblRibbons no Maestro. Como devo preceder para corrigir esse problema? Já tentei renomear as tabelas, criar outra, mas sempre dá erro.
Obrigado ...

Avelino Sampaio   21/11/2012 07:59:51

Augusto

Você pode copiar e colar a xml da sua tabela UsysRibbons e passar para a tabela tblRibbons, sendo que na tabela tblRibbons vc terá que digitar no campo "versao" qual versão pertence esta sua ribbon (12 para a 2007 , 14 para a 2010 e 1214 se a ribbon servir para as duas versões).

As ribbons são carregadas pela função "fncCarregaRibbon" , esta função por sua vez é disparada depois de uma checagem dos vinculos das tabelas. O disparo da função está no módulo "mod_checaVinculos".

O MontaRibbons também exporta para a tabela tblRibbons. E só escolher no formulário de exportação.

Sucesso!

Augusto   22/11/2012 22:58:42

Ok Avelino .. Muito Obrigado..
A rotina funcionou perfeitamente ..
Mais uma vez parabéns pelos tutoriais e pelas dicas..
Grande abraço ...

Everton   18/05/2013 01:27:16

Vlwwww pessoal!!!! tava querendo esse código de vinculo para tabelas a algum tempos para finalizar um projeto obrigado mesmo!!!

Ivair Martins   18/06/2013 22:28:18

Boa noite Avelino,

Gostaria de saber se dá para vincular as tabelas de um BD diferente com esse exemplo que vc deu., sendo que esse outro BD não está dividido.

Ex: BdExemplo1.accdb, ele é front-end, vincular com o BdExemplo2.accdb não divido.

Obrigado...

Charles   20/09/2013 22:54:37

Antes de mais nada gostaria de te dar os parabéns pelo projeto, mas estou com problemas, quando abro o BD com os mod, tbl e frm importados aparece o seguinte erro no VB
"Erro de compilação
O tipo definido pelo usuário não foi definido"

e a função Private Function fncBackEndAtual() As String fica em amarelo.

Tem como resolver isso?
Obrigado desde já.

Edmilson Batista Lima   13/02/2014 11:15:41

Bom dia

Usei o exemplo acima (Baixe aqui o exemplo), no meu projeto, mas apesar de minha senha esta correta o não é reconhecido. A vinculação acontece, mas no entanto aparece a mensagem de senha incorreta (e não esta)
Versão do access 2010.
Existe caracteres padrão para senha?

Avelino Sampaio   15/02/2014 06:39:53

Edmilson,

qual dos exemplos você utilizou ? O do Maestro ? A mensagem de senha incorreta acontece ao tentar abrir diretamente a tabela ?

No aguardo

Carlos José   27/02/2014 12:03:46

Avelino estou aprendendo a desenvolver Access com base no maestro, mas estava desenvolvendo alguns formulários mas quando abri e o access fez o vinculo de tabelas e não consigo mais abrir os formulários, o que posso fazer?

Fabio Pradella   12/03/2014 21:07:43

Avelino,

Porque depois de exportar a tabela e os forms para o meu projeto, não consigo abrir o form frmCaminhoBe ???


Avelino Sampaio   13/03/2014 07:27:02

Fabio,

No evento "ao abrir" do formulário tem o seguinte código:

If Nz(Me.OpenArgs, 0) = 0 Then
Cancel = True
Exit Sub
End If

Isso impede que seja aberto diretamente. Delete o código acima ou torne um comentário.

Vá na seção DICAS aqui do meu site e leia o artigo "Impedindo a abertura de formulário pelo Painel de Navegação"

Sucesso!

Fabio Pradella   13/03/2014 13:18:02

Avelino,

Fiz o que diz o Maestro, exportei a tabela, os forms e os módulos, só que quando abro o form frmCaminhoBe e pesquiso la a localidade do back-end, quando vou salvar ele da falha de conexão com o back-end, aonde estou errando???

Magallanes   14/07/2014 17:47:54

Prezados, fiz um programinha em access 2000, porém o mesmo está rodando no access 2010. Ocorre que fui compartilha-lo na rede, porém faz todo o procedimento, inclusive dizendo que fez o vinculo. Ao rodar o programa ele busca sempre a unidade onde foi instalado no servidor. Pode ser problema de versão? Terei que converter de access 2000 para 2010?

ANTONILDO CORDEIRO   10/11/2014 15:52:40

Grande Avelino! parabéns por todos os seus trabalhos!
Queria saber se é possível, vc me ajudar neste problema com esta solução de vinculo de tabelas,

'---------------------------
'para o back-end sem senha
'---------------------------
'Conn = ";DATABASE=" & CaminhoAtual

'-------------------------------------------
'para o back-end com senha
'a senha do back-end deste exemplo é: a1234
'-------------------------------------------
Conn = "MS Access;PWD=a1234;DATABASE=" & CaminhoAtual

vejo aqui que vc loga no banco eu queria saber se é possível logar em um servidor de rede "Windows server 2012" pois uso maquinas que não fazem parte do domínio da rede ai não abre as tabelas, mais quando eu acesso este servidor pela rede e digito o usuário e senha funciona perfeitamente.

Wesley Soares   23/07/2015 22:23:05

Através de outra dúvida eu encontrei este post. Realmente a conferência e alteração automática da localização do back end foi muito útil para mim.
Tenho um BD que é compartilhado em várias máquinas com o BE em locais distintos, esta função foi uma mãozona na roda.

Silas Silva   28/08/2015 09:58:04

ola, já uso em meu projeto a um tempo mais recententemente ti ver que dividir o blek-end em dois ai surgiu a duvida como viicula os dois blek-ends com a barra de progresso ate agora tenho viiculado manualmente.

Sebastião    06/01/2016 10:54:08

Ola pessoal.
Quando clico no botao de comando para disparar o codigo alterar semha, ele traz a msg de erro ao compilar: " O tipo definido pelo usuário não foi definido. Como faço para solucionar isso?

Gilberto Rocha   12/03/2016 20:46:28

Para vincular mais backends:
http://www.maximoaccess.com/t25925-vincular-tabelas-de-varios-backends

Luis Antonio   14/05/2016 15:01:55

Não consegui desabilitar a mensagem de erro 3044 do Access 2010:
'C:\User\.....' não é um caminho válido. Verifique se o nome do caminho foi escrito corretamente e se você esta conectado ao servidor no qual o arquivo reside.

O resto deu certo. Como faço para desabilitar?

Paulo Miranda   19/06/2016 23:57:51

Avelino gostaria de saber se a vinculação de tabelas através da barra de progresso pode vincular mais de um banco de dados no mesmo front-end?

Avelino Sampaio   21/06/2016 08:56:09

Paulo

sim, com certeza pode. Só que eu não tenho uma programação disponível, como modelo, para atender seu objetivo.

Sucesso!

Paulo Miranda   27/07/2016 22:27:56

Ok. Obrigado.

Glauco   16/09/2016 12:27:04

Boa tarde Avelino,

Consegui adaptar a versão antiga ao meu projeto, quando rodo no meu computador funciona normal mas quando coloco em rede ele fala que a senha está incorreta, alguma sugestão do que está acontecendo?

Clesio   31/01/2017 04:58:43

Bom dia Avelino

Utilizo o Maestro a muito tempo, via servidor do escritório com mais 2 usuários. Mas tenho um problema quando estamos fora.
Coloquei o backend no Onedrive funcionou bem, mas não enxergo o backend no PC compartilhado.
Então coloquei o backend no dropbox, o arquivo front-end leu (barra de proguesso ok).
Quando abro o arquivo ele diz: Senha incorreta.
Abri o arquivo e mandei vincular novamente. Mesmo: Senha incorreta.
Tem alguma sugestão?

Kleberson França   22/08/2017 10:56:10

Boa Tarde Avelino !!!

As Ribbons consomem memória do Front End ?

Pois tenho um projeto de Front End com 11 KB, porém quando é executado e carrega as Ribbons, meu Front End sobe para 162.944 KB

Avelino Sampaio   23/08/2017 06:08:33

Kleberson

sim, consomem. Bem normal esse aumento e não só pela questão das ribbons.

Sucesso!
Avelino Sampaio

Maurício Bruno   08/09/2017 11:56:42

Avelino,
Boa Tarde!
Tentei fazer a vinculação das tabelas, e não funcionou.
O meu processo e por AD, não utilizo senha ele já identificar o usuário logado, porém, não vincula as tabelas o que fazer. Preciso de uma orientação sua.
Se quiser podemos ver uma maneira para eu compartilhar o BD contigo.
Grato.

Avelino Sampaio   12/09/2017 04:09:24

Mauricio,

abra um tópico no nosso fórum sobre o assunto e explique com mais detalhes.

http://www.redeaccess.com.br

Aguardamos


Envie seu comentário: