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


4 participantes

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  CassioFabre 8/3/2016, 17:21

    Boa tarde amigos. Meu problema é o seguinte:

    Estou construindo um bd e coloquei uma rotina de atualização automática dos front-end dos usuários. A rotina encontrei aqui mesmo no fórum, exatamente neste link https://www.maximoaccess.com/t16932-front-end-access-no-servidor.

    Fiz uma pequena modificação no código do link acima que foi perguntar ao usuário se ele deseja atualizar o módulo cliente dele naquele momento ou não. Na minha máquina utilizo a versão completa do Access 2007 e nas estações o Access Runtime 2007. No access completo, tudo funciona perfeitamente, na sequencia abaixo:

    -> Solicita atualização
    -> Caso sim, fecha o BD principal e abre o BD de atualização
    -> Rotina é executada e o Front-end do usuário é substituido pelo front-end atualizado
    -> Informa o sucesso e fecha o bd de atualização.


    Porém no Access runtime, acontece o seguinte:

    -> Solicita atualização
    -> Caso sim, não fecha o BD principal e abre o BD de atualização
    -> Rotina aparentemente é executa
    -> Informa o sucesso e fecha o BD de atualização
    -> Foco é voltado para o BD principal e aparece mensagem de "Erro em tempo de execução"
    -> Aperta OK, fecha o BD principal e a atualização não foi feita.

    O erro se dá provavelmente porque o BD principal não é fechado para ser substituído. Sabemos que não se pode substituir um arquivo que está sendo executado. Tentei substituir o comando DoCmd.Quit por Application.Quit, mas nesse caso ele fecha o Access completamente e não abre o BD de atualização.

    Minha dúvida é como fechar o BD principal no Access Runtime e abrir o BD de atualização.

    Obrigado desde já.
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  ronaldojr1 10/3/2016, 15:40

    tenta com esse codigo:
    Código:

    DoCmd.Close acForm, "nomeFormulario", acSaveYes
    baldocchi
    baldocchi
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 03/11/2014

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  baldocchi 10/3/2016, 15:44

    Olha amigo, eu sou novo aqui e em Access também.
    Tive esse problema e resolvi dividindo o banco de dados.
    funciona bem.
    sei lá se vai ajudar, mas vale a tentativa, né?!
    fique com Deus!
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  ronaldojr1 10/3/2016, 16:01

    puts, vdd eu interpretei errado.
    deleta.rsrsrs, o codigo q passei so serve pra fechar o formulario,
    para fechar o bd so conheço as duas funcoes mesmo(docmd.quit e application.quit)
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  CassioFabre 28/3/2016, 17:48

    Meu banco de dados já está dividido em Front e Back end. Mesmo assim agradeço a ajuda dos dois.

    Quaisquer outras soluções estou no aguardo.

    Obrigado.
    avatar
    erinaldo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 27/09/2010

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  erinaldo 28/3/2016, 20:52

    Ja tive esse mesmo problema, mas o que acontece é que quando voce chama esse comando tem varias "instancias" ainda em execução ai o access não consegue finalizar todas, veja esse link

    https://support.microsoft.com/en-us/kb/164455

    me ajudou bastante, talvez possa te ajudar!!

    abraço.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Resolvido

    Mensagem  CassioFabre 27/6/2016, 14:34

    Bom dia a todos.

    Não consegui fazer a proposta deste tópico dar certo, então para atualização dos meus front-ends, recorri ao uso de um arquivo batch que fica junto da pasta do front-end na máquina do usuário. Fica descrito abaixo o que fiz, para se no futuro alguém tiver um problema parecido:

    No meu form de abertura do programa, formLogin, no eveto aoCarregar deixei, tendo como base de comparação dois campos que comparam as datas da ultima atualização do back-end com a do front-end, o código abaixo:

    Código:
       txtVersaoAtual = DMax("versaoAtual", "tblVersao", "")
    txtVersaoFE = DMax("versaoFE", "tblVersaoFE", "")
    Dim sh As Object
        
        If txtVersaoFE <> txtVersaoAtual And DLookup("obrigatoria", "tblVersao", "versaoAtual = '" & txtVersaoAtual & "'") = False Then
            If MsgBox("Há uma nova versão do sistema disponível (versão " & txtVersaoAtual & " - de " & DLookup("data", "tblVersao", "versaoAtual = '" & txtVersaoAtual & "'") & "). Seu cliente precisa ser atualizado!" & vbCrLf & "" & vbCrLf & "Deseja atualizá-lo agora?", vbQuestion + vbYesNo, "Atualização") = vbYes Then
                Set sh = CreateObject("WScript.Shell")
                sh.Run (CurrentProject.Path & "\atualizador.bat")
                
                Application.Quit
            End If
        ElseIf txtVersaoFE <> txtVersaoAtual And DLookup("obrigatoria", "tblVersao", "versaoAtual = '" & txtVersaoAtual & "'") = True Then
            MsgBox "Há uma nova versão do sistema disponível (versão " & txtVersaoAtual & " - de " & DLookup("data", "tblVersao", "versaoAtual = '" & txtVersaoAtual & "'") & ")." & vbCrLf & "" & vbCrLf & "Esta atualização é obrigatória.", vbExclamation, "Atualização Obrigatória"
            
            Set sh = CreateObject("WScript.Shell")
            sh.Run (CurrentProject.Path & "\atualizador.bat")
            
            Application.Quit
        End If

    Do forma como fiz, quando eu vou liberar a atualização para os usuários, defino se ela é obrigatória ou não. No caso de ser, não permito que o sistema seja utilizado sem atualizá-lo, caso contrário o usuário escolhe se quer fazê-lo naquele momento ou não. Isso está mostrado com o uso do DLookup("obrigatoria", "tblVersao", "versaoAtual = '" & txtVersaoAtual & "'") = False.

    Abaixo o .bat de atualização:

    Código:
    @echo off
    title Atualiza‡Æo - Nemer Estoque Exporta‡Æo
    taskkill /F /IM MSACCESS.EXE
    cd c:\export
    del Exportacao.accdb
    del Exportacao.laccdb
    cls
    echo.
    echo Programa de Atualiza‡Æo - Nemer Estoque Exporta‡Æo
    echo ---------------------------------------------------
    echo.
    echo Aguarde
    echo.
    copy /Y P:\Export-estoque\Exporta‡Æo\Exportacao.accdb C:\Export\
    echo.
    echo.
    echo Atualiza‡Æo conclu¡da com sucesso!
    echo.
    pause
    cd c:\export\
    start Exportacao.accdb
    exit

    Ps.: Os caracteres especiais acima são extremamente importantes, INCLUSIVE no caminho dos arquivos que for utilizar. Caso nao os use, o cmd acusará "objeto não encontrado".

    O que o .bat faz é finalizar os processos do Access, excluir o arquivo Exportacao.accdb da pasta do front-end, e copiar o arquivo atualizado, de mesmo nome, para essa pasta. Nada complexo.

    Uma outra forma de fazer este procedimento é utilizando, ao invés do comando copy, o xcopy. Neste caso não é necessário excluir o arquivo do front-end, pois este será substituido. Mas deixo a cargo de voces pesquisarem a respeito. Utilizei o excluir -> copiar pois por algum motivo o xcopy não funcionou aqui pra mim.

    De qualquer forma, está aí. Obrigado a todos.

    Conteúdo patrocinado


    [Resolvido]Erro com doCmd.Quit e Access Runtime 2007 Empty Re: [Resolvido]Erro com doCmd.Quit e Access Runtime 2007

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 05:39