Data nao receber null

14 respostas
rafa120

Pessoal, fiz um topico anterior para trazer data formata.. mas como o assunto é outro ..criei este

seguinte
o usuario nao digita nada no campo de data, ou seja.... vai em branco, como eu faço pra que de certo enviar valor em branco? Nulo eu ja tenho, ele aceita nulo caso nao digitar nada.. mas como estou trabalhando com format, ai da erro se tiver null, entao preciso trocar isso

Date data = null;

        if(nf != null && nf.getEmissao() != null){
               data =  new Date(nf.getEmissao().getTime());
        }else{
               data = null;
             }
        stmt.setDate(7, data);

obrigado pela ajuda

14 Respostas

marcelo.bellissimo
rafa120:
Pessoal, fiz um topico anterior para trazer data formata.. mas como o assunto é outro ..criei este

seguinte
o usuario nao digita nada no campo de data, ou seja.... vai em branco, como eu faço pra que de certo enviar valor em branco? Nulo eu ja tenho, ele aceita nulo caso nao digitar nada.. mas como estou trabalhando com format, ai da erro se tiver null, entao preciso trocar isso

Date data = null;

        if(nf != null && nf.getEmissao() != null){
               data =  new Date(nf.getEmissao().getTime());
        }else{
               data = null;
             }
        stmt.setDate(7, data);

obrigado pela ajuda

Existe um método setNull, daria pra fazer assim:
Date data = null;

        if(nf != null && nf.getEmissao() != null){
               data =  new Date(nf.getEmissao().getTime());
               stmt.setDate(7, data);
        }else{
               stmt.setNull(7, Types.DATE);
             }
rafa120

mas isso seta null do mesmo jeito, nao seta?

marcelo.bellissimo

Deixa eu ver se entendi… você quer colocar um valor “em branco” no campo de data? Não tem como… ou ele fica como “null”, ou fica com uma data qualquer… não é como uma String num campo VARCHAR, que você pode setar valores em branco “” ou só espaços " " …

rafa120

imaginava isso
mas como que fica entao o caso de trazer a data formatada do banco?

no formulario, eu tenho os campos para receber Data, e nos que estao nulos… da este erro

java.lang.IllegalArgumentException: Cannot format given Object as a Date

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); txtCadastro.setText(String.valueOf(f.format(contratos.get(tabela.getSelectedRow()).getCadastro())));

marcelo.bellissimo

rafa120:
imaginava isso
mas como que fica entao o caso de trazer a data formatada do banco?

no formulario, eu tenho os campos para receber Data, e nos que estao nulos… da este erro

java.lang.IllegalArgumentException: Cannot format given Object as a Date

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); txtCadastro.setText(String.valueOf(f.format(contratos.get(tabela.getSelectedRow()).getCadastro())));

Ou você faz um try/catch nesse trecho de código e captura essa exceção (que indica erro na hora da formatação), ou você simplesmente verifica se o valor retornado é null, daí voce pode tomar a ação que desejar… não tem muita opção nesse caso…

rafa120

putz, estas coisas no java que as vezes eu nao gosto... estes tratamentos de campos

Tem como eu fazer este Date transformar para String?

//Emissao
            if (txtEmissao.getText().equals("  /  /    ") || txtEmissao.getText() == null){
                emissao = null; //emissão é do tipo Date, esta como variavel Global
            }
            else{
                emissao = new SimpleDateFormat("dd/MM/yyyy").parse(txtEmissao.getText());
            }
marcelo.bellissimo
rafa120:
putz, estas coisas no java que as vezes eu nao gosto... estes tratamentos de campos

Tem como eu fazer este Date transformar para String?

//Emissao
            if (txtEmissao.getText().equals("  /  /    ") || txtEmissao.getText() == null){
                emissao = null; //emissão é do tipo Date, esta como variavel Global
            }
            else{
                emissao = new SimpleDateFormat("dd/MM/yyyy").parse(txtEmissao.getText());
            }

Você pode usar o método "toString()" na variável do tipo Date(), que retorna uma representação por extenso da data... Mas de qualquer maneira, ao tentar salvar isso no banco de dados, se no banco ele for do tipo DATE ou DATETIME, vai dar pau...

rafa120

entao nao vai da certo, pq no banco é deste jeito mesmo… é Date

acabou minhas ideias para isso

mas agora bateu uma dúvida, se todos usuario que criam sistemas em java, na data nao precisar colocar nada… oq eles fazem? como é o meu caso!

algum jeito deve ter

marcelo.bellissimo

rafa120:
entao nao vai da certo, pq no banco é deste jeito mesmo… é Date

acabou minhas ideias para isso

mas agora bateu uma dúvida, se todos usuario que criam sistemas em java, na data nao precisar colocar nada… oq eles fazem? como é o meu caso!

algum jeito deve ter

Coloca null … só pra eu entender, há alguma restrição que impeça você de colocar ‘null’ na sua data, no banco ?

rafa120

já esta setado como null

se caso o usuario nao digitar nada, já recebe um null.

Eu tentei até enviar uma data que nao intefere em nada, mas nao é aceito! 00/00/0000

marcelo.bellissimo

rafa120:
já esta setado como null

se caso o usuario nao digitar nada, já recebe um null.


Bem, então nesse caso está resolvido… pra setar, você seta ‘null’…

Pra ler, você verifica antes de formatar, se for ‘null’ você não formata… caso contrário, pode formatar… não há nada de diferente pra se fazer nesse caso…

rafa120

bem pensado!

mas eu acho que pode gerar algum erro

tentei assim
ps: lembrando que este campo txtEmissao esta sem dado nenhum, ou seja… null

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); if (txtEmissao.getText() == null){ txtEmissao.setText(String.valueOf(notasf.get(tabela.getSelectedRow()).getEmissao())); //sem o format }else{ txtEmissao.setText(String.valueOf(f.format(notasf.get(tabela.getSelectedRow()).getEmissao()))); //esta linha tem o format }

E gera este erro

java.lang.NullPointerException

marcelo.bellissimo

rafa120:
bem pensado!

mas eu acho que pode gerar algum erro

tentei assim
ps: lembrando que este campo txtEmissao esta sem dado nenhum, ou seja… null

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); if (txtEmissao.getText() == null){ txtEmissao.setText(String.valueOf(notasf.get(tabela.getSelectedRow()).getEmissao())); //sem o format }else{ txtEmissao.setText(String.valueOf(f.format(notasf.get(tabela.getSelectedRow()).getEmissao()))); //esta linha tem o format }

E gera este erro

java.lang.NullPointerException

Existem vários pontos onde pode estar ocorrendo o NullPointer aí… você poderia verificar um por um, mas eu acho mais fácil você simplesmente colocar esse trecho de código dentro de um try/catch e capturar a NullPointerException, pois de qualquer maneira o que você está querendo fazer é setar o texto nesse seu campo ‘txtEmissao’…

Algo assim acho que resolveria pra você:

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); try{ if (txtEmissao.getText() == null){ txtEmissao.setText(String.valueOf(notasf.get(tabela.getSelectedRow()).getEmissao())); //sem o format }else{ txtEmissao.setText(String.valueOf(f.format(notasf.get(tabela.getSelectedRow()).getEmissao()))); //esta linha tem o format } }catch(NullPointerException npe){ // faz algo txtEmissao.setText(""); }

rafa120

Resolvido Marcelo!

100% :slight_smile:

obrigado mesmo! Abração.

Criado 17 de maio de 2010
Ultima resposta 17 de mai. de 2010
Respostas 14
Participantes 2