Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#60711
Boa Noite a Todos!

Pessoal, estou com uma inconsistência no código aonde preciso validar os campos Data Inicial e Data Final do Processo para que não permita gravar quando a Data FINAL for Menor que a Data INICIAL. Porém existe alguns critérios conforme cenário abaixo, estou utilizando uma Tela com formulário VBA e já faço Validação de Dados diretamente nele aonde o campo Data Inicial é campo Obrigatório ou seja sempre vai ter que existir e tah funcionando perfeitamente.

Cenário

1) O Sistema deve permitir gravar o registro se a Data Inicial for informada e data final esteja em branco;

2) O Sistema deve permitir gravar o registro se a Data Inicial for igual a Data Final do Processo;

3) O Sistema deve permitir gravar o registro se a Data Inicial for Menor que Data Final do Processo;

4) O Sistema deve bloquear e demonstrar a mensagem que o valor do campo Data Final do Processo é MENOR que a data Final do Processo.

Com o código abaixo, estou conseguindo efetuar tudo, porém descobrir uma inconsistência que o sistema está permitindo gravar quando a Data Final do Processo Menor quando não deveria e isso ocorre quando é data Futura após o período atual, exemplo:

Hoje 22/11/2020 - Estou lançando Data Inicial do Processo 15/12/2020 e Data Final do Processo 01/11/2020, nesta caso o sistema não bloqueou e deixou passar, não sei porque.

Agradeço antecipadamente a todos

Sérgio Luiz





Código VBA

Private Sub CommandButton1_Click()

' Chama função Validação dos Campos Vazio do Formulário no Registro de Processo que são Obrigatórios de preenchimento
If CampoVazio(frmProcessos) = True Then Exit Sub



' Linha aonde ocorre a inconsistência - Validação do campo Data Final do Processo que não pode ser Menor que a Data Inicial do Processo

If caixa_dtfimproc.Text <> "" And caixa_dtfimproc.Text <> "" Then

If caixa_dtfimproc < caixa_dtiniproc Then

MsgBox ("Data Fim do Processo: " & caixa_dtfimproc & " não pode ser MENOR que a data Inicial do Processo: " & caixa_dtiniproc), vbInformation, "Validação Data Processoo"

Exit Sub

End If
End If
#60721
Olá, Sérgio.

Talvez o comando abaixo não seja a causa do problema mas me parece que ele está incorreto, pois está duplicado o teste de caixa_dtfimproc.
If caixa_dtfimproc.Text <> "" And caixa_dtfimproc .Text<> "" Then

Deveria ser ~~~> If caixa_dtfimproc.Text <> "" And caixa_dtiniproc .Text <> "" Then

Se não resolver então eu sugiro que você disponibilize uma amostra do seu arquivo Excel na forma em que o problema ocorre.
servercold agradeceu por isso
#60724
Bom Dia ,
Obrigado pelo Feedback, consegui encontrar o problema.

na linha
If caixa_dtfimproc < caixa_dtiniproc Then

efetuei as alterações utilizando o CDate

If CDate(caixa_dtfimproc) < CDate(caixa_dtiniproc) Then

Com essas alterações todos os critérios estão funcionando perfeitamente, inclusive quando lançamento o registro com Data Inicial Futura ao mês vigente da Comptência.

Muito obrigado pela atenção, fico grato.

osvaldomp escreveu: 22 Nov 2020 às 21:48 Olá, Sérgio.

Talvez o comando abaixo não seja a causa do problema mas me parece que ele está incorreto, pois está duplicado o teste de caixa_dtfimproc.
If caixa_dtfimproc.Text <> "" And caixa_dtfimproc .Text<> "" Then

Deveria ser ~~~> If caixa_dtfimproc.Text <> "" And caixa_dtiniproc .Text <> "" Then

Se não resolver então eu sugiro que você disponibilize uma amostra do seu arquivo Excel na forma em que o problema ocorre.
osvaldomp agradeceu por isso
#60741
O problema já foi resolvido utilizando o CDate, já testei e esta tudo funcionado a questão da lógica duplicando na condição eu já corrigir também, porém a causa do problema foi essa mesmo abaixo, obrigado pela atenção

If CDate(caixa_dtfimproc) < CDate(caixa_dtiniproc) Then



servercold escreveu: 23 Nov 2020 às 07:53 Bom Dia ,
Obrigado pelo Feedback, consegui encontrar o problema.

na linha
If caixa_dtfimproc < caixa_dtiniproc Then

efetuei as alterações utilizando o CDate

If CDate(caixa_dtfimproc) < CDate(caixa_dtiniproc) Then

Com essas alterações todos os critérios estão funcionando perfeitamente, inclusive quando lançamento o registro com Data Inicial Futura ao mês vigente da Comptência.

Muito obrigado pela atenção, fico grato.

osvaldomp escreveu: 22 Nov 2020 às 21:48 Olá, Sérgio.

Talvez o comando abaixo não seja a causa do problema mas me parece que ele está incorreto, pois está duplicado o teste de caixa_dtfimproc.
If caixa_dtfimproc.Text <> "" And caixa_dtfimproc .Text<> "" Then

Deveria ser ~~~> If caixa_dtfimproc.Text <> "" And caixa_dtiniproc .Text <> "" Then

Se não resolver então eu sugiro que você disponibilize uma amostra do seu arquivo Excel na forma em que o problema ocorre.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord