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

    [Resolvido]Erro ao executar AddNew

    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty [Resolvido]Erro ao executar AddNew

    Mensagem  gumz 8/1/2012, 03:58

    Bom dia, amigos

    Estou tentando atualizar uma tabela a partir da tabela de emails recebidos no Outlook para gerenciar minha caixa de entrada. Consegui fazer algo pesquisando bastante, mas estrou com uma dúvida que pode parecer simples, mas já tentei resolver e não consegui.

    Minha tabela é atualizada cada vez que chega uma mensagem nova no Outlook. Cada mensagem possui uma "UniqueID" - que é a chave primária das mesmas. Estou usando AddNew para adicionar cada mensagem nova que chega, e quando bate com a chave primária dá mensagem de erro, mas adiciona-as. Gostaria de suprimir esta mensagem de erro ou fazer com que compare-se os registros já existentes com os novos e adicione-se somente estes novos.

    Estou usando o seguinte (somente a parte do AddNew):

    Código:
      adoConn.Open "DSN=OutlookData;"
      adoRS.Open "SELECT * FROM email", adoConn, adOpenDynamic, adLockOptimistic
     
      'Cycle through selected folder.
      For intCounter = objFolder.Items.Count To 1 Step -1
      With objFolder.Items(intCounter)
     
      'Copy property value to corresponding fields
      'in target file.
     
      If .Class = olMail Then

    adoRS.AddNew
          adoRS("Subject") = .Subject
          adoRS("entryid") = .EntryID
          adoRS("FromName") = .SenderName
          adoRS("FromAddress") = .SenderEmailAddress
         
          adoRS.Update
         
        End If
        End With
      Next

    Alguém podendo dar um auxílio, agradeço desde já.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  Convidado 8/1/2012, 05:53

    Boa noite colega gumz....
    No form no evento "ao ocorres erro" cole esta função

    Response = acDataErrContinue 'inibe msg padrão do access.
    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  gumz 9/1/2012, 15:34

    Grato pela resposta, cafpr.

    Mas na verdade, estou usando uma rotina para exportar os e-mails que chegam no Outlook para uma tabela do Access, então não há um evento ao ocorrer erro pelo Access, e sim pelo Outlook, mas a linguagem é a mesma - o código agora está funcionando que é uma beleza.

    Suprimo o erro adicionando "OnError Resume Next" - daí meu problema some. O que me está atrapalhando agora é o seguinte: O erro é suprimido mas não consigo puxar o último registro, sempre vai somente até o penúltimo registro. O último registro só é recebido na próxima exportação, quando fica novamente, um registro de fora.

    Onde devo inserir esta linha, "OnError Resume Next"? Ou como eu faria um loop que refizesse uma única vez as linhas acima do código?

    Parte de meu código é o seguinte:

    '---------------
    adoRS.AddNew
    On Error Resume Next

    adoRS("EntryID") = .EntryID
    adoRS("Subject") = .Subject
    adoRS("FromAddress") = .SenderEmailAddress
    adoRS("FromName") = .SenderName
    adoRS("Body") = .Body
    adoRS("Recebida") = .ReceivedTime

    adoRS.Update


    End If
    End With

    Next

    adoRS.Close

    Set adoRS = Nothing
    Set adoConn = Nothing
    Set ns = Nothing
    Set objFolder = Nothing

    End Sub



    Desde já, agradeço o auxílio.




    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty Erro ao executar AddNew

    Mensagem  gumz 10/1/2012, 18:16

    Continuo com o mesmo problema da mensagem acima.

    Seria possível fazer com que o código se repetisse para que fosse executado novamente, e assim, talvez, os dados sejam inseridos na tabela?
    avatar
    Convidad
    Convidado


    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  Convidad 10/1/2012, 19:00

    Altere de 1 para 0

    For intCounter = objFolder.Items.Count To 0 Step -1
    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  gumz 10/1/2012, 19:16

    Olá, Mário

    Tenho mesmo uma linha do tipo, mas mesmo mudando, a situação permanece. Só tenho até o penúltimo registro até a próxima atualização...
    avatar
    Convidad
    Convidado


    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  Convidad 10/1/2012, 19:36

    veja deste modo

    For intCounter = objFolder.Items.Count -1 To 0 Step -1

    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  gumz 10/1/2012, 22:22

    Dá na mesma... Acredito que o problema seja com a questão da supressão do erro - no caso, a adição do On Error Resume Next. Esta função suprime o erro que dá quando se tenta se adicionar mais de um registro com a mesma chave primária. Não estou conseguindo compreender porque justo o último registro não é adicionado.

    Mário, A função de importar todos os registros está funcionando bem. O negócio é que preciso que haja uma chave primária para que não haja repetimento de registros, ou fazer com que somente os novos registros sejam adicionados.

    Vou tentar um loop por aqui e ler mais sobre o AddNew e On Error e dou um retorno aqui.

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  Alexandre Neves 11/1/2012, 15:11

    Boa tarde, gumz

    Ao adicionar um registo, não acrescente a chave primária, pois o Access atribuir-lha-á automaticamente.
    gumz
    gumz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 30/07/2011

    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  gumz 11/1/2012, 16:28

    Olá, Alexandre!

    A rotina que estou utilizando funciona da seguinte forma: Outlook recebe a mensagem > exporta todas as mensagens para o bd principal, sem exceção. Como toda vez a exportação é feita toda duma vez, e não somente dos novos e-mails, precisei definir como chave primária este campo, EntryID, senão seria tudo sobreposto e eu teria vários registros repetidos.

    No geral, a exportação é feita corretamente, faltando somente a última mensagem e ainda não encontrei o porquê. Se eu receber 100 mensagens, 99 são exportadas e uma fica faltando, a última, por conta do Resume Next. Se eu remover o Resume Next, a janela de erro de chave primária aparece, clico em OK e tudo, sem exceção, é exportado.

    Não tive tempo de rever e ajustar este erro ainda pois o Outlook está em outra máquina, no servidor principal. Agradeço quaisquer sugestões, e havendo algum avanço por aqui, dou retorno.

    Conteúdo patrocinado


    [Resolvido]Erro ao executar AddNew Empty Re: [Resolvido]Erro ao executar AddNew

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 08:25