MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    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


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    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.

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    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!


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

      Data/hora atual: Dom 04 Dez 2016, 20:20