Dúvida em testar campos

6 respostas
M

Olá pessoal!

Tenho um sistema que faz venda. Alguns produtos são pegos de uma tabela produtos através de um comboBox e outros através de um textField. Esses itens são inseridos numa tabela e posteriormente gravados no banco de dados. Só q nunca todos os dados do banco são preenhidos então dá erro. Gostaria de uma dica de vcs de como testar esses campos que nem sempre são preenchidos.

Segue trecho do código:

public static void inserir(ItemVenda item) {
		
		try {
			String sql = "Insert into item_venda (produtos_id_produtos, quantidade, valor_unit, valor_total, venda_id_venda, descricao_tinta_maquina, unidade_id_unidade, peso) values(?, ?, ?, ?, ?, ?, ?, ?)";
			PreparedStatement ps = GerenciadorBD.getConexao().prepareStatement(sql);
			
			
			ps.setInt(1, item.getProdutos().getIdProdutos());
			ps.setInt(2,item.getQuantidade());
			ps.setFloat(3, item.getValorUnit());
			ps.setFloat(4, item.getValorTotal());
			ps.setInt(5, item.getVendaIdVenda());
			ps.setString(6, item.getDescricaoTintaMaquina());
			ps.setInt(7, item.getUnidade().getIdUnidade());
			ps.setFloat(8, item.getPeso());
						
			
			ps.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e);
		}
	}
public void actionPerformed(java.awt.event.ActionEvent e) {
					Venda venda = new Venda();
					
					venda.setTipoPagamento((TipoPagamento)cbTipoPagamento.getSelectedItem());
					venda.setFormaPagamento((FormaPagamento)cbFormaPagamento.getSelectedItem());
					venda.setNumPedido(Integer.parseInt(tfNumPedido.getText()));
					venda.setClienteJuridico((ClienteJuridico)cbNomeFantasia.getSelectedItem());
					venda.setFuncionario((Funcionario)cbVendedor.getSelectedItem());
					venda.setPesoCarga(tfPesoCarga.getText());
					venda.setNumParcelas(Integer.parseInt(tfNumParcelas1.getText()));
					venda.setMeiaVenda(rbMeiaVendaSim.isSelected()?"S":"N");
					String str = tfValorParcela.getText().replaceAll("\.", "");
					str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					
					venda.setValorParcela(Float.parseFloat(str));
					
					str = tfTotalPedido.getText().replaceAll("\.", "");
					str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					
					venda.setTotalPedido(Float.parseFloat(str));
					
					str = tfDesconto.getText().replaceAll("\.", "");
					str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					
					venda.setDesconto(Float.parseFloat(str));
				
					str = tfSubTotal.getText().replaceAll("\.", "");
					str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					
					venda.setSubTotal(Float.parseFloat(str));
					//Se não houver desconto adicional
					if(!tfDescAdicional.getText().equals("")){
						str = tfTotalGeral.getText().replaceAll("\.", "");
						str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
						
						venda.setTotalGeral(Float.parseFloat(str));
					}else
					venda.setTotalGeral(Float.parseFloat(str1));
					
					if(!tfDescontoAdicional.getText().equalsIgnoreCase("")){
					str = tfDescAdicional.getText().replaceAll("\.", "");
					str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					
					venda.setDescontoAdicional(Float.parseFloat(str));
					}
					SimpleDateFormat formata = new SimpleDateFormat("dd/MM/yyyy");
					
					try {
						Date dataPedido = (tfDataPedido.getText().length() == 10) ? formata.parse(tfDataPedido.getText()) : null;
						venda.setDataPedido(dataPedido);
						}catch (ParseException e1) {
							e1.printStackTrace();
						}
						int id = GerenciadorBDVenda.inserir(venda);
						
						//inserir itens da venda
						for (int i = 0; i < itens.size(); i++) {
							((ItemVenda)itens.get(i)).setVendaIdVenda(id);
							GerenciadorBDItemVenda.inserir((ItemVenda)itens.get(i));
						}
						itens = null;
						
							JOptionPane.showMessageDialog(null, "Venda realizada com sucesso!!", "Venda",  JOptionPane.OK_OPTION + 
								javax.swing.JOptionPane.INFORMATION_MESSAGE);
Como os dados são enviados para a tabela
ItemVenda item = new ItemVenda();
					if(checkTintaMaquina.isSelected()){
						tintaMaquina = 1;
						item.setProdutos(null);
						item.setDescricaoTintaMaquina(tfDescricaoTintaMaquinaAndOthers.getText());
						item.setQuantidade(Integer.parseInt(tfQuantidadeTintaMaquina.getText()));
						item.setPeso(Integer.parseInt(tfPeso.getText()));
						item.setUnidade((Unidade)cbUnidade.getSelectedItem());
						String str = tfValorUnitTintaMaquina.getText().replaceAll("\.", "");
						str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
						item.setValorUnit(Float.parseFloat(str));

					    str = tfValorTotalTintaMaquina.getText().replaceAll("\.", "");
						str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					    item.setValorTotal(Float.parseFloat(str));
					    
					    ((ModeloTabelaVendas)tabelaVendas.getModel()).adiciona(tfQuantidadeTintaMaquina.getText(), tfDescricaoTintaMaquinaAndOthers.getText(), tfValorUnitTintaMaquina.getText(), tfValorTotalTintaMaquina.getText(), tfPeso.getText(), cbUnidade.getSelectedItem().toString());
					    tabelaVendas.updateUI();
						
					}else{
					   item.setProdutos((Produto)cbDescricao.getSelectedItem());
					   item.setQuantidade(Integer.parseInt(tfQuantidade.getText()));
					   item.setDescricaoTintaMaquina(null);
					   item.setPeso(0);
					   item.setUnidade(null);

					   String str = tfValorUnit.getText().replaceAll("\.", "");
						str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
						item.setValorUnit(Float.parseFloat(str));

					    str = tfValorTotal.getText().replaceAll("\.", "");
						str = str.substring(0, str.lastIndexOf(",")) + "." + str.substring(str.lastIndexOf(",")+1, str.length());
					    item.setValorTotal(Float.parseFloat(str));
					
					    ((ModeloTabelaVendas)tabelaVendas.getModel()).adiciona(tfQuantidade.getText(), cbDescricao.getSelectedItem().toString(), tfValorUnit.getText(), tfValorTotal.getText(), null, null);
					    tabelaVendas.updateUI();
					}
					
					if(itens == null){
						itens = new ArrayList();
					}
					itens.add(item);
				}

Os dados que nem sempre são preenchidos utilizando como base o primeiro código aqui mostrado é o 1 ou 6, 7 e 8.

Valeu galera!

6 Respostas

BrunoBastosPJ

Ai depende rapaz… Se os campos forem obrigatórios você vai ter que testar se eles estão vazios dentro do metodo actionPerformed… Se eles não forem obrigatórios você vai ter que permitir a gravação de null na tabela

M

Os campos não são obrigatórios na tabela. O que gostaria de saber realmente é como fazer o a gravação de null na tabela. Um exemplo de comando. Tipo:

ps.setInt(1, (item.getProdutos().getIdProdutos() != null) ? (item.getProdutos().getIdProdutos()): null);

Sei que o camando acima está errado, por isso gostaria de um comando para fazer o teste e gravar no banco.

Valeu1!

BrunoBastosPJ

Modifique o campo para NULL na tabela no banco de dados, ele deve estar not null…

Se os campos são obrigatórios como você vai querer gravar null?

não entendi…

M

“BrunoBastos”:

O que gostaria de saber realmente é como fazer o a gravação de null na tabela

Modifique o campo para NULL na tabela no banco de dados, ele deve estar not null…

Se os campos são obrigatórios como você vai querer gravar null?

não entendi…

Acho que está um pouco confuso essa dúvida:
Os campos não são obrigatórios
O que acontece é o seguinte:
Quando uso o comboBox para preencher o campo de descrição dá erro no tipo unidade, que também é um comboBox. Dá o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at br.com.sstintas.modelo.bd.GerenciadorBDItemVenda.inserir(GerenciadorBDItemVenda.java:15)

A linha 15 é a seguinte:

ps.setInt(7, item.getUnidade().getIdUnidade());

Se digito a a descrição no campo textfield dá o mesmo erro na seguinte linha:

ps.setInt(1, item.getProdutos().getIdProdutos());
B

Ola…

Após verificar que o campo capturado é NULL tente utilizar:

ps.setNull(7, Types.INTEGER)

Já usei isso e funciona corretamente… até mais…

M

Como eu faço a verificação para saber se está vazio??

Criado 26 de outubro de 2006
Ultima resposta 27 de out. de 2006
Respostas 6
Participantes 3