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


2 participantes

    Tratamento de erro para mesclagem no Word

    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    Tratamento de erro para mesclagem no Word Empty Tratamento de erro para mesclagem no Word

    Mensagem  flecha 11/3/2013, 23:36

    Olá a todos!

    Estou com meu BD em funcionamento e aos poucos vão aparecendo Bugs e ando me virando e consertando.

    No form que tem os dados para mesclar em um doc (matriz) do word, sempre que o usuário esquece de
    inserir um dado que será usado na mesclagem dá um erro "13" pois ele começa a mesclar e para onde não achou o campo
    solicitado na função.

    Dai a saída é procurar o Doc (matriz), abri-lo e fecha-lo sem salvar, pois ele pergunta se quer salvar e se salvar
    irá corromper o Doc e não mais funcionará.

    Ai eu coloquei um tratamento desse erro assim:
    Private Sub Comando27_Click() 'negativo
    On Error GoTo TrataErro

    Dim NovoCaminho As String
    Dim MiWord
    Dim MiDoc
    Dim Cambio
    Dim strAppPath As String
    strAppPath = Application.CurrentProject.Path
    Set MiWord = CreateObject("Word.Application")
    Set MiDoc = MiWord.Application.Documents.Open(CurrentProject.Path & "\UIPNegativo.doc")
    Set Cambio = MiWord.ActiveWindow.Selection.Find
    NovoCaminho = "C:\Word"


    With word
    Cambio.Execute "{NumEntrevistado}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!NumEntrevistado, 2
    'Cambio.Execute "{numip}", False, , , , , , , , NumIP, 2
    Cambio.Execute "{nome}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Nome, 2
    Cambio.Execute "{numano}", False, , , , , , , , NumAno, 2
    If Not IsNull(Me.NumFotoReco) Then
    Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
    End If

    If Not IsNull(Me.NumFotoReco) Then
    Cambio.Execute "{numfotoreco}", False, , , , , , , , NumFotoReco, 2
    End If

    Cambio.Execute "{delegado}", False, , , , , , , , Delegado, 2
    Cambio.Execute "{Naturezadofato}", False, , , , , , , , NaturezadoFato, 2
    Cambio.Execute "{numautores}", False, , , , , , , , NumAutores, 2
    Cambio.Execute "{datadofato}", False, , , , , , , , DatadoFato, 2
    Cambio.Execute "{data}", False, , , , , , , , Data, 2
    Cambio.Execute "{horariodofato}", False, , , , , , , , HorariodoFato, 2
    Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2

    If Not IsNull(Me.OBS) Then
    Cambio.Execute "{obs}", False, , , , , , , , OBS, 2
    End If

    Cambio.Execute "{localdofato}", False, , , , , , , , LocaldoFato, 2
    Cambio.Execute "{responsavel}", False, , , , , , , , Responsavel, 2

    'If Not IsNull(Me.Natural) Then
    'Cambio.Execute "{natural}", False, , , , , , , , Natural, 2
    'End If
    'If Not IsNull(Me.Vulgo) Then
    'Cambio.Execute "{vulgo}", False, , , , , , , , Vulgo, 2
    'End If
    'If Not IsNull(Me.Pai) Then
    'Cambio.Execute "{pai}", False, , , , , , , , Pai, 2
    'End If
    'If Not IsNull(Me.Mãe) Then
    'Cambio.Execute "{mãe}", False, , , , , , , , Mãe, 2
    'End If
    'If Not IsNull(Me.Endereço) Then
    'Cambio.Execute "{endereço}", False, , , , , , , , Endereço, 2
    'End If
    'If Not IsNull(Me.Bairro) Then
    'Cambio.Execute "{bairro}", False, , , , , , , , Bairro, 2
    'End If

    Cambio.Execute "{Docto}", False, , , , , , , , Forms!formgeral!SubEntrevistado.Form!Docto, 2
    Cambio.Execute "{delegacia}", False, , , , , , , , Delegacia, 2

    ' Salva no caminho C:\Recofoto
    Call MiDoc.SaveAs(CurrentProject.Path & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")

    ' Salva no caminho C:\Word
    'Call MiDoc.SaveAs(NovoCaminho & "\Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc")

    MiWord.Quit
    Set MiWord = Nothing
    Set MiDoc = Nothing
    Set Cambio = Nothing

    Dim w As String 'ROTINA: Abrir arquivo automaticamente após ser gerado
    Dim y As String
    w = "C:\RecoFoto\"
    y = "C:\Recofoto\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"

    ' No diretorio c:\Word
    'w = "C:\Word\"
    'y = "C:\Word\" & "Negativo_" & Forms!formgeral!SubEntrevistado.Form!NumEntrevistado & ".doc"

    Shell "C:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus
    'Shell "D:\WINDOWS\explorer.exe """ & y & "", vbNormalFocus

    'DoCmd.RunMacro "Mensagem de Final"
    End With

    Exit Sub
    TrataErro:
    If Err.Number = 13 Then
    MsgBox "Erro por falta de preenchimento Campo Obrigatório!" & vbCrLf & _
    "Verifique os campos da Entrevista ou Entrevistado !" & vbCrLf & _
    vbCrLf & "NA PRÓXIMA TELA RESPONDA NÃO!", vbDefaultButton2, "Falha ao preencer o Relatório"

    MiWord.Quit
    Set MiWord = Nothing
    Set MiDoc = Nothing
    Set Cambio = Nothing
    End If
    End Sub
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    A MsgBox acima coloquei assim, pois estava abrindo duas mensagens uma do Access e a segunda do Word, Fazendo a
    pergunta se deseja salvar o Doc modificado e tem que ser não.

    Funcionou até certo ponto, pois depois de interceptar o erro informava e avisava da segunda tela, só que essa
    tela esta abrindo por baixo do Access no Desktop e ai só que sabe acha!

    Tem como resolver isso?

    P.S Não estou sabendo usar o BBcode!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  Alexandre Neves 12/3/2013, 18:13

    Boa tarde, flecha
    Faça verificação do preenchimento antes de criar ligação com o Word. Se estiver dentro do exigível, estabelece a ligação, senão envia mensagem e não estabelece a ligação


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  flecha 12/3/2013, 18:39

    Boa Alexandre,

    Depois de postar eu tinha pensado na obrigatoriedade de preenchimento dos campos que são usados na
    mesclagem, pois já havia colocado teste no Antes de atualizar, mas achei que não ficou legal.

    Ai deixei a cor de fundo diferente para os obrigatórios, mas as vezes esquecem.

    Então acho que vou tentar fazer algo no botão de comando de mesclagem, será que aceita ?
    fazer checagem dos campos se estão preenchidos. se Ok, continua, se Não avisa que tem campo em branco.

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  Alexandre Neves 12/3/2013, 18:50

    Isso mesmo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  flecha 12/3/2013, 19:28

    Olá Srs,

    Inclui essas linhas no inicio da Sub acima:

    Dim ctl As Control
    For Each ctl In Form.Controls
    If ctl.ControlType = acTextBox Then
    If IsNull(ctl) Or Len(ctl) = 0 Then
    MsgBox "Prencha o controle " & ctl.Name, _
    vbExclamation, "Controle obrigatório"
    Exit Sub 'Cancel = True 'Cancela o evento, impedindo a atualização.
    End If
    End If
    Next

    Sai:
    Set ctl = Nothing ' Libera memória.

    Até que funciona! Más acontece que ela testa tudo até controle que esta escondido e também controles que não quero testá-los

    Será que podem me ajudar como incluir a exceções nesse teste ?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  Alexandre Neves 12/3/2013, 19:51

    Se forem mais os que não quer verificar, indique um-a-um os que deve verificar
    Se forem mais os que quer verificar, indique um-a-um os que não deve verificar
    Se forem poucos os que não quer verificar, excepcione-os
    Se forem poucos os que quer verificar, excepcione-os


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  flecha 12/3/2013, 20:45

    Senhores,

    Fiz assim e esta aparentemente funcionando, más tem duas coisas para acertar

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    'Vou antes se está preenchido os campos a serem usados
    If IsNull(Me.NaturezadoFato) = True Then

    'Caso o campo não esteja preenchido emite a mensagem abaixo
    MsgBox "Natureza do fato é de preenchimento obrigatório", vbInformation, "Atenção"

    'Em seguida direciona o foco para o campo que precisa do preenchimento
    Me.NaturezadoFato.SetFocus

    ElseIf IsNull(Me.DatadoFato) = True Then

    'Caso o Campo não esteja preenchido emite a mensagem abaixo
    MsgBox "Data do Fato é de preenchimento obrigatório", vbInformation, "Atenção"

    'Em seguida direciona o foco para o campo que precisa do preenchimento
    Me.DatadoFato.SetFocus

    ElseIf IsNull(Me.NumAutores) = True Then
    MsgBox "Número de autores é de preenchimento obrigatório", vbInformation, "Atenção"
    Me.NumAutores.SetFocus

    ElseIf IsNull(Me.HorariodoFato) = True Then
    MsgBox "Horário do fato é de preenchimento obrigatório", vbInformation, "Atenção"
    Me.HorariodoFato.SetFocus

    ElseIf IsNull(Me.LocaldoFato) = True Then
    MsgBox "Local do fato é de preenchimento obrigatório", vbInformation, "Atenção"
    Me.LocaldoFato.SetFocus

    ElseIf IsNull(Me.Responsavel) = True Then
    MsgBox "Responsável é de preenchimento obrigatório", vbInformation, "Atenção"
    'Me.Responsavel.SetFocus

    ElseIf IsNull(Me.Delegado) = True Then
    MsgBox "Delegado é de preenchimento obrigatório", vbInformation, "Atenção"
    Me.Delegado.SetFocus

    ElseIf IsNull(Me.Delegacia) = True Then
    MsgBox "Delegacia é de preenchimento obrigatório", vbInformation, "Atenção"
    Me.Delegacia.SetFocus


    ' Campos do subform

    ElseIf IsNull(Forms!formgeral!SubEntrevistado.Form!Nome) = True Then
    MsgBox "Nome do entrevistado é de preenchimento obrigatório", vbInformation, "Atenção"
    Forms!formgeral!SubEntrevistado.Form!Nome.SetFocus

    Else

    .....Instruções de mesclagem

    End IF

    End Sub

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Problemas:
    No último ElseIf que é um campo do SubForm não esta funcionando o setFocus , mas não dá erro.

    No ElseIf do Responsavel (é combox) e não aceita o comando set.focus

    Tem saída?

    OBS: O Comando de Mesclagem está no Form principal FormGeral



    Conteúdo patrocinado


    Tratamento de erro para mesclagem no Word Empty Re: Tratamento de erro para mesclagem no Word

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 09:19