Janela listar vendas nao lista por data

7 respostas
D

gente este é o codigo da minha janela listar vendas porem ao listar pela data apresenta este erro abaixo fala que esta entrando string mais aonde esta e ntrando string o que eu posso fazer
pra funcionar a busca? obrigada

mport java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import datechooser.beans.DateChooserCombo;

import Modelo.Med;
import Modelo.VendaProduto;

public  class ListarVendas extends JFrame {

	private JTextArea area;
	private JScrollPane j1;
	private JButton fechar;
	
	// Objetos utilizados para 
	// procura pela descrição informada
	private JLabel     labelprocura;
	private JButton    consulta;
	
	DateChooserCombo f = new DateChooserCombo();
		
	private static EntityManagerFactory emf;
	private static EntityManager em;

	DefaultTableModel modelo;
	
	private JTextField totalmedidas,totalvalor;
	private JButton button;
	//private JTextField mediaano;
	

	public ListarVendas(EntityManagerFactory f1, EntityManager e1)
	{
		super("Listar Vendas Efetuadas");
		Container c = getContentPane();
		getContentPane().setLayout(null);
		
		emf = f1;
		em = e1;
		
		//area = new JTextArea();
		//j1 = new JScrollPane(area);
		JButton fechar = new JButton("Fechar");
		
		labelprocura = new JLabel("Busca por Data");
		f = new DateChooserCombo();
		
		totalmedidas = new JTextField();
		totalvalor = new JTextField();
		//mediaano    = new JTextField();
		
		consulta = new JButton("Executar");
		
		labelprocura.setBounds(10, 10, 150, 20);
		f.setBounds(132, 10, 150, 20);
		consulta.setBounds(292, 10, 100, 20);
		
		//area.setBounds(50, 20, 400, 300);
		// Definir o posicionamento do JScrollPane,
		// pois dentro dele está o area que é um JTextArea
		
	    modelo = new 
	    DefaultTableModel();
	    
	    // constrói a tabela
	    JTable tabela = new JTable(modelo);
	    
	    // Cria duas colunas
	    modelo.addColumn("Código");
	    modelo.addColumn("Data");
	    modelo.addColumn("Nome do Vendedor");
	    modelo.addColumn("Descriçao");
	    modelo.addColumn("Quantidade");
	    modelo.addColumn("Valor");
	    modelo.addColumn("Total");
	    
	    tabela.getColumnModel().getColumn(0).setPreferredWidth(5);   
        tabela.getColumnModel().getColumn(1).setPreferredWidth(40);   
        tabela.getColumnModel().getColumn(2).setPreferredWidth(100);   
        tabela.getColumnModel().getColumn(3).setPreferredWidth(100);   
        tabela.getColumnModel().getColumn(4).setPreferredWidth(10);   
        tabela.getColumnModel().getColumn(5).setPreferredWidth(50);   
        tabela.getColumnModel().getColumn(6).setPreferredWidth(50);
	    
	    
	    //j1.setBounds(50, 60, 400, 380);
		fechar.setBounds(10, 410, 110, 25);
		
		fechar.addActionListener (new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				dispose();

			}
			
		});
		
		consulta.addActionListener (new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) {
				
				
				List <VendaProduto> lista = null;
				List resultList;
				
				if (f.getText().trim().equalsIgnoreCase(""))
					resultList= em.createQuery("from VendaProduto").getResultList();
				else // Senão ele digitou alguma coisa na procura
				{
					Query consulta = 
						em.createQuery("SELECT i FROM VendaProduto i WHERE UPPER(i.data) LIKE :argumento");
					consulta.setParameter("argumento", "%" + f.getText().toUpperCase() + "%");
					resultList= consulta.getResultList();
				}
				
				lista = resultList;
				
				StringBuilder sb = new StringBuilder();

				if (lista.isEmpty())
				{
					sb.append("Não há vendas cadastradas!");
				}
				else
				{
				double soma = 0;
				for (VendaProduto med : lista) {
					sb.append("Código: " + med.getCodigo() + "\n");
					sb.append("Data: " + converteData(med.getData()) + "\n");
					sb.append("Nome do Vendedor: " + med.getNomevendedor() +"\n");
					sb.append("Descrição:  " + med.getDescricao()+ "\n");
					sb.append("Quantidade:" + med.getQtde()+ "\n");
					sb.append("Valor:  " + med.getValor()+ "\n");
					sb.append("Total:  " + med.getTotal()+ "\n");
					
					
				    // Adiciona uma linha)
				    modelo.addRow(new Object[]{med.getCodigo(),converteData(med.getData()), med.getNomevendedor(), med.getDescricao(),med.getQtde(),med.getValor(),med.getTotal()});

				    soma += med.getValor();
				}
				sb.append("Total de Vendas Efetuadas = " + lista.size()+"\n\n");
				//sb.append("Média dos Anos dos Carros   = " + soma/lista.size());
				sb.append("Total do Valor de Vendas = " +soma+lista.size()+"\n\n");
				totalmedidas.setText("Total de Vendas Efetuadas = " + lista.size());
				totalvalor.setText("Total do valor de vendas =" +soma);
				//mediaano.setText("Média dos Clientes Cadastrados   = " + soma/lista.size());
				
				}
				
				//area.setText(sb.toString());

			}
			private String converteData(Calendar data) {
				// TODO Auto-generated method stub
				return new SimpleDateFormat("dd/MM/yyyy").format(new Date().getTime());
			}
		});

	   tabela.setPreferredScrollableViewportSize(new 
		      Dimension(1000, 1000));

	    JScrollPane scrollPane = new JScrollPane(tabela);
	    scrollPane.setBounds(10, 44, 984, 300);
	    
		totalmedidas.setBounds(10, 355, 990, 20);
		totalvalor.setBounds(10, 385, 990, 20);

	    c.add(scrollPane);
	    c.add(totalmedidas);
	    c.add(totalvalor);

		    
		c.add(labelprocura);
		c.add(f);
		c.add(consulta);

		//c.add(area);
		//c.add(j1);
		
		c.add(fechar);
		
		button = new JButton("Limpar");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int x = modelo.getRowCount();  
				for(int a = 0; a < x; a++)  
				{  
				modelo.removeRow(0);  
				}  
			}
		});
		button.setBounds(132, 410, 110, 25);
		getContentPane().add(button);
		
		setSize(1023,500);
		setVisible(true);
		setLocationRelativeTo(null);
    }

	public static void main(String[] args) {

	}

}

erro

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Calendar
at org.hibernate.type.CalendarDateType.toString(CalendarDateType.java:49)
at org.hibernate.type.NullableType.nullSafeToString(NullableType.java:93)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:140)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:38)
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:491)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66)
at ListarVendas$2.actionPerformed(ListarVendas.java:129)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

7 Respostas

EduFranzoni

O erro está bem claro, acredito que seja nessa parte.

private String converteData(Calendar data) { // TODO Auto-generated method stub return new SimpleDateFormat("dd/MM/yyyy").format(new Date().getTime()); }

na assinatura do método ela retorna uma string. porém não é o que está retornando, e sim um SimpleDateFormat.

D

sim é que a variavel no banco esta assim…calendar e para retornar este valor para a tabela foi preciso formatar a data agora pra buscar por data esta dando este erro
o que posso mexer ai pra retornar a busca por data
?

obrigada

D

if (f.getText().trim().equalsIgnoreCase("")) resultList= em.createQuery("from VendaProduto").getResultList(); else // Senão ele digitou alguma coisa na procura { Query consulta = em.createQuery("SELECT i FROM VendaProduto i WHERE UPPER(i.data) LIKE :argumento"); consulta.setParameter("argumento", "%" + f.getText().toUpperCase() + "%"); resultList= consulta.getResultList(); }

amigo to desconfiada que o erro seja por aqui…eu usei um calendar…para selecionar a data e aperta no botao de buscar ele listar ai ta dando aquele erro o que posso fazer neste codigo pra reso0lver?
obrigada.

EduFranzoni

Você já fez essa query direto no banco de dados? funcionou?
se sim, você quer ordena-los pela data? certo?
utilize a clausura ORDER BY.
desconheço essa forma de criar a query que você está utilizando, gosto de utilizar o PreparedStatement.

D

assim o usuario seleciona aquela data ai pega e lista todos daquele dia é assim simples…
entao é uma query simples nao tem mta dificuldade vc pode ver que tem string nessa query quando converti a data
que aconteceu esse problema…mais eu converti pra trazer devolta do banco pq tava dando o erro de gregory calendar ate ai ficou ok
agora o pau que esta dando é esse ai :/// nao sei o que faze ://

D

eu uso hibernate

D

if (f.getText().trim().equalsIgnoreCase("")) resultList= em.createQuery("from VendaProduto").getResultList(); else // Senão ele digitou alguma coisa na procura { Query consulta = em.createQuery("SELECT i FROM VendaProduto i WHERE UPPER(i.data) LIKE :argumento"); consulta.setParameter("argumento", "%" + f.getText().toUpperCase() + "%"); resultList= consulta.getResultList(); }

aqui ta passando string alguem que saiba pde ajudar?

Criado 1 de julho de 2012
Ultima resposta 1 de jul. de 2012
Respostas 7
Participantes 2