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

    Campo Data vazio

    Compartilhe

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Campo Data vazio

    Mensagem  alantb em 11/10/2018, 03:17

    Olá pessoal, tenho um formulário de cadastro no Acccess2016 com nove(9) campos. Especificamente dentre eles, tenho dois campos tipo Data/Hora que recebem datas no formato dd/mm/yyyy e outro tipo Número. Em 99% dos cadastros estes campos recebem valores. Entretanto haverá situações em que não será necessário o preenchimento destes três campos, só o restante. Abrindo diretamente a tabela se vê os dados lá gravados. Porém percebi que se deixo estes campos em branco, não consigo exibir esses registros em controles como Caixa de Listagem carregados por consultas.  Então como resolver essa questão, ou tem como atribuir um valo qualquer para que se faça a manutenção destes registros????
    Tentei assim, mas não deu certo:

    CurrentDb.Execute "Insert into tbContrato(Matricula, codPessoa, codSecretaria, codSetor, codCargo, chefe, dtNomeacao, codClasse, dtClasse, Obs ) values (" & txtMatricula & "," & txtCodPessoa & "," & txtCodSecretaria & "," & txtCodSetor & "," & txtCodCargo & "," & ChkChefe & ",'" & IIf(IsNull(txtDataNomeacao) Or Me.txtDataNomeacao = "", "Null", "#" & Format(Me.txtDataNomeacao, "dd/mm/yyyy") & "#") & "'," & txtCodClasse & ",'" & IIf(IsNull(txtDataClasse) Or Me.txtDataClasse = "", "Null", "#" & Format(Me.txtDataClasse, "dd/mm/yyyy") & "#") & "','" & txtObs & "')"
         


    Ps: os campos em questão são: dtNomeacao(txtDataNomeacao); dtClasse(txtDataClasse) e codClasse(txtCodClasse)

    ALAN
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10157
    Registrado : 04/11/2009

    Re: Campo Data vazio

    Mensagem  JPaulo em 11/10/2018, 12:10

    Olá;

    Use a função NZ para tratar nulos.

    Exemplo:
    Código:
    Nz([SeuCampo];0)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Re: Campo Data vazio

    Mensagem  alantb em 11/10/2018, 15:45

    JPaulo, inseri a "NZ" da maneira abaixo, mas não deu certo. Dá erro de sintaxe em isert into....Sigo na busca...

    CurrentDb.Execute "Insert into tbContrato(Matricula, codPessoa, codSecretaria, codSetor, codCargo, chefe, dtNomeacao, codClasse, dtClasse, Obs ) values (" & txtMatricula & "," & txtCodPessoa & "," & txtCodSecretaria & "," & txtCodSetor & "," & txtCodCargo & "," & ChkChefe & ",'" & Nz([txtDataNomeacao], 0) & "'," & Nz([txtCodClasse], 0) & ",'" & Nz([txtDataClasse], 0) & "','" & txtObs & "')"


    ALAN
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10157
    Registrado : 04/11/2009

    Re: Campo Data vazio

    Mensagem  JPaulo em 11/10/2018, 17:42

    Teste;

    Código:
    CurrentDb.Execute "INSERT INTO " _
    & " tbContrato(Matricula, codPessoa, codSecretaria, codSetor, codCargo, chefe, dtNomeacao, codClasse, dtClasse, Obs )" _
    & " VALUE (" & txtMatricula & "," & txtCodPessoa & "," & txtCodSecretaria & "," & txtCodSetor & "," & txtCodCargo & "," _
    & "" & ChkChefe & ", #" & IIf(Not IsDate(Me.txtDataNomeacao), Null, Format(Me.txtDataNomeacao, "dd/mm/yyyy")) & "#, " & txtCodClasse & "," _
    & "#" & IIf(Not IsDate(Me.txtDataNomeacao), Null, Format(Me.txtDataClass, "dd/mm/yyyy")) & "#,'" & txtObs & "')"


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Re: Campo Data vazio

    Mensagem  alantb em 11/10/2018, 21:19

    Mestre JPaulo, fiz conforme a última mensagem, mas mesmo assim dá erro de erro de sintaxe no insert into. O VBA deixa a query toda em amarelo e não grava. Passando o ponteiro do mouse sobre os txts da query dá para ver os dados que foram digitados para gravar e os campos em questão mostram o valor como "Nulo". Sigo adiante.....

    ALAN
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10157
    Registrado : 04/11/2009

    Re: Campo Data vazio

    Mensagem  JPaulo em 12/10/2018, 10:42

    Anexe aqui parte do seu por favor.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Re: Campo Data vazio

    Mensagem  alantb em 15/10/2018, 13:58

    Olá mestre JPaulo, não respondi antes pois estive fora da cidade. Então para melhor entendimento segue, cópia do bd. Para teste acessar o frmContrato.

    ALAN
    Anexos
    promo1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.5 Mb) Baixado 4 vez(es)
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10157
    Registrado : 04/11/2009

    Re: Campo Data vazio

    Mensagem  JPaulo em 15/10/2018, 14:40

    Código:
    Private Sub cmdGravar_Click()
    Dim temMatricula As Recordset

          If vInclusao = True Then
     
       If Not IsNull(Me.txtMatricula) Then
      
             strSQL = "SELECT Matricula FROM tbContrato WHERE Matricula = " & Me.txtMatricula & ""
             Set temMatricula = CurrentDb.OpenRecordset(strSQL)
            
             If temMatricula.RecordCount <> 0 Then
                 MsgBox "Já existe pessoa registrada com esse número de Matrícula,verifique!!!.", vbInformation, "Aviso"
             Exit Sub
             End If
            
        End If
          
    CurrentDb.Execute "INSERT INTO " _
    & " tbContrato(Matricula, codPessoa, codSecretaria, codSetor, codCargo, chefe, dtNomeacao, codClasse, dtClasse, Obs )" _
    & " VALUE (" & Nz(txtMatricula, 0) & "," & Nz(txtCodPessoa, 0) & "," & Nz(txtCodSecretaria, 0) & "," & Nz(txtCodSetor, 0) & "," & Nz(txtCodCargo, 0) & "," _
    & " " & Nz(ChkChefe, 0) & ", #" & Nz(IIf(Not IsDate(Me.txtDataNomeacao), Null, Format(Me.txtDataNomeacao, "dd/mm/yyyy")), "") & "#, " & Nz(txtCodClasse, 0) & "," _
    & "#" & Nz(IIf(Not IsDate(Me.txtDataNomeacao), Null, Format(Me.txtDataClasse, "dd/mm/yyyy")), "") & "#,'" & Nz(txtObs, "") & "')"
            
            MsgBox ("Registro Salvo com Sucesso!!"), vbInformation, "Inclusão de Registro"
            LimpaCampos
            Forms!frmContrato!ListBox1.Requery
            DesabilitaCampos
            HabilitaCmd
            
        Else
            On Error Resume Next
            CurrentDb.Execute "UPDATE tbContrato SET codSecretaria=" & Me.txtCodSecretaria & ", codSetor=" & Me.txtCodSetor & ", codCargo=" & Me.txtCodCargo & ", chefe=" & Me.ChkChefe & ",dtNomeacao='" & Me.txtDataNomeacao & "' ,codClasse=" & Me.txtCodClasse & " ,dtClasse='" & Me.txtDataClasse & "', Obs='" & Me.txtObs & "' where Matricula=" & Me.txtMatricula

       MsgBox ("Registro Atualizado com Sucesso!!"), vbInformation, "Atualização de Registro"
      
       LimpaCampos
       Forms!frmContrato!ListBox1.Requery
       DesabilitaCampos
       DesabilitaSeleciona
       HabilitaCmd

    End If
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Re: Campo Data vazio

    Mensagem  alantb em 15/10/2018, 15:19

    JPaulo, usei o código conforme indicou anteriormente, mas continua dando erro na instrução Insert Into. No grifado em amarelo na janela do VBA, passando o mouse em cima dos txts exibe os valores preenchidos para os primeiros campos normalmente, e, os campos data e classe com valores NULO, entretanto não grava na tbContrato. Fora a modificação no código há alguma alteração na tabela ou no form a ser feita???

    ALAN
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10157
    Registrado : 04/11/2009

    Re: Campo Data vazio

    Mensagem  JPaulo em 15/10/2018, 17:08

    Amigão, testei e funciona;

    Download

    Se o problema continuar, diga-me como está a testar, para eu reproduzir o erro.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 25/07/2017

    Re: Campo Data vazio

    Mensagem  alantb em 15/10/2018, 17:37

    JPaulo, para testar primeiro adiciona-se uma pessoa (Cadastro de Pessoas), depois no Cadastro de Contrato(frmContrato) atribui-se uma matricula a pessoa cadastrada; e seleciona os outros dados: secretaria, setor, cargo. No caso testei deixando os campos data e classe em branco ou digitando zero, e também não gravou.Como fizeste o teste ai????

    ALAN

      Data/hora atual: 17/10/2018, 04:45