MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido] If caixa_de_texto_da_data_de_nascimento Is Not Null Then

    Compartilhe

    rui.o.pereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 20
    Registrado : 19/01/2014

    [Resolvido] If caixa_de_texto_da_data_de_nascimento Is Not Null Then

    Mensagem  rui.o.pereira em Qui 18 Set 2014, 21:37

    pessoal,

    tenho um erro.

    Eu sei que este objecto é nulo quando dá erro...(porque estou a adicionar um registo novo)

    esta linha é de uma função que fiz para calcular a idade...

            " If caixa_de_texto_da_data_de_nascimento Is Not Null Then "

    O erro dá nesta linha..

    existe outra forma de testar se a instância existe sem dar erro
    eu usei este if justamente para evitar este erro .

    O que é que pode ser?

    Alguém tem uma sugestão pra mim?
    (Parece-me que só dá erro quando adiciono um registo novo..)

    (Antes trabalhava bem, depois comecei a inventar.....e deu nisto...)




     
    Código:
     Public Function funcao_calcula_idade(caixa_de_texto_da_data_de_nascimento As TextBox) As Integer  'Este "As Integer" diz ao compilador de Visual Basic
                                                        'que a função retorna um valor inteiro (tipo de dados a retornar é um inteiro).
        
                                        'Reparem que há uma passagem de parâmetros por valor-> o OBJECTO: "Caixa de Texto" (em inglês: "TextBox")
        
        Rem Agrupamento de Escolas de Ourém - Rui Pereira
     
        'Aqui existe uma variável (funcao_calcula_idade) com o mesmo nome da função (funcao_calcula_idade)
        'É POR ESTA MESMA VARIÁVEL QUE ESTA MESMA FUNÇÃO RETORNA UM VALOR (PARA O SITIO ONDE FOI "CHAMADA")!!!
        'Daí, se chamar FUNÇÃO!!E NÃO É UMA ROTINA OU PROCEDIMENTO
        
        'String é um tipo de dados que simboliza uma frase -> texto simples ou cadeia de carateres
        Dim texto_da_data_de_nascimento As String

        'Declaração de d_nascimento como um tipo de dados->data (Em inglês: "Date")
        Dim d_nascimento As Date
        
        'O "if" (pode levar parentesis ou não) é uma estrutura de decisão que testa a expressão à sua frente
        'há, agregadas ao "if" um conjunto de instruções que serão executadas, se o resultado da expressão booleana
        '(em frente a este if) for verdadeira, se o resultado for "TRUE"
        
        'Simplificando...Consideremos o nosso caso: (se o valor de "texto_da_data_de_nascimento" não é nulo... então...)
        'significa que não está vazio
        If caixa_de_texto_da_data_de_nascimento Is Not Null Then 'Estamos a validar se a caixa de texto existe (quando o registo é novo, não existe)
            'Aqui já estamos a atribuir a "texto_da_data_de_nascimento" o conteúdo da propriedade da caixa de texto que recebemos por parâmetro
            texto_da_data_de_nascimento = caixa_de_texto_da_data_de_nascimento.Value
            If (texto_da_data_de_nascimento <> "") Then '...Se não estiver vazio, executa o que está dentro do "if"
                If CDate(texto_da_data_de_nascimento) Then 'Vamos testar: se podemos converter o texto em data, a função "cdate"
                    d_nascimento = CDate(texto_da_data_de_nascimento) 'converter o texto em data
                    funcao_calcula_idade = (Now() - d_nascimento) / 365
                Else
                    MsgBox "Erro a converter o texto para uma data"
                    Debug.Print texto_da_data_de_nascimento
                End If
            End If
        End If
        'Como vimos antes.... o resultado da subtração é um número inteiro com casas decimais (Tipo de dados -> Double ou float)
        'Mas o tipo de dados a retornar pela função: é um INTEIRO ou seja: o valor a retornar por esta função "perde as casa decimais"
        'sendo um número inteiro, faz com que o resultado da subtração só armazena na variável: "funcao_calcula_idade" a parte inteira
        
        ' A "palavra-reservada" (KeyWord) -->"public" (permite que esta função seja chamada em qualquer sitio da base de dados)
        ' também é importante para ser disponibilizada/chamada em qualquer evento que ocorra na base de dados
    End Function


    Última edição por rui.o.pereira em Sab 27 Set 2014, 11:13, editado 2 vez(es)
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1685
    Registrado : 11/11/2009

    Re: [Resolvido] If caixa_de_texto_da_data_de_nascimento Is Not Null Then

    Mensagem  Dilson em Ter 23 Set 2014, 10:46

    Bom dia !

    Tente:
    If Not IsNull(caixa_de_texto_da_data_de_nascimento) Then

    rui.o.pereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 20
    Registrado : 19/01/2014

    Obrigado, Dilson.

    Mensagem  rui.o.pereira em Qua 24 Set 2014, 15:06

    Obrigado, Dilson.
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1685
    Registrado : 11/11/2009

    Re: [Resolvido] If caixa_de_texto_da_data_de_nascimento Is Not Null Then

    Mensagem  Dilson em Qua 24 Set 2014, 15:08

    De nada.

    Se resolveu, por gentileza marque o Resolvido.

    Abraço!

      Data/hora atual: Sab 22 Jul 2017, 17:44