Vamos lá... passo a passo.
Você tem seu banco de dados principal que está dividido em front end (uma cópia em cada micro dos usuários) e back end (salvo em um servidor). Desta forma cada usuário acessa o back end através de seu front end.
No formulário de abertura do seu front end (como utilizo formulário de login, este é o primeiro formulário que abre no meu BD) você vai inserir um textbox (invisível). Vamos chamar este campo de "VersaoAtual". Na folha de propriedades, item Valor Padrão, coloque o número da versão mais atual, por exemplo "1.0".
Então temos um campo no formulário de abertura chamado "VersaoAtual" com valor padrão "1.0".
Agora, no seu arquivo back end que está no servidor, crie uma tabela com o número das versões. Por exemplo tabela "Controle_Versoes", com dois campos, um "NumeroVersao" e outro "DataVersao". Nesta tabela é importante que somente você, o desenvolvedor, tenha acesso, pois é aqui que ficarão listadas todas as versões do programa.
De volta no front end, no mesmo formulário inicial, insira mais um textbox, vinculado à tabela "Controle_Versoes" no campo "NumeroVersao". Vamos dar o nome do textbox para "NumeroVersao".
Em seguida insira o seguinte código no evento ao carregar:
- Código:
if Me.NumeroVersao <> Me.VersaoAtual then
'código disponível no site do maximoaccess. Aqui você irá abrir outro banco que possui as linhas de comando para atualizar a versão do soft.
Dim strcmd As String
Dim objaccess As ACCESS.Application
'Indique o caminho do arquivo que fará a atualização do seu sistema
strcmd = SysCmd(acSysCmdAccessDir) & "\msaccess.exe " & "c:\Atualizador.accdb"
Call Shell(strcmd, vbNormalFocus)
DoEvents:
Set objaccess = GetObject("c:\Atualizador.accdb")
'DoCmd.Quit ' para fechar o banco accdb que chamou o outro.
O código acima abre outro banco se a versão do textbox "NumeroVersao" for diferente de "VersaoAtual".
A próxima etapa é cria o arquivo que fará a atualização. É importante que este arquivo fique junto ao front end do seu banco de dados principal em cada micro do usuário. Ele foi citado no código acima: "Atualizador.accdb". Crie um novo BD e um formulário que deverá carregar ao abrir o BD. Neste formulário insira o seguinte código no evento ao carregar:
- Código:
On Error GoTo trataerro
Dim fso
Dim file As String
Dim dfol As String
' nome do arquivo que já está na nova versão
file = "\\Caminho do Arquivo Principal no Servidor\ArquivoPrincipal.accdb"
'Caminho da nova versão no micro do usuário. Importante padronizar, por exemplo, em C:\PastaDoProjeto\.
dfol = "C:\PastaDestinodoArquivo\"
Set fso = CreateObject("Scripting.FileSystemObject")
'Verifica se o arquivo a ser copiado existe
If Not fso.FileExists(file) Then
MsgBox "Não foi localizado o arquivo para Atualização! Tente mais tarde!", vbExclamation, "Erro"
Else
'Copia o arquivo da nova versão do servidor para o micro do usuário
fso.CopyFile (file), dfol, True 'true para subrescrever o arquivo se existir.
MsgBox "Atualizado com sucesso!", vbInformation, "Sucesso"
End If
trataerro:
MsgBox "Erro. Descrição: " & Err.Description & "Número: " & Err.Number
Toda nova versão do BD que você criar, disponibilize no servidor e insira na tabela "Controle_Versoes" a última versão que o sistema se encarregará do restante.
Agora acho que ficou mais explicado. Qualquer dúvida pergunte.