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]Função Selmed com Limitador

    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 2/8/2017, 02:30

    Boa noite,

    Queria a valiosa ajuda de vcs mestres.
    tenho um cadastro de candidatos que pontual dependendo das condições conforme abaixo:

    Condição A) ano completo de experiência na atividade agropecuária desenvolvida no DF.

    Pontuação:
    2,0 pontos por ano comprovado
    Pontuação máxima: 30 pontos
    Limitado a 15 anos

    Condição B) ano completo de experiência na atividade agropecuária desenvolvida FORA do Distrito Federal

    Pontuação:
    1,5 pontos por ano comprovado
    Pontuação máxima: 15 pontos
    Limitado a 10 anos


    Tenho os seguintes campos da tabela Candidato:
    Nome
    CPF
    AnoExpDF = formato DATA
    AnoExpFORA = formato DATA

    Na consulta tentei fazer assim para saber se era do DF primeiramente e a diferença de anos para poder multiplicar por 2,0 na condição A.

    Usei a seguinte sintaxe na Consulta:

    TotalAno: SeImed([UF]="DF";(DifData("yyyy";[DataTempoExpDF];Agora();"")))

    Está dando: # Erro

    e em outro campo a fórmula:

    Calculo: [TotalAno]*2 está dando: # Erro

    E como que eu posso limitar à pontuação máxima e o limitador de 15 anos?
    Que coisa difícil?!
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 2/8/2017, 02:52

    Também tentei por VBA:

    Private Sub Comando40_Click()

    'se for no DF
    If Me.UF = "DF" Then
    DifData "yyyy", [DataTempoExpDF], Agora() * 2, 0

    'Limitador 15
    'Pontuação máxima 30


    'se for FORA do DF
    If Me.UF <> "DF" Then
    DifData "yyyy", [DataTempoExpFORADF], Agora() * 1, 5

    Else

    End If

    End Sub

    Também não conseguir ligar/unir todas as variáveis e transformá-las em código.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  thiagomcosta 2/8/2017, 13:05

    Olá!

    A pontuação pode ser calculada da seguinte maneira:

    Pontuacao: SeImed([UF]="DF";seimed(DifData("yyyy";[DataTempoExp];Agora())>=15;30; DifData("yyyy";[DataTempoExp];Agora())*2); SeImed(DifData("yyyy";[DataTempoExp];Agora())>=10; 15; DifData("yyyy";[DataTempoExp];Agora())*1,5))

    O algoritmo é o seguinte:
    Código:
    Se UF for "DF" então
      Se Experiencia for maior ou igual que 15 anos então
         Resultado igual a 30
      Senão
         Resultado igual a anos de experiencia vezes 2
    Senão for "DF" então
      Se Experiencia for maior ou igual que 10 anos então
         Resultado igual a 15
      Senão
         Resultado igual a anos de experiencia vezes 1,5
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 3/8/2017, 02:14

    Oi metre obrigado pela fórmula. Passei para a consulta mais gerou um erro. Mas consegui quebrar a cabeça um pouquinho e resolvi a partir da sua.
    Para escolher a UF é através de uma Combox que está vinculada a uma outra tabela de UF então troquei o DF “...SeImed([UF]="DF"...” por “1” que é o primeiro registro da tabela de UF então ficou assim:
    ...SeImed([UF]= 1 (sem aspas) e conseguiu filtrar só o que era DF. É este o pensamento mesmo?

    Outra dúvida foi o campo “DataTempoExp” que na verdade não existe na tabela. Está escrito como “DataTempoExpDF” quando for DF e outro campo “DataTempoForaDF” quando não for do DF. Resumindo: Troquei tudo para o campo “DataTempoExpDF” é esta a intenção mesmo? Ou a partir do terceiro Selmed é para usar o campo “DataTempoForaDF”?

    A outra dúvida é a seguinte: O mesmo candidato pode apresentar vários documentos diferentes que comprovem a experiência no DF. Por exemplo: Apresentou uma certidão de 2 anos no DF e também apresentou uma certidão de 10 anos no DF e depois apresentou uma declaração de 3 anos do DF. Neste caso ele teria 3 documentos pontuando para o DF. No caso daria certo com esta mesma fórmula que o Senhor me passou?
    Obrigado mais uma vez. Aprendendo muito nesta questão. Estusiasmo.
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 3/8/2017, 02:22

    Jpeg da Tabela.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  thiagomcosta 3/8/2017, 13:04

    Opa!

    Tenta entender bem o algortimo do que vocÊ precisa. Se não conseguir definir ele, dificilmente conseguirá fazer a consulta.
    Eu achei que tinha apenas um campo para a "Tempo de Experiencia", por isso deixei tudo com o mesmo nome.

    Neste caso, acho que nem é necessário colocar o filtro por UF, já que a informação provem de campos diferentes.
    Eu criaria, só para facilitar a vida, um campo PontuacaoDF, por exemplo, somente com os pontos da experiência no DF. Seria algo do tipo:
    Código:
    =seimed(DifData("yyyy";[DataTempoExpDF];Agora())>=15;30; DifData("yyyy";[DataTempoExpDF];Agora())*2)
    E outro campo PontuacaoOutros, por exemplo, que teria a pontuação de experiência fora do DF.
    Código:
    =SeImed(DifData("yyyy";[DataTempoExpFORADF];Agora())>=10; 15; DifData("yyyy";[DataTempoExpFORADF];Agora())*1,5)

    E depois somaria as duas pontuações.
    Somente cuidado, pois do jeito que esta calculando, com a diferença da data em relação à hoje, o tempo de experiência é dinâmico. Se a pessoa teve experiência de 2 anos, mas não trabalha mais na área, deste jeito a consulta vai continuar adicionando tempo de experiência cada vez que você a executar. A solução pode ser ter um campo com a quantidade de anos de experiência. Ou então ter 2 campos, inicio da experiência e término da experiência, e desta maneira calcular o tempo.

    Consegui ser claro ou confundi mais as coisas? hehe
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 3/8/2017, 21:28

    Fantástico!!!! você realmente pegou o espírito da coisa!!!!
    Foi bastante claro.

    A ideia foi brilhante. Separar os campos para DF e FORA do DF com pontuação individual.
    Vou fazer a noite em casa e te retorno amigo.

    Quanto ao tempo dinâmico que falastes. Este DifData pega precisamente o ano fechado ou arredonda para ano?
    Por exemplo: Se a data inicial for 03/08/2016 e hoje fosse 02/08/2017. O campo não poderia calcular 01 ano ainda pois faltaria um dia para completar 01 ano e pontuar se fosse o caso. Esta fórmula é para este contexto mesmo?
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  thiagomcosta 4/8/2017, 13:06

    Opa!
    Quanto à função, acho que você vai ter o que deseja se utilizar o parâmetro "d" e dividir por 365.

    Veja o que diz no help do Office sobre a utilização do parametro "yyyy" na função Datediff:
    "Ao comparar 31 de dezembro com 1º de janeiro do ano imediatamente seguinte, DateDiff para Ano ("yyyy") retornará 1, mesmo que tenha se passado apenas um dia."
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 8/8/2017, 02:26

    Fiz assim:

    Uma coluna para DF:

    Pontos no DF: Soma(SeImed([UF]=1;SeImed(DifData("yyyy";[DataTempoExpDF];Agora())>=15;30;DifData("yyyy";[DataTempoExpDF];Agora())*2)))

    Outra para FORA do DF:

    PontosForaDF: Soma(SeImed([UF]<>1;SeImed(DifData("yyyy";[DataTempoExpFORADF];Data())>=10;15;DifData("yyyy";[DataTempoExpFORADF];Data())*1,5)))


    Como posso somar isso em um Subformulário para cada candidato?
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  thiagomcosta 8/8/2017, 13:50

    Só criar uma campo somando estes dois:
    PontosTotal: [PontosnoDF] + [PontosForaDF]
    avatar
    edjunho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 24/12/2011

    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  edjunho 10/8/2017, 01:59

    Valeu tiago!!!! Obrigado pela preciosa ajuda.

    Conteúdo patrocinado


    [Resolvido]Função Selmed com Limitador Empty Re: [Resolvido]Função Selmed com Limitador

    Mensagem  Conteúdo patrocinado


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