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 Retornando errado

    dyl2011.programador
    dyl2011.programador
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 525
    Registrado : 08/07/2011

    [Resolvido]Função Retornando errado Empty Função Retornando errado

    Mensagem  dyl2011.programador 18/10/2011, 19:08

    Boa Tarde, a Todos.

    Tenho a seguinte função:

    Public Function AnoMesDia(dtData1 As Date) As String

    If IsNull(dtData1) Then
    AnoMesDia = 0
    Exit Function
    Else

    On Error GoTo AnoMesDia_Err

    Dim sTmp As String
    Dim nDMA As Long
    Dim NewDate As Date
    Dim sSngPlural As String
    Dim dtData2 As Date

    dtData2 = Now

    ' Bloco Ano ---------------------
    ' Calcula número inteiro de anos
    nDMA = DateDiff("yyyy", dtData1, dtData2)
    ' Se Data1+nDMA>Data2, subtrai 1 ano
    If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
    nDMA = nDMA - 1
    End If
    sSngPlural = " , "
    If nDMA > 1 Then sSngPlural = " , "
    sTmp = nDMA & sSngPlural

    ' Bloco Mês ---------------------
    ' Nova data de referência
    NewDate = DateAdd("yyyy", nDMA, dtData1)
    nDMA = DateDiff("m", NewDate, dtData2)
    ' Se Data1+nDMA>Data2, subtrai 1 mês
    If DateAdd("m", nDMA, NewDate) > dtData2 Then
    nDMA = nDMA - 1
    End If
    sSngPlural = " , "
    If nDMA > 1 Then sSngPlural = " , "
    sTmp = sTmp & nDMA & sSngPlural

    ' Bloco Dia ---------------------
    NewDate = DateAdd("m", nDMA, NewDate)
    nDMA = DateDiff("d", NewDate, dtData2)
    sSngPlural = "."
    If nDMA > 1 Then sSngPlural = "."
    sTmp = sTmp & nDMA & sSngPlural

    ' Valor final da função
    AnoMesDia = sTmp

    AnoMesDia_Fim:
    Exit Function
    AnoMesDia_Err:
    MsgBox Err.Description
    Resume AnoMesDia_Fim

    End If

    End Function


    Só que tá havendo o seguinte problema:

    Tenho duas caixas de texto

    1ª) Data Entrada
    2ª) Tempo de Casa

    Digito a data 03/01/2011 e ele me retorna -112/11/27. Alguém saberia me dizer aonde está o erro.

    Agradecido

    Adilson


    .................................................................................
    "Não há quem saiba tanto que não tenha o que aprender, e não há quem saiba tão pouco que não tenha o que ensinar".

    Blog Com vídeo-aulas grátis: http://moriabereiasolucoes.wordpress.com
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  le_lo28 18/10/2011, 20:31

    Fala ae blz?

    Vou explicar o que acontece:

    Embora você tenha declarado na função que dtData1 seja date, quando a função recebe o valor ele não passa para o código como data.

    Faça um teste após receber, formatar o valor assim:

    Código:

    Format(dtData1, "mm/dd/yyyy")

    Veja o resultado.

    Falow,


    .................................................................................
    [Resolvido]Função Retornando errado Assinaturacross
    M@rcelo
    dyl2011.programador
    dyl2011.programador
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 525
    Registrado : 08/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  dyl2011.programador 18/10/2011, 20:34

    Aonde coloco o comando citado acima?


    .................................................................................
    "Não há quem saiba tanto que não tenha o que aprender, e não há quem saiba tão pouco que não tenha o que ensinar".

    Blog Com vídeo-aulas grátis: http://moriabereiasolucoes.wordpress.com
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  le_lo28 18/10/2011, 20:42

    Você pode colocar onde chama a função:

    Código:


    anomesdia(Format(dtData1, "mm/dd/yyyy"))


    ou dentro do código:

    dtData1 = Format(dtData1, "mm/dd/yyyy")

    Falow,


    .................................................................................
    [Resolvido]Função Retornando errado Assinaturacross
    M@rcelo
    dyl2011.programador
    dyl2011.programador
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 525
    Registrado : 08/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  dyl2011.programador 18/10/2011, 20:50

    Amigão continua a mesma coisa .

    Calculei na calc do win e a dferença foi para no ano de 1899.

    Adilson


    .................................................................................
    "Não há quem saiba tanto que não tenha o que aprender, e não há quem saiba tão pouco que não tenha o que ensinar".

    Blog Com vídeo-aulas grátis: http://moriabereiasolucoes.wordpress.com
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  le_lo28 18/10/2011, 21:03

    Cara vc tem que rodar na função e não na calculadora do win!!!

    Fez o teste?

    Faça e verá o resultado!



    .................................................................................
    [Resolvido]Função Retornando errado Assinaturacross
    M@rcelo
    dyl2011.programador
    dyl2011.programador
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 525
    Registrado : 08/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  dyl2011.programador 18/10/2011, 21:05

    Sim fiz o teste Coloquei assim na fonte do controle do caixa de texto

    AnoMesDia(Format(Entrada_001, "dd/mm/yyyy"))

    E o que falei da calc é o seguinte

    na entrada_001 digitei 03/01/2011 e quando cliquei na caixa de texto tempo de casa retornou

    -112, 11, 27, ou seja calculando dá:

    o ano de 1899, entendeu

    Adilson


    .................................................................................
    "Não há quem saiba tanto que não tenha o que aprender, e não há quem saiba tão pouco que não tenha o que ensinar".

    Blog Com vídeo-aulas grátis: http://moriabereiasolucoes.wordpress.com
    dyl2011.programador
    dyl2011.programador
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 525
    Registrado : 08/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  dyl2011.programador 18/10/2011, 21:41

    Deu certo amigão.

    Mero comportamento estranho, mandei Gerenciar, compactar e reparar e funcionou.


    Brigadoooo

    Adilson


    .................................................................................
    "Não há quem saiba tanto que não tenha o que aprender, e não há quem saiba tão pouco que não tenha o que ensinar".

    Blog Com vídeo-aulas grátis: http://moriabereiasolucoes.wordpress.com
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  le_lo28 19/10/2011, 11:30

    OK.

    Apesar que você deveria ter formato a data no padrão americano e não dd/mm/yyyy.

    Agora e só esperar pra ver se não terá problema no futuro.

    O fórum agradece pelo retorno! cheers


    .................................................................................
    [Resolvido]Função Retornando errado Assinaturacross
    M@rcelo

    Conteúdo patrocinado


    [Resolvido]Função Retornando errado Empty Re: [Resolvido]Função Retornando errado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 12/5/2024, 17:58