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]Aviso 30 dias do vencimento

    julianovv
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 619
    Registrado : 14/12/2010

    [Resolvido]Aviso 30 dias do vencimento Empty [Resolvido]Aviso 30 dias do vencimento

    Mensagem  julianovv em 11/11/2018, 00:15

    Boa noite, estou com uma consulta de associados e cada um possui uma data de vencimento. Estou tentando inserir uma expressão para criar uma mensagem para cada um deles avisando 30 dias antes do vencimento. A expressão seria baseada no campo 'DataVencimento' (formato Data Abreviada) e não na data atual. As tabelas ainda não tem dados, exceto os de exemplo para testes.
    Obrigado!

    No


    .................................................................................
    Juliano

    Uso o Access 2007 no XP Professional SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - LG Led LCD 20M35PD - Impressora Epson T33 - Scanner Bright.
    Smile
    vieirasoft
    vieirasoft
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7305
    Registrado : 11/05/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Re: [Resolvido]Aviso 30 dias do vencimento

    Mensagem  vieirasoft em 11/11/2018, 00:49

    Na consulta, crie um campo novo. Dê-lhe o nome, por exemplo: Resultado.
    Coloque assim:
    Resultado: DifData("d";Data();[seucampodata])

    No critério deste campo, coloque

    <=30 E >0 ' queremos que o valor seja igual ou menor que 30 e, como é óbvio, maior que 0, para que não sejam retornados valores negativos

    E no formulário

    Terá uma DatadeInício em que foi emitido o documento

    e a data DataVencimento do documento

    Vamos tentar fazer isto de uma forma muito simples. Coloque no formulário uma caixa de texto desvinculada e não visível. Chame-a de txtResultado, por exemplo.
    Agora, vá à aba acontecimento e no procedimento "No Actual", digite assim:

    Private Sub Form_Current()
    Dim i As Integer
    Dim theDate As Date

    If IsDate(Me.txtDataVencimento) And Not IsNull(Me.txtDataVencimento) Then
    theDate = Me.txtDatancimento
    If Me.txtResultado <= 60 And Me.txtResultado > 0 Then
    i = MsgBox("Faltam: " & DateDiff("d", Now, theDate) & "...dias para vencimento do documento", vbInformation, "Aviso")
    End If
    End If
    End Sub
    julianovv
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 619
    Registrado : 14/12/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Res: Aviso 30 dias do vencimento

    Mensagem  julianovv em 11/11/2018, 14:04

    Oi vieirasoft. Deu quase certo. Deu 19 dias, ou seja, 19 dias para o dia 30. No caso, o vencimento do associado é dia 30/11/2018 e iria aparecer no corpo do email no dia 12/11, sendo que o correto seria dia 29 ou 30/10. O 'Data()' não corresponde ao dia de hoje?

    Criei o alias 'Aviso30dias' no campo da consulta e ficou assim:

    Aviso30dias: DifData("d";Data();[DataVencimento])

    E no critério usei o <=30 E >0

    Criei outro alias, dessa vez com o texto que será exibido na caixa de texto do corpo do email:

    No cadastro do associado tem o sexo, então criei um texto que acompanhasse o gênero dele.

    MensAvisos: ((SeImed([Sexo]="Masculino";"Prezado Sr.";"Prezada Sra.") & " " & ([Nome]) & " " & ", esta mensagem é para avisá-lo que seu vencimento é no dia" & " " & [DataVencimento] & "" & "."))

    E não será só 30 dias antes mas 15 dias também e deverão estar inseridos na mesma expressão.
    E pra piorar só podem aparecer no corpo do email nos dias indicados.

    Obrigado pelo retorno.

    Smile


    .................................................................................
    Juliano

    Uso o Access 2007 no XP Professional SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - LG Led LCD 20M35PD - Impressora Epson T33 - Scanner Bright.
    Smile
    vieirasoft
    vieirasoft
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7305
    Registrado : 11/05/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Re: [Resolvido]Aviso 30 dias do vencimento

    Mensagem  vieirasoft em 11/11/2018, 14:43

    Meu caro, a diferença de dias não é um erro. Se tiver estudado o código, irá verificar que o mesmo faz uma contagem regressiva.

    Aviso30dias: DifData("d";Data();[DataVencimento])

    E no critério usei o <=30 E >0  ou seja, o critério para aviso será 30 dias antes da data do término do vencimento. Acabo por não perceber o que pretende, pois é assim que deve ser, vai avisando até ser dado como pago ou o valor da variável for igual a 0.

    Se não quer que haja mais alertas, faça um update na Consulta. Crie um campo SIM/NÃO e chame-o de Enviado. No critério do campo coloque Sim, para que seja dado como enviado.
    CurrentDb.Execute "UPDATE MINHAConsulta SET Enviado=-1 WHERE ID=" & ID & "" ' Desta forma Atualiza o Status para 'Enviado" e interrompe a contagem

    Ou, em alternativa

    Por exemplo, se quer que o aviso seja exclusivo no próprio dia do vencimento, ao Abrir do form:

    Dim i As String
    Me.DataVencimento.SetFocus
    If Me.DataVencimento = Date Then
    i = MsgBox("Vencido Hoje", vbInformation, "Aviso")
    End If
    julianovv
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 619
    Registrado : 14/12/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Res: Aviso 30 dias do vencimento

    Mensagem  julianovv em 15/11/2018, 10:15

    Bom dia vieirasoft. Obrigado mas não funcionou. Essa expressão limitou todos os outros resultados na consulta. Mudei o 30 para 15 para pegar os últimos 15 dias e não funcionou. As outras expressões, inclusive da data de hoje igual a do vencimento também não.

    Passei a usar a expressão que não causou nenhum conflito com as outras:

    Data30: (Data()=[DataVencimento]-29)

    Todas elas ficaram assim:

    Data30: (Data()=[DataVencimento]-29) - Para retornar 30 dias antes.
    Data15: (Data()=[DataVencimento]-14) - Para retornar 15 dias antes.
    VenceHoje: (Data()=[DataVencimento]) - Para retornar o dia de hoje.
    Emdebito: (Data()=[DataVencimento]+15) - Para retornar 15 dias depois.

    Obrigado!

    Wink


    .................................................................................
    Juliano

    Uso o Access 2007 no XP Professional SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - LG Led LCD 20M35PD - Impressora Epson T33 - Scanner Bright.
    Smile
    vieirasoft
    vieirasoft
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7305
    Registrado : 11/05/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Re: [Resolvido]Aviso 30 dias do vencimento

    Mensagem  vieirasoft em 15/11/2018, 11:35

    Bom dia. Não entendi o não funcionar e conflitos. O que lhe passei faz o mesmo. seria avisado 30 dias antes,ou 15 dias antes, assim como o código para o dia actual funciona a 100% no evento "No Actual" do formulário. E não
    limita os campos nem cria conflitos, a não ser que esteja a usar outras datas ou critérios na mesma consulta que pudessem criar os tais conflitos??? Mas, se resolveu, usando apenas os critérios na consulta,óptimo, é o que nos interessa. O Fórum agradece o retorno. Bom trabalho
    julianovv
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 619
    Registrado : 14/12/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Res: Aviso 30 dias do vencimento

    Mensagem  julianovv em 16/11/2018, 12:16

    Bom dia vieirasoft. Sim, a expressão funcionou mas me retornou a contagem dos dias - o que poderá ser útil em outras consultas, mas eu precisava de 15 e 30 em datas exatas. Quanto inseri essa expressão em outras expressões para exibir essas datas, deu erro no resultado mostrando números que não condiziam com a data do vencimento e quando fui calcular as outras datas, como a data vencendo hoje, o nome do associado não apareceu na lista.
    Fiz assim:

    [DataVencimento] - [Aviso30dias]

    Que correspondem ao campo DataVencimento e o Alias com a expressão DifData("d";Data();[DataVencimento])

    Acabei optando pelas outras mais simples e que me davam as datas exatas.
    Ela será bem vinda em outras consultas.
    Obrigado!

    Wink


    Última edição por julianovv em 16/11/2018, 12:59, editado 1 vez(es)


    .................................................................................
    Juliano

    Uso o Access 2007 no XP Professional SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - LG Led LCD 20M35PD - Impressora Epson T33 - Scanner Bright.
    Smile
    vieirasoft
    vieirasoft
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7305
    Registrado : 11/05/2010

    [Resolvido]Aviso 30 dias do vencimento Empty Re: [Resolvido]Aviso 30 dias do vencimento

    Mensagem  vieirasoft em 16/11/2018, 12:54

    Ok, como eu disse; o que interessa é que resolveu. Obrigado pelo retorno.

      Data/hora atual: 23/10/2020, 08:41