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