Alexandre Fim 29/5/2024, 14:33
Olá,
De que forma vc utiliza sua aplicação?
O sistema usa o front-end na maquina do usuario vinculado ao back-end na rede?
Quando cai a rede, o sistema perde o link com o back-end e ai o Access exibe a mensagem de erro.
Provavelmente seja isso.
O que poderia ser feito é (se o teu sistema possui um formulario principal) usar o evento No Timer, e nele executar uma rotina para verificar a conexão com o back-end, e se caso não houver conexão, rodar função para refazer os links com as tabelas do back-end, a cada 10 segundos ou o tempo que vc achar necessário.
Segue função:
- Código:
'-- by Alexandre Fim
'-- Função para atualizar vinculo de tabelas com back-end
Public Function fncLinkTabs()
On Error GoTo trata_erro
Dim strConnect As String
Dim rs As DAO.Recordset
Dim DB As DAO.Database
Dim tdf As DAO.TableDef
Dim strSQL As String
Dim ws As DAO.Workspace
Dim dbExt As DAO.Database
Screen.MousePointer = 11
Set ws = DBEngine.Workspaces(0)
Set dbExt = ws.OpenDatabase([CAMINHO_DO_BANCO_DE_DADOS], False, False, "MS Access;PWD=" & [SENHA_DO_BANCO_DE_DADOS] & "")
Set DB = CurrentDb
'-- Conexão com Back-End
strConnect = "MS Access;PWD=" & [SENHA_DO_BANCO_DE_DADOS] & ";DATABASE=" & [CAMINHO_DO_BANCO_DE_DADOS]
strSQL = "SELECT Name From MSysObjects WHERE Type = 1 and Name NOT LIKE 'MSys*' AND Flags = 0"
Set rs = dbExt.OpenRecordset(strSQL)
'-- Verifique se a tabela já está vinculada, se estiver, atualize a conexão.
'-- Caso contrário, vincule a tabela.
Do While Not rs.EOF
If IsNull(DLookup("[Name]", "MSysObjects", "[Name]='" & rs!Name & "'")) Then
Set tdf = DB.CreateTableDef(rs!Name, dbAttachSavePWD, rs!Name, strConnect)
DB.TableDefs.Append tdf
Else
DB.TableDefs(rs!Name).Connect = strConnect
End If
DB.TableDefs(rs!Name).RefreshLink
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Screen.MousePointer = 0
MsgBox "Atualização realizada com sucesso.", vbInformation, "Mensagem"
Exit Function
trata_erro:
Screen.MousePointer = 0
MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "", vbCritical, "Erro"
Exit Function
End Function
Att,
Alexandre Fim