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

    [Resolvido]codigo VBA encerrar registro com condição de hora

    avatar
    rlss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 19/12/2017

    [Resolvido]codigo VBA encerrar registro com condição de hora Empty [Resolvido]codigo VBA encerrar registro com condição de hora

    Mensagem  rlss em 26/9/2020, 14:48

    bom dia amigos queridos...

    sou ricardo

    olá amigos, agradecendo desde de já a todos.
    eu to com o código abaixo e não sei onde estou errando.

    criei este código com a ajuda do srs, está funcionando perfeitamente
    o código funciona da seguinte forma:
    ao clicar no botão se a condição da msg box for Yes

    insere a data no campo[data_fim] como now();
    insere sim no campo[fim];
    insere um nome no campo[encerradoPor]
    msg box "Você encerrou o turno! Iniciando o MS Outlook!"
    inicia o outlook com o anexo em pdf e o envia...

    se a condição for No

    " ,o Sr. cancelou a ação, o email não será enviado!"

    funciona perfeitamente, mas gostaria de acrescentar uma condição antes mesmo de começar executar, ex:

    se a hora do sistema for menor que a hora no campo [data_fim] então cancela ação e manda a msg box" O periodo é de 24 hrs e não pode ser encerrado antes"

    se a condição for verdadeira ai então continua a execução do código conforme abaixo;

    este é o código:

    Private Sub encerrar_turno_Click()

       
        Dim resultado As VbMsgBoxResult
        resultado = MsgBox(Forms![ConsultaQraRe subformulário1].[Qra_nome] & " ,o Sr. está logado atualmente, tem certeza que deseja encerrar este período? Não será possível abrir novamente!", vbYesNo, "Confirmando sua ação:")
        If resultado = vbYes Then
       
        Me.data_fim.Value = Now()
       
        Me.fim = True
        Me.encerradoPor = Forms![ConsultaQraRe subformulário1].[Qra_nome]
       
       
       
        MsgBox "Você encerrou o turno! Iniciando o MS Outlook!"
       
        'DoCmd.OpenReport "usuario_encarregado", acViewNormal, , , , ""'
       
        DoCmd.OpenForm "Senha- Usuario Form"
       
        Dim appOutlook As Object
        Dim olMail As Object
        Dim strArquivo As String
        Dim strLocal As String
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")

        strArquivo = "entrada e saida de pessoas e veiculos " & ".pdf"
        DoCmd.OutputTo acOutputReport, "usuario_encarregado", acFormatPDF, "C:\Intel\r.luis apostila\usuario_encarregado.pdf"
        'Verifica se Outlook está aberto. Caso não esteja, criar nova instância
        On Error Resume Next
        Set appOutlook = GetObject(, "Outlook.Application")
        If appOutlook Is Nothing Then
        Set appOutlook = CreateObject("Outlook.Application")
        End If
        On Error GoTo 0

        Set olMail = appOutlook.CreateItem(0) '0 é um item de e-mail

        With olMail
        .To = "ricardoartefinaltwo@yahoo.com.br"
        .CC = ""
        .subject = "Controle de acesso"
     
      If Not IsNull(strLocal) Then
      .Attachments.Add ("C:\Intel\r.luis apostila\usuario_encarregado.pdf")
      End If
      .body = "Olá Srs, segue Planilha Controle de acesso do dia " & Forms![user_encarregado_emissão].[data_emissão] & " iniciado pelo " & Forms![user_encarregado_emissão].[Nome_user_encarregado] & " encerrado pelo " & Forms![ConsultaQraRe subformulário1].[Qra_nome] & " em " & Forms![user_encarregado_emissão].[data_fim] & "."
     
      .Display 'Se trocar ".Send" por ".Display" ele mostra email antes de enviar
    End With

    'MsgBox "Email@ enviado com sucesso.", vbInformation, "Email"'
       

    Else
             MsgBox Forms![ConsultaQraRe subformulário1].[Qra_nome] & " ,o Sr. cancelou a ação, o email não será enviado!"
       
        End If


    End Sub


    tentei acrescentar uma condição if como segue:
    if me.data_fim > now() then

    executa o código acima

    if no
    cancela ação

    mas o resultado não foi o esperado...

    me ajudem amigos...



    obrigado amigos...
    avatar
    rlss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 19/12/2017

    [Resolvido]codigo VBA encerrar registro com condição de hora Empty Re: [Resolvido]codigo VBA encerrar registro com condição de hora

    Mensagem  rlss em 26/9/2020, 17:04

    olá amigos consegui resolver o codigo desta forma, então estou mostrando pra quem quiser segue o exemplo pode ser de grande valia:


    segue o codigo com as alterações em vermelho

    Private Sub encerrar_turno_Click()

       
        Dim resultado As VbMsgBoxResult
        resultado = MsgBox(Forms![ConsultaQraRe subformulário1].[Qra_nome] & " ,o Sr. está logado atualmente, tem certeza que deseja encerrar este período? Não será possível abrir novamente!", vbYesNo, "Confirmando sua ação:")
        If resultado = vbYes Then
        If Me.data_fim < Now() Then 'inclui aqui a condição if de comparação de data-hora menor que now então cancela'
       

       
       
        Me.data_fim.Value = Now()
       
        Me.fim = True
        Me.encerradoPor = Forms![ConsultaQraRe subformulário1].[Qra_nome]
       
       
       
        MsgBox "Você encerrou o turno! Iniciando o MS Outlook!"
       
        'DoCmd.OpenReport "usuario_encarregado", acViewNormal, , , , ""'
       
        DoCmd.OpenForm "Senha- Usuario Form"
       
        Dim appOutlook As Object
        Dim olMail As Object
        Dim strArquivo As String
        Dim strLocal As String
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")

        strArquivo = "entrada e saida de pessoas e veiculos " & ".pdf"
        DoCmd.OutputTo acOutputReport, "usuario_encarregado", acFormatPDF, "C:\Intel\r.luis apostila\usuario_encarregado.pdf"
        'Verifica se Outlook está aberto. Caso não esteja, criar nova instância
        On Error Resume Next
        Set appOutlook = GetObject(, "Outlook.Application")
        If appOutlook Is Nothing Then
        Set appOutlook = CreateObject("Outlook.Application")
        End If
        On Error GoTo 0

        Set olMail = appOutlook.CreateItem(0) '0 é um item de e-mail

        With olMail
        .To = "ricardoartefinaltwo@yahoo.com.br"
        .CC = ""
        .subject = "Controle de acesso"
     
      If Not IsNull(strLocal) Then
      .Attachments.Add ("C:\Intel\r.luis apostila\usuario_encarregado.pdf")
      End If
      .body = "Olá Srs, segue Planilha Controle de acesso do dia " & Forms![user_encarregado_emissão].[data_emissão] & " iniciado pelo " & Forms![user_encarregado_emissão].[Nome_user_encarregado] & " encerrado pelo " & Forms![ConsultaQraRe subformulário1].[Qra_nome] & " em " & Forms![user_encarregado_emissão].[data_fim] & "."
     
      .Display 'Se trocar ".Send" por ".Display" ele mostra email antes de enviar
    End With

    'MsgBox "Email@ enviado com sucesso.", vbInformation, "Email"'
       
       
       


    Else
             'inclui aqui a msg box se a condição do me.data_fim for verdadeira e ainda visualizando a data hora do campo data_fim'
             
              MsgBox "o turno não pode ser encerrado antes deste horario" & Forms![user_encarregado_emissão].[data_fim]
       
        End If
       

    Else
       
            'inclui aqui a msg box para o cancelamento (vbNo)'
             
             MsgBox Forms![ConsultaQraRe subformulário1].[Qra_nome] & " ,cancelando a ação, o email não será enviado!"

    End If 'inclui aqui o end if= me_data_fim'


    End Sub


    obrigado a todos amigos do forum!

    rlss gosta desta mensagem


      Data/hora atual: 31/10/2020, 01:39