Data nao receber null

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

[code] Date data = null;

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

obrigado pela ajuda

[quote=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

[code] Date data = null;

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

obrigado pela ajuda[/quote]

Existe um método setNull, daria pra fazer assim:

[code] 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);
         }[/code]

mas isso seta null do mesmo jeito, nao seta?

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 " " …

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())));

[quote=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())));
[/quote]

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…

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

Tem como eu fazer este Date transformar para String?

       [code]//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());
        }[/code]

[quote=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?

       [code]//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());
        }[/code][/quote]

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…

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

[quote=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[/quote]

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

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

[quote=rafa120]já esta setado como null

se caso o usuario nao digitar nada, já recebe um null.[/quote]
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…

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

[quote=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
[/quote]

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(""); }

Resolvido Marcelo!

100% :slight_smile:

obrigado mesmo! Abração.