MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Run-time error 3043

    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Run-time error 3043

    Mensagem  catyl em 21/9/2019, 11:16

    bom dia,
    tenho um sistema que quando fica uns 20 ou 30 minutos sem usar/inactivo apresenta o erro na imagem.
    porque isso acontece? existe um tratamento de erro para esta situação? agradeço a vossa ajuda.
    Run-time error 3043 Access10
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 21/9/2019, 23:20

    Sua rede é wireless?

    Isso acontece quando os aparelhos da rede são reiniciados e a conexão é perdida. Acontecendo na maioria das vezes em conexões wifi


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 22/9/2019, 13:06

    muito obrigado pelo retorno,
    a minha rede é à cabo. o meu pacote do office é 2010 mas ainda não tem licença será que tem haver com a licença? se sim tem como criar uma excepção ou tratamento de erro para que continue funcionando sem ter que fechar a aplicação e voltar abrir novamente?
    agradeço ajuda.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 22/9/2019, 14:10

    1 . Se sua conexão com o backend é permanentemente vinculada então a solução é trocar os aparelhos e cabeamento da rede por aparelhos atuais e utilizar no-breaks para evitar quedas de energia. Em resumo, a solução é resolver a rede. Uma outra tentativa seria verificar se os computadores envolvidos não estão entrando em suspensão/hibernação, o que poderia causar a perda de acesso à base de dados.

    2. Se você não usa vínculos permanentes, isto é, se seu vínculo é do tipo abrir a conexão, fazer o que tem que fazer, e logo após fechar a conexão, então é possível ficar tratando os erros e quando necessário até mesmo emitir mensagens personalizadas. Mas para isso muita codificação seria necessária, formulário a formulário, relatório a relatório.

    Pelo que parece seu caso é a situação número 1. Assim sendo, seu problema é mais especificamente a rede que está instável causando a perda constante de conexão. No caso 1 não há nada a fazer via programação.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 23/9/2019, 10:20

    acho que o meu caso é o 2º, (o meu sistema está dividido em backend e frentend), tratando erro acho que ficaria melhor.
    necessito que, quando dar o erro em questão (Run-time error "3043") cria uma excepção ignorando o erro e o sistema continuar a funcionar normalmente.
    tem como me ajudar nesta situação? agradeço.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 23/9/2019, 15:30

    Pela mensagem e imagem de abertura do tópico seu caso deve ser o primeiro. Você utiliza vínculos automáticos e permanentes.

    Posso estar equivocado, nesse caso, poste sua string de conexão com a base de dados (ou o front-end) para que possamos auxiliá-lo melhor em como tratar o erro.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 23/9/2019, 17:32

    segue uma das partes:

    Código:
    Private Sub btnGuardar_Click()
       Dim db As DAO.Database
       Dim rst As DAO.Recordset
       Dim sMSG        As String
    On Error Resume Next

       If fnVerificaCampos = False Then
           Exit Sub  'Se retornar FALSE, a mesma não prossegue
       End If

    'verifica se as caixas de texto estão vazias
       If IsNull(Me.txtnumero) Or Me.txtnumero = "" Or IsNull(Me.txtnome) Or Me.txtnome = "" Then
           MsgBox "Campos vazios encontrados...", vbCritical, "Informação"
           Cancel = True
       Exit Sub
       
    Else

       'abre o recordset da tabela
       Set rst = CurrentDb.OpenRecordset("Select * from tbl_Funcionario")
       'adiciona na tabela
                   rst.AddNew
                   rst("numero") = Me.txtnumero
                   rst("nome") = Me.txtnome
           
                   rst.Update
                   
           MsgBox "Registro adicionado com sucesso...", vbInformation, "Informação"

    End If

       rst.Close
       Set rst = Nothing
    'limpa as caixas de texto
    Me.txtnumero.Value = ""
    Me.txtnome.Value = ""
    Me.lstnome.Requery
    End Sub
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 23/9/2019, 20:28

    refaça essa parte
    Código:
    'abre o recordset da tabela
    Set rst = CurrentDb.OpenRecordset("Select * from tbl_Funcionario")

    para

    se o backend usa senha
    Código:
    'abre o recordset da tabela
    Set rst = OpenDatabase("CaminhoCompletoArquivoBackend", False, False, ";PWD=SenhaDoBackend").OpenRecordset("Select * from tbl_Funcionario")

    se o backend não usa senha
    Código:
    'abre o recordset da tabela
    Set rst = OpenDatabase("CaminhoCompletoArquivoBackend", False, False).OpenRecordset("Select * from tbl_Funcionario")


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    caty
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  caty em 5/10/2019, 12:56

    desculpe pela demora estava com problema de net.
    desculpe por lapso não adicionei o codigo abaixo. onde deve reforçar no codigo abaixo?

    Private Sub btnNuFunc_Click()

    'Função que verifica a autenticidades dos campos
    If fnVerificaCampos = False Then
    Exit Sub 'Se retornar FALSE, a mesma não prossegue
    End If

    'Função que verifica se os dados informados constam na tabela
    If fnValida(Trim(txtDataActual), Trim(txtNumFunc)) = False Then
    MsgBox "" & sMSG & "", vbExclamation, "Aviso!!!"
    Exit Sub
    End If

    'Função que grava dados na tabela e retorna mensagem de sucesso ou não
    If fnGravaDados = True Then
    'msgbox "" & sMSG & "", vbInformation, "Aviso!!!" 'Mensagem de sucesso
    Else
    Exit Sub

    End If

    End Sub

    'FUNCAO QUE VALIDA SE EXISTE O REGISTRO NA TABELA
    Public Function fnValida(nDataAtual As Date, nNumFunc As String) As Boolean
    On Error GoTo Trata_Erro

    'Define valor da função como TRUE
    fnValida = True

    'INSTANCIA A VARIAVEL DB COMO DATABASE CORRENTE
    Set db = CurrentDb

    'STRING DE SELECAO DE DADOS
    sSQL = "SELECT NumeroFuncionario, Datareg"
    sSQL = sSQL & " FROM tbl_RegistosF"
    sSQL = sSQL & " WHERE NumeroFuncionario='" & nNumFunc & "'"
    sSQL = sSQL & " AND Datareg= #" & Format(nDataAtual, "mm/dd/yyyy") & "#"

    'ABRE RECORDSET COM A STRING DE SELECAO DE DADOS
    Set rst = db.OpenRecordset(sSQL, dbOpenSnapshot)

    'SE ENCONTRAR O REGISTRO, EMITE MENSAGEM
    'PROPRIEDADE EOF (End Of File), OU SEJA, SE NÃO(NOT) FOR O FINAL DO ARQUIVO, ENTAO O SISTEMA
    'ENCONTROU UM OU MAIS REGISTROS
    If Not rst.EOF Then
    'NA OCORRÊNCIA DO REGISTRO EXISTIR, RETORNA A FUNÇÃO COMO FALSE
    fnValida = False
    Me.txtNumFunc.Value = ""
    txtNumFunc.SetFocus
    End If

    '============ IMPORTANTE =============='
    'SEMPRE QUE ABRIR RECORDSET SOBRE QUALQUER CIRCUNSTÂNCIAS,
    'É NECESSÁRIO FECHÁ-LO E LIMPA-LO DA MEMÓRIA

    rst.Close 'FECHA O RECORDSET
    Set rst = Nothing 'ELIMINA DA MEMÓRIA
    '=========================================

    Exit Function

    'TRATAMENTO DE ERRO, CASO HOUVER
    Trata_Erro:

    rst.Close
    Set rst = Nothing

    MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "", vbCritical, "Erro!!!"

    Exit Function

    End Function

    'FUNCAO QUE GRAVA OS DADOS INFORMADOS NA TELA
    Public Function fnGravaDados() As Boolean

    fnGravaDados = True
    If DLookup("NumeroFuncionario", "tbl_Funcionario", "NumeroFuncionario = '" & Forms!MenuPrincipal!txtNumFunc & "'") Then
    Set db = CurrentDb

    'INSTRUÇÃO DE INSERT DE DADOS DIRETO NA TABELA
    'USANDO O COMANDO DO PROPRIO DATABASE
    sSQL = "INSERT INTO tbl_RegistosF "
    sSQL = sSQL & "("
    sSQL = sSQL & " Datareg"
    sSQL = sSQL & ",Horareg"
    sSQL = sSQL & ",NumeroFuncionario"
    sSQL = sSQL & ")"
    sSQL = sSQL & "VALUES "
    sSQL = sSQL & "("
    sSQL = sSQL & " #" & Format(txtDataActual, "mm/dd/yyyy") & "#"
    sSQL = sSQL & " ,#" & Format(Time, "hh:mm") & "#"
    sSQL = sSQL & " ,'" & Trim(txtNumFunc) & "'"
    sSQL = sSQL & ")"
    db.Execute sSQL 'EXECUTA A INSTRUÇÃO DE INCLUSÃO DE DADOS
    sMSG = "Registo efectuado com sucesso !"
    Me.Refresh

    Me.txtNumFunc.Value = ""
    txtNumFunc.SetFocus
    Else
    MsgBox "não cadastrado! Por favor, contactar....", vbCritical, "Aviso"
    fnGravaDados = False
    Me.txtNumFunc.Value = ""
    txtNumFunc.SetFocus

    End If
    Exit Function

    Trata_Erro:

    sMSG = "Erro ao gravar." & vbNewLine
    sMSG = sMSG & "Código do Erro: " & Err.Number & vbNewLine
    sMSG = sMSG & "Descrição do Erro: " & Err.Description & ""

    Exit Function

    End Function
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 6/10/2019, 14:08

    Por favor, aonde devo reforçar o código acima?
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 6/10/2019, 16:06

    Estou muito confuso ainda. Primeiro precisamos descobrir como seu projeto está vinculado à base de dados/tabelas diretamente ou não.

    Código:
    ...
    Set db = CurrentDb
    ...
    Me.Refresh
    ...
    DLookup("NumeroFuncionario", "tbl_Funcionario", "NumeroFuncionario = '" & Forms!MenuPrincipal!txtNumFunc & "'")
    ...

    Os trecho do seu código acima indicam que sim, e para este caso só tratando a rede. Ou refazendo seu projeto e deixando de trabalhar vinculado.

    Para sanar minha dúvida, tire um print da área das tabelas no painel de navegação do seu aplicativo e poste aqui.

    Veja como postar
    https://www.maximoaccess.com/t32003-como-postar-anexos-e-imagens-no-site-maximoaccess-com#220272


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 7/10/2019, 19:37

    Segue o solicitado Run-time error 3043 Print110Run-time error 3043 Print110
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 7/10/2019, 19:39

    Segue o solicitado Run-time error 3043 Print110Run-time error 3043 Print110
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 7/10/2019, 20:37

    Você utiliza o aplicativo vinculado à base de dados/tabelas diretamente. Quando a rede cai surge a mensagem da imagem de abertura do tópico.

    Para não deparar-se com tal imagem então precisa tratar e rede e garantir que ela fique estável. Ou mudar o aplicativo para ficar desvinculado e assim ter um melhor controle dos eventos.

    Veja estes tópicos sobre o assunto
    https://www.maximoaccess.com/t12754-resolvidoformulario-desvinculado
    https://www.maximoaccess.com/t5476-resolvidoformulario-desvinculado
    https://www.maximoaccess.com/t16153-formulario-desvinculado
    https://www.maximoaccess.com/t19241-formulario-desvinculado
    https://www.maximoaccess.com/t35917-formulario-desvinculado-logica-de-programacao-para-salvar-editar-e-excluir-os-registros


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 9/10/2019, 15:57

    Trabalhando desvinculado nao há possibilidade de se corromper facilmente visto que existe vários usuários a utilizar?
    Obrigado
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 10/10/2019, 14:10

    Não. Na verdade esse risco diminui.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 11/10/2019, 09:42

    Então me criaste dúvida. O meu bd está separado frent-End e bk-End. Aí ideia é juntar?
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  DamascenoJr. em 12/10/2019, 01:11

    Existem 3 tipos de acesso aos dados com o access.

    1. Modelo de arquivo único:
    As tabelas e os formulários ficam todos em um arquivo só.

    2. Modelo dividido em front-end e back-end:
    Nesse modelo as informações entre o front-end e o back-end podem ser trocadas de 2 formas.

    >> 2.1. Vinculação direta:
    O aplicativo fica ligado às tabelas de forma direta. Automática. Como se ainda fosse um único arquivo. O ícone das tabelas do back-end possuem uma seta ao lado esquerdo no front-end.

    >> 2.2. Vinculação indireta/desvinculado:
    O aplicativo não é ligado diretamente às tabelas. A conexão é feita em tempo de execução. Os registros/informações/registro/dados são tratados via código. Não existe o ícone das tabelas do back-end no front-end.


    ---------------------------------------------------------------------------------

    Você utiliza o modelo 2.1 A vinculação é automática e fica por conta do Access. Quando a conexão é perdida, o Access mostra a imagem da sua primeira mensagem no tópico. Não é possível tratar isso já que você não tem controle manual, mas sim o Access que faz esse controle de forma automática.

    Minha sugestão era o modelo 2.2 (e não o modelo 1), onde tudo é feito via código e você poderia tratar/cuidar de como tudo é feito.
    É isso ou verificar seus equipamentos de rede para saber porque no seu modelo 2.1 o front-end está a perder a conexão com o back-end: queda ou pico de energia desligando roteadores/switches; aparelhos ligados na mesma tomada (as maiores vilãs são as impressoras a laser que quando compartilhadas na mesma tomada ao se prepararem para uma impressão cortam a energia dos demais aparelhos).

    Bom... é isso. Boa sorte.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    catyl
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 30
    Registrado : 24/04/2019

    Run-time error 3043 Empty Re: Run-time error 3043

    Mensagem  catyl em 12/10/2019, 13:59

    Confesso que com essa aula aprendi muito não sabia dessa matéria, por isso fazia sempre confusão. Muito obrigado.
    Trabalhando com o modelo 2.2, são os link que me passaste na mensagem anterior? Senão podes me ajudar enviar uns o mais básico possível? Quero aprender para me precaver nos aplicativos futuros.

    'abre o recordset da tabela
    Set rst = OpenDatabase("CaminhoCompletoArquivoBackend", False, False).OpenRecordset("Select * from tbl_Funcionario")

    Ao reforçar com este código não irá resultar ? Quero testar mas não sei onde colocar no segundo código que postei.


      Data/hora atual: 28/11/2020, 01:18