MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    Compactar e Repara

    avatar
    Diamantino
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/04/2013

    Compactar e Repara Empty Compactar e Repara

    Mensagem  Diamantino 28/3/2017, 15:28

    Amigos bom dia !!!

    Estou copiei um módulo do Maestro de nosso Amigo Avelino.

    É aquele que compacta e repara, o certo.

    Então o que acontece é que ao clicar no menu ele compacta e fecha o programa, no Maestro ele compacta e chama o frLogin.

    O que será fiz de errado??

    Se alguém puder me ajudar eu agradeço.

    Vou colocar o código em baixo pra vocês analisarem.

    Public Function fncChecaVinculo() As Boolean
    Dim PathBe As String
    Dim NomeBE As String
    Dim Contador As Byte
    Dim box As String

    On Error GoTo trataErro

    'If InStr(Right(CurrentDb.Name, 6), ".accdr") = 0 Then
    'fncChecaVinculo = True
    'Exit Function
    'End If

    PathBe = Nz(DLookup("path_0", "tblCaminhoBe"), "vazio")
    NomeBE = Nz(DLookup("NomeBe", "tblCaminhoBe"), "vazio")

    '---------------------------------------------------------------------------
    'Verifica se o caminho atual do back-end esta gravado na tabela tblCaminhoBe
    '---------------------------------------------------------------------------
    If PathBe = "vazio" Then
    PathBe = CurrentProject.Path & "\" & NomeBE
    CurrentDb.Execute "UPDATE tblcaminhoBe SET path_0 ='" & PathBe & "'"
    End If

    CaminhoAtual = fncBackEndAtual

    If Not fncFalhaConexaoBE(PathBe) Then
    If (CaminhoAtual <> PathBe) Then
    CaminhoAtual = PathBe
    DoCmd.ShowToolbar "ribbon", acToolbarNo
    DoCmd.OpenForm "frmBarraProgresso", OpenArgs:=1
    Else
    Application.SetOption "Auto Compact", False
    If Len(Trim(DLookup("formPrincipal", "tblCaminhoBe")) & "") > 0 Then
    DoCmd.OpenForm DLookup("formPrincipal", "tblCaminhoBe")
    End If
    DoCmd.ShowToolbar "ribbon", acToolbarYes
    Call fncCarregaRibbon
    End If
    Else
    DoCmd.ShowToolbar "ribbon", acToolbarNo
    DoCmd.OpenForm "frmCaminhoBe", , , , , acDialog, 1
    If booSair Then
    fncChecaVinculo = True
    Exit Function
    End If
    If booNovaChecagem Then fncChecaVinculo
    End If

    sair:
    Exit Function
    trataErro:
    Select Case Err.Number
    Case 76, 52
    DoCmd.OpenForm "frmCaminhoBe", , , , , acDialog, 1
    If booSair Then
    fncChecaVinculo = True
    Exit Function
    End If
    If booNovaChecagem Then fncChecaVinculo
    Case 2102
    MsgBox "O formulário principal '" & DLookup("formPrincipal", "tblCaminhoBe") & "' não existe...", vbInformation, "Aviso"
    Case Else
    MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
    fncChecaVinculo = True
    End Select
    End Function

    Public Function fncBackEndAtual() As String
    Dim strCon As String
    Dim strTabelaLink As String
    Dim tbl As DAO.TableDef
    Dim k
    On Error GoTo trataErro

    For Each tbl In CurrentDb.TableDefs
    If Len(tbl.Connect & "") > 0 Then strTabelaLink = tbl.Name
    Next
    '-----------------------------------------------------
    'Vou usar a última tabela vinculada, para obter
    'o caminho do back-end (propriedade Connect).
    '-----------------------------------------------------
    strCon = CurrentDb.TableDefs(strTabelaLink).Connect
    '-----------------------------------------------------
    'Agora vou retirar apenas o caminho do accdb,
    'sem o ";DATABASE=" que o precede na string Connect.
    '-----------------------------------------------------
    fncBackEndAtual = Right$(strCon, (Len(strCon) - (InStr(1, strCon, ";DATABASE=", 2) + 9)))

    sair:
    Exit Function
    trataErro:
    MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
    Resume sair:
    End Function

    Public Function fncFalhaConexaoBE(strLocalBe As String) As Boolean
    Dim bd As DAO.Database
    On Error Resume Next
    If Len(fncCrip(DLookup("senha", "tblCaminhoBe"), 102030) & "") = 0 Then
    'Abrir BE sem senha
    Set bd = OpenDatabase(strLocalBe, False, False)
    Else
    'abrir BE com senha
    Set bd = OpenDatabase(strLocalBe, False, False, ";PWD=" & fncCrip(DLookup("senha", "tblCaminhoBe"), 102030))
    End If
    If Err Then
    Err.Clear
    fncFalhaConexaoBE = True
    Else
    bd.Close
    fncFalhaConexaoBE = False
    End If
    Set bd = Nothing
    End Function

    Public Function fncCrip(strTexto As String, Optional chave As Long = 0)
    Dim j As Integer, R As String
    If chave <> 102030 Then Exit Function
    For j = 1 To Len(strTexto)
    R = R & Chr((Asc(Mid(strTexto, j, 1)) Xor 36))
    Next j
    fncCrip = R
    End Function

      Data/hora atual: 28/3/2024, 12:24