Problema ao fazer busca por data[resolvido]

oieee meu codigo ta assim a classe entidade esta logo abaixo eu nao tirei o converte data comentei a linha aonde ele é utilizado
e pra que ele é utilizado

[code]import 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;
			//query que busca pela data
			if (querydata(f.getSelectedDate()))       
                   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 i.data = :argumento");       
                   consulta.setParameter("argumento", querydata(f.getSelectedDate()));        
                   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");
				//o converte data é usado aqui utilizado pra retorna o valor pra tabela 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.getTotal();
			}
			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());

		}
	//aqui esta a conversao provavelmente errada deve ter algo que possa ser feito aqui
private boolean dataquery(Calendar data) {   
            // TODO Auto-generated method stub   
            return true;   
        } 
		
		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) {

}

}[/code]

classe do getters e setters onde cria a tabela no banco

[code]package Modelo;
import java.util.Calendar;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.swing.table.DefaultTableModel;

@Entity
public class VendaProduto {
@Id
private int codigo;
private String descricao;
private int qtde;
private double valor;
private double total;
private int itens;
private String nomevendedor;
@Temporal(TemporalType.DATE)
private Calendar data;

public int getCodigo() {
	return codigo;
}
public void setCodigo(int codigo) {
	this.codigo = codigo;
}
public String getDescricao() {
	return descricao;
}
public void setDescricao(String string) {
	this.descricao = string;
}
public int getQtde() {
	return qtde;
}
public void setQtde(int qtde) {
	this.qtde = qtde;
}
public double getTotal() {
	return total;
}
public void setTotal(double total) {
	this.total = total;
}
public double getValor() {
	return valor;
}
public void setValor(double valor) {
	this.valor = valor;
}
public int getItens() {
	return itens;
}
public void setItens(int itens) {
	this.itens = itens;
}
public Calendar getData() {
	return data;
}
public void setData(Calendar data) {
	this.data = data;
}
public String getNomevendedor() {
	return nomevendedor;
}
public void setNomevendedor(String nomevendedor) {
	this.nomevendedor = nomevendedor;
}
	
}[/code]

alguem que respondeu este topico pode me ajudar postei o codigo todo.

Olha, esse tipo de coisa é totalmente desnecessário.
Se está com pressa, pague e aí você pode cobrar, ok?

Seguinte, o primeiro problema é que você está fazendo tudo na classe que é a própria janela da aplicação. Erro de principiante mesmo.
Segundo, você precisa converter o conteúdo que obtém do JTextField em uma variável do tipo Calendar, pois é este tipo de dados que está definido na entidade

@Temporal(TemporalType.DATE) private Calendar data;
Ou seja, você precisa de um método que proceda a conversão de String para Date e que permita criar um Calendar a partir de um Date.
Como fazer? No google você acha milhares de exemplos.

seria assim?

[code]private String dataquery(Calendar data) {
// TODO Auto-generated method stub
SimpleDateFormat format = new SimpleDateFormat(“yyyy/MM/dd”);
dataProducao = format.format(data);

        }  [/code]

[quote=daniferreira]seria assim?

[code]private String dataquery(Calendar data) {
// TODO Auto-generated method stub
SimpleDateFormat format = new SimpleDateFormat(“yyyy/MM/dd”);
dataProducao = format.format(data);

        }  [/code][/quote]

Não seria o inverso?
O JTextField, através do método getText() retorna que tipo de dado?
Você não pesquisou corretamente.
Faça uma nova busca, de maneira adequada que você conseguirá encontrar o método pronto (ou um bem próximo).

private Calendar dataquery(String data) throws ParseException{
// TODO Auto-generated method stub
DateFormat forma = new SimpleDateFormat(“dd/MM/yyyy”);
java.sql.Calendar dataf = new java.sql.Date(forma.parse(data).getTime());
return dataf;
}

creio que esta conversao e a certa

[quote=daniferreira]private Calendar dataquery(String data) throws ParseException{
// TODO Auto-generated method stub
DateFormat forma = new SimpleDateFormat(“dd/MM/yyyy”);
java.sql.Calendar dataf = new java.sql.Date(forma.parse(data).getTime());
return dataf;
}

creio que esta conversao e a certa[/quote]
Não esqueça de colocar o código entre as tags [code]
Sim, este método faz o que você precisa.
Agora, basta trocar a chamada no momento em que você define o parâmetro da consulta.

private Calendar dataquery(String data) throws ParseException{ // TODO Auto-generated method stub DateFormat forma = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date dataf = new java.sql.Date(forma.parse(data).getTime()); return dataf; }

acho q e so voltar ao codigo inicial quando tava dando o erro do string calendar deixa eu ver aqui

if (dataquery(f.getText().trim().equalsIgnoreCase(""))) resultList= em.createQuery("from VendaProduto").getResultList(); else { Query consulta = em.createQuery("SELECT i FROM VendaProduto i WHERE i.data = :argumento"); // Adicionei aspas simples aqui consulta.setParameter("argumento",dataquery(f.getText().toUpperCase())); resultList= consulta.getResultList(); }

talvez isso?

A princípio sim.

ta quando eu chegar do servico eu testo \o

esses cursos ai e pra compra?

machado consegui converte calendar para string assim

private Calendar dataquery(String data) throws ParseException{ // TODO Auto-generated method stub Calendar c = Calendar.getInstance(); SimpleDateFormat forma = new SimpleDateFormat("dd/MM/yyyy"); data = forma.format(c); return c; }

porem ainda esta retornando a data atual a qualquer valor que eu seleciono no calendario o que faço?

if ((f.getText().trim().equalsIgnoreCase(""))) resultList= em.createQuery("from VendaProduto").getResultList(); else { Query consulta = em.createQuery("SELECT i FROM VendaProduto i WHERE i.data = :argumento"); // Adicionei aspas simples aqui try { consulta.setParameter("argumento",dataquery(f.getText().toUpperCase())); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } resultList= consulta.getResultList(); }

No seu método de conversão, tem que usar a data que está sendo passada por parâmetro, e não uma data nova.

[quote=daniferreira]machado consegui converte calendar para string assim

private Calendar dataquery(String data/*Por que a variável data se você não a usa?*/) throws ParseException{ //Por que o throws se você não faz nenhum parse? // TODO Auto-generated method stub Calendar c = Calendar.getInstance();//Criar uma instância de Calendar = pegar o dia de hoje SimpleDateFormat forma = new SimpleDateFormat("dd/MM/yyyy"); data = forma.format(c);//Por que isso? Essa String não representa a data que o usuário informou? Por que por outro valor nela? return c; //Por que retornar o objeto de Calendar que tem o dia de hoje como valor? }
[/quote]

Seu problema não é com a data ou conversão ou o que seja, é pesquisar, é ler, é entender.
Você quer código pronto, quer copiar e colar e não usar o cérebro.
Veja a sintaxe que você criou no método para convertar e me diga, de que forma esse código retorna um objeto Calendar baseado no que você está informando?
Está fazendo tudo errado.
Se quer mesmo resolver este problema, leia sobre como converter uma String para Date.
Depois, leia como instanciar um Calendar (ou equivalente) a partir de um Date.
Pois, a não ser que um imbecil se achando o bom moço faça isso para ti, você nunca vai conseguir sem entender esse processo.

SimpleDateFormat forma = new SimpleDateFormat(data);

isso?

sem palavrao machado

eu to tentando fazer pior é se nao tentasse por isso to pedindo ajuda

Ao invés de se preocupar com o que eu escrevo ou deixo de escrever, comece a preocupar-se em estudar.
Não seja medíocre e ignorante a ponto de enganar a si mesmo(a).
Para mim seria extremamente mais fácil me livrar das perguntas esdrúxulas que você está fazendo postando o código pronto, coisa que, já tenho.
Agora, eu não quero que daqui há algum tempo, quando você for procurar um emprego ou, então, estiver trabalhando, não consiga fazer uma simples conversão ridícula.
Pior que isso, você está se mostrando preguiçoso(a), pois se fizer uma consulta no google aparecem mais de um milhão de respostas, das quais, nas 10 primeiras a resolução serve para basear-se ou mesmo solucionar todo o problema.
Claro, a mim não interessa saber quem você é, o que faz ou o que pretende fazer, agora, como forista do guj eu me preocupo com o que as pessoas irão ver aqui. Postar o código pronto é, sim, idiotice. Você mascara um problema maior que é a sua incapacidade em pesquisar, filtrar a pesquisa, assimilar conhecimento e resolver problemas.

Acha isso pouco?