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


3 participantes

    [Resolvido]Regra de Validação Global para vários formulários

    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 6/7/2018, 04:01

    Se um banco de dados possui vários formulários, como posso fazer um código para regra
    de validação para campos em vários formulários?
    Por exemplo, todo mês tenho que fazer formulário por formulário, ir no campo data e na regra de validação colocar
    que aceite lançamentos entre datas    >=#01/07/2018# E <=#31/07/2018#  
    Ainda se possível, se digitar fora destas datas, não aceite o lançamento e tenha uma mensagem avisando
    que está fora das datas estabelecidas.
    Desde já agradeço a ajuda de todos!


    Última edição por Carlos Cruz em 22/7/2018, 21:58, editado 2 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 9/7/2018, 00:18

    Olá Carlos,

    Essa regra é sempre em função do mês corrente (sistema)?
    A partir de 01 de agosto vai ser:

    >=#01/08/2018# E <=#31/08/2018

    Ou pode variar ?

    Abraço
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 9/7/2018, 01:08

    Obrigado pelo retorno ahteixeira!
    Poderá ser do mês corrente do sistema, mas eu gostaria de não precisar todo mês atualizar as regras nos campos de vários formulários ou tabelas!
    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 11/7/2018, 16:49

    Olá Carlos Cruz,

    Veja se é o pretendido, código utilizado:
    Código:

    Private Sub cmdValidar_Click()
        'ahteixeira 2018 para maximoaccess
        'requer função SetFieldValidation
        
        If IsDate(Me.txtDataInicial) And IsDate(Me.txtDataFinal) Then
            Dim strDatas As String
            strDatas = ">=#" & CDate(Me.txtDataInicial) & "# AND <=#" & CDate(Me.txtDataFinal) & "#"
            Call SetFieldValidation("tbl_Recibos", "DataRecibo", strDatas, "A data permitida deve ser de " & Me.txtDataInicial & " até " & Me.txtDataFinal)
        Else
            MsgBox "Deve definir duas datas.", vbInformation, ""
        End If
    End Sub

    Function SetFieldValidation(strTblName As String, strFldName As String, strValidRule As String, strValidText As String) As Integer
    '    'ahteixeira 2018 para maximoaccess
        
        Dim dbs As Database, tdf As TableDef, fld As Field

        Set dbs = CurrentDb
        Set tdf = dbs.TableDefs(strTblName)
        Set fld = tdf.Fields(strFldName)
        
        fld.ValidationRule = strValidRule
        fld.ValidationText = strValidText
        
        Set fld = Nothing
        Set tdf = Nothing
        Set dbs = Nothing
        
        MsgBox "Datas definidas como regra de validação.", vbInformation, ""
    End Function

    Abraço


    Última edição por ahteixeira em 24/7/2018, 11:21, editado 1 vez(es) (Motivo da edição : Exemplo mais completo na mensagem nº 18)
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 12/7/2018, 01:57

    Olá ahteixeira.
    Encontrei um problema ! Está enviando para tabela tbl_Recibos no campo DataRecibo na regra de validação formato:
    data inicial mm/dd/aaaa e para data final dd/mm/aaaa.
    Já coloquei formato dd.mm.aaaa nas tabelas, nos formulários e não resolve.
    No código e função que voce criou eu não localizei onde alterar este detalhe.
    Gostaria que em todos os campos fique dd.mm.aaaa.

    Demais funcionamentos do código está perfeito, atende exatamente o que preciso.

    Desde já agradeço se puder corrigir este detalhe, muito obrigado!

    Abraço
    Carlos
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 12/7/2018, 12:13

    Olá Carlos Cruz,

    Obrigado pelo retorno, fico feliz pela solução ser o que pretende!

    Quanto à questão acho que está relacionado com a passagem da data.
    O MSAccess em certos casos é muito "patriota", devemos passar a data à "Americana", veja tópico abaixo outro caso:
    https://www.maximoaccess.com/t23702-resolvidoformato-de-data-troca-dia-por-mes

    Onde tem:
    Código:
    strDatas = ">=#" & CDate(Me.txtDataInicial) & "# AND <=#" & CDate(Me.txtDataFinal) & "#"

    altere por:
    Código:
    strDatas = ">=#" & Format(CDate(Me.txtDataInicial), "mm/dd/yyyy") & "# AND <=#" & Format(CDate(Me.txtDataFinal), "mm/dd/yyyy") & "#"

    Abraço
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty (Resolvido)Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 12/7/2018, 14:54

    Amigo ahteixeira !
    Muito, mas muito obrigado mesmo, funcionou perfeitamente.
    Também agradeço sua rapidez nas respostas, com clareza e objetividade. Parabéns pelos conhecimentos e experiências que você tem e por repassar para outras pessoas, nos ensinando com muita dedicação e paciência!
    Também agradeço a todos do fórum Máximo Access, por nos dar este meio de comunicação mundial, de excelente qualidade e facilidade!
    Coloco-me a disposição de todos naquilo que tiver ao meu alcance e poder ajudá-los !

    Um grande abraço a todos !
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 12/7/2018, 15:26

    Olá Carlos Cruz,

    Obrigado pelo retorno, são palavras bastante gratificantes!
    A razão do fórum MaximoAccess é a inter-ajuda e partilha do conhecimento.

    Abraço
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 19/7/2018, 15:18

    Amigo ahteixeira, continuando com meus estudos, outras necessidades apareceram, tentei solucionar, mas não consegui ! Se puder novamente me ajudar, desde já agradeço !


    Nas linhas If IsDate + strDatas + Call  estão digitadas para campos formato datas, o que muda na função para utilizar campos com formato número ?  Nova tab com campo numérico a ser utilizada    "tbl2_Pedidos",     "NrRecibo

    Código:
    strDatas = ">=#" & Format(CDate(Me.txtDataInicial), "mm/dd/yyyy") & "# AND <=#" & Format(CDate(Me.txtDataFinal), "mm/dd/yyyy") & "#"

    Call SetFieldValidation("tbl_Recibos", "DataRecibo", strDatas, "A data permitida deve ser de " & Me.txtDataInicial & " até " & Me.txtDataFinal)

    Muito Obrigado.
    Abraço
    Carlos


    Última edição por Carlos Cruz em 19/7/2018, 18:18, editado 1 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 19/7/2018, 15:50

    Olá Carlos Cruz,

    Não sei se compreendi bem a questão.
    Mas se quer adicionar a mesma regra de validação para o campo DataPedido da tabela tbl2_Pedidos, adicione mais um "call", ficando assim:

    Código:
            strDatas = ">=#" & Format(CDate(Me.txtDataInicial), "mm/dd/yyyy") & "# AND <=#" & Format(CDate(Me.txtDataFinal), "mm/dd/yyyy") & "#"

        Call SetFieldValidation("tbl_Recibos", "DataRecibo", strDatas, "A data permitida deve ser de " & Me.txtDataInicial & " até " & Me.txtDataFinal)
        Call SetFieldValidation("tbl2_Pedidos", "DataPedido", strDatas, "A data permitida deve ser de " & Me.txtDataInicial & " até " & Me.txtDataFinal)

    Se não for isso, informe melhor.
    Abraço
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 19/7/2018, 16:24

    Na sua função está funcionando perfeitamente para campos com formato datas dd/mm/aaaa.
    Gostaria de ter a mesma função, porém para campos da tabela com formato numero!
    Por isso criei outra tabela com campo formato número "tbl2_Pedidos", "NrRecibo

    Se não entendeu, me perdoe. Me informe, tentarei explicar melhor com exemplo mais prático.

    Muito obrigado, abraço
    Carlos
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 19/7/2018, 16:55

    Olá,

    Agora entendi, estou no celular mas vou descrever.

    Ajuste no form para numero inicial e numero final
    Crie no código a strNumero
    Na strNumero será sem o cardinal, format e conversão
    Depois mais um call.. Resperivo campo, tabela e a condição strNumero

    Abraço
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 19/7/2018, 22:03

    Olá amigo Teixeira, desculpe incomodá-lo novamente.
    Já ajustei nos for e tab os campos envolvidos no código para formato número.
    Coloquei os códigos, mas estou fazendo algo errado e não sei exatamente onde.
    Anexei o banco de dados, se você puder verificar os códigos e me ajudar, desde já agradeço.

    Obrigado
    Carlos
    Anexos
    [Resolvido]Regra de Validação Global para vários formulários AttachmentRegraValidacaoNr.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (47 Kb) Baixado 14 vez(es)


    Última edição por Carlos Cruz em 20/7/2018, 15:03, editado 1 vez(es)
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3492
    Registrado : 13/12/2016

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alexandre Fim 19/7/2018, 23:42

    la Carlos Cruz,

    Fiz um pequeno exemplo sobre a sua necessidade.
    Acredito que seja isto:

    [Resolvido]Regra de Validação Global para vários formulários Vigenc10

    Seguem os objetos criados no sistema

    1 - Tabela de vigência com data inicio e data fim
    2 - Modulo com função "fnDefinirVigencia", que carrega 2 variáveis globais das data acima, que será utilizada por todo o sistema.
    3 - Macro "Autoexec" que executa a função "fnDefinirVigencia", na abertura do sistema.
    4 - Tela de Recibo de pagamento, com validação da data do recibo sobre a vigencia.



    Segue exemplo pra sua avaliação.

    Espero ter ajudado.

    []'s
    Anexos
    [Resolvido]Regra de Validação Global para vários formulários AttachmentRegraValidacaoNr.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (45 Kb) Baixado 27 vez(es)
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 20/7/2018, 17:48

    Obrigado Alexandre Fim. Irei verificar seu exemplo.
    ahteixeira já me ajudou fazendo um código para limitar dd/mm/aaaa que era exatamente o que eu precisava.
    Agora preciso alterar o código para limitar número, praticamente é o mesmo código, muito parecido, que eu não consegui alterá-lo.
    Acredito que ahteixeira me ajudará novamente dando retorno para mim sobre como alterar o código.
    Eu também darei retorno para voce sobre o código que voce postou.
    Desde já agradeço
    Abraço
    Carlos
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3492
    Registrado : 13/12/2016

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alexandre Fim 20/7/2018, 17:52

    Ok...valeu...
    Boa sorte
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 22/7/2018, 13:31

    ahteixeira, tentei usar suas dicas: abaixo:
    Ajuste no form para numero inicial e numero final
    Crie no código a strNumero
    Na strNumero será sem o cardinal, format e conversão
    Depois mais um call.. Resperivo campo, tabela e a condição strNumero

    Mas tenho dificuldades com o código, está o b.d. na postagem da mensagem 13, falta somente ajustar o código.

    Obrigado
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 24/7/2018, 11:20

    Olá a todos,

    Alexandre Fim, parabéns, outra forma de obter o mesmo resultado, como diz o nosso grande JPaulo "existe muitas maneiras de fazer Nestun".

    Carlos Cruz, mostrei o caminho das pedras, seria aplicar a mesma técnica, veja como ficou:
    Código:
    Private Sub cmdValidar_Click()
        'ahteixeira 2018 para maximoaccess
        'requer função SetFieldValidation
        
        If IsDate(Me.txtDataInicial) And IsDate(Me.txtDataFinal) Then
            Dim strDatas As String
            strDatas = ">=#" & Format(CDate(Me.txtDataInicial), "mm/dd/yyyy") & "# AND <=#" & Format(CDate(Me.txtDataFinal), "mm/dd/yyyy") & "#"
            Call SetFieldValidation("tbl_Recibos", "DataRecibo", strDatas, "A data permitida deve ser de " & Me.txtDataInicial & " até " & Me.txtDataFinal)
        Else
            MsgBox "Deve definir duas datas.", vbInformation, ""
        End If
    End Sub

    Private Sub cmdValidarNr_Click()
        If IsNumeric(Me.txtNrInicial) And IsNumeric(Me.txtNrFinal) Then
            Dim strRegra As String
            strRegra = ">=" & Me.txtNrInicial & " AND <=" & Me.txtNrFinal
            Call SetFieldValidation("tbl_Recibos", "NrRecibo", strRegra, "Só permite números de " & Me.txtNrInicial & " até " & Me.txtNrFinal)
        Else
            MsgBox "Deve definir dois números.", vbInformation, ""
        End If

    End Sub

    Function SetFieldValidation(strTblName As String, strFldName As String, strValidRule As String, strValidText As String) As Integer
    '    'ahteixeira 2018 para maximoaccess
        
        Dim dbs As Database, tdf As TableDef, fld As Field

        Set dbs = CurrentDb
        Set tdf = dbs.TableDefs(strTblName)
        Set fld = tdf.Fields(strFldName)
        
        fld.ValidationRule = strValidRule
        fld.ValidationText = strValidText
        
        Set fld = Nothing
        Set tdf = Nothing
        Set dbs = Nothing
        
        MsgBox "Operação concluída!", vbInformation, ""
    End Function

    Abraço a todos
    Anexos
    [Resolvido]Regra de Validação Global para vários formulários AttachmentRegraValidacaoDataNumero.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (26 Kb) Baixado 21 vez(es)
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3492
    Registrado : 13/12/2016

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alexandre Fim 24/7/2018, 13:13

    Sem dúvida, caro ahteixeira.

    Este fórum é uma excelente fonte de conhecimento, onde colaboradores (com menos ou mais expertise), se propõe em ajudar a solucionar as dúvidas desta ferramenta.

    Você é o cara que faz a diferença !!!

    Um abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 24/7/2018, 13:42

    Olá Alexandre,

    Obrigado pelas palavras, mas este fórum é uma grande "família" de inter ajuda e partilha de conhecimento!

    Ficamos aguardar o retorno do colega Carlos Cruz.

    cheers
    avatar
    Carlos Cruz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 26/02/2014

    [Resolvido]Regra de Validação Global para vários formulários Empty [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Carlos Cruz 24/7/2018, 18:00

    Amigos Ahteixeira & Alexandre Fim, vocês superaram, foram além do que eu precisava, dedicaram tempo, respeito e muita paciência.
    Obrigado ao fórum e a vocês por trocar conhecimentos e experiências !
    Coloco-me a disposição de todos no que eu puder ajudar !

    Abraço a todos !
    Carlos Cruz
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3492
    Registrado : 13/12/2016

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alexandre Fim 24/7/2018, 18:33

    Carlos Cruz,
    O fórum agradece.
    Muito sucesso na sua empreitada e bons estudos.

    Abraço

    Alexandre Fim
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Alvaro Teixeira 24/7/2018, 21:45

    cheers

    Conteúdo patrocinado


    [Resolvido]Regra de Validação Global para vários formulários Empty Re: [Resolvido]Regra de Validação Global para vários formulários

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 23:23