Problema ao fazer busca por data[resolvido]

42 respostas
D

ola gente tudo bem estou tentando fazer uma busca por data em um calendario eu pego e seleciono la por exemplo o dia de hoje 02/07/2012
e clico no botao ele pega e vai me trazer todos os registros do banco até os registros do dia anterior mais nao é isso que eu quero eu quero que ele pegue e me traga
apenas o registro que foi registrado nesse dia no caso o dia 02/07/2012 o meu codigo esta assim
este é o botao de consulta alguem pode ajudar?
obrigada tem ideia do que seja isso
minha aplicacao esta parada por causa disso é a ultima coisa que falta pra mim terminar se alguém puder me ajudar eu agradeço

consulta.addActionListener (new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) {
				
				
				List <VendaProduto> lista = null;
				List resultList;
				
				if (converteDataa(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 UPPER(i.data) LIKE :argumento");   
                    consulta.setParameter("argumento", "%" +converteDataa(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");
					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());

			}
			private boolean converteDataa(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());
			}
		});

42 Respostas

D

a parte que esta retornando errado é essa

consulta.addActionListener (new ActionListener()   
    {   
        public void actionPerformed(ActionEvent arg0) {   
               
               
            List <VendaProduto> lista = null;   
            List resultList;   
               
            if (converteDataa(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 UPPER(i.data) LIKE :argumento");     
                   consulta.setParameter("argumento", "%" +converteDataa(f.getSelectedDate()) + "%");     
                   resultList= consulta.getResultList();     
               }
mais as conversoes tem algo errado nessas partes aqui do código por isso esta dando este erro que expliquei acima.
private boolean converteDataa(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());
			}
A

Falaí, Dani…

Tô vendo pelo menos dois motivos pra seu código não funcionar:

Nesse setParameter você tá passando um valor boolean … se ligou nisso ? Você tem dois métodos com nomes parecidos - converteDataa() e converteData(). Não é isso que tá te confundindo ?

Outra coisa… o operador LIKE é usado para comparações com campos do tipo texto… Não se dá LIKE em campo date. E o UPPER… essa função é pra converter o texto de minúsculas para maiúsculas. Se tentar rodar isso direto no banco é certeza que dá erro… A menos que você esteja fazendo um chuncho daqueles grandes, menina!!

Se você quer localizar um registro procurando pela data específica é isso:

D
if (converteDataa(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", "%" +converteData(f.getSelectedDate()) + "%");   
                    resultList= consulta.getResultList();   
                }

entao eu mudei aqui mais ainda ta acontecendo o erro acima

quanto a conversao que eu posso muda pra funciona ?
assim eu fiz duas conversoes porque antes tava dando erro d string mais deve ter algo que possa ser feito ai pra que de certo usando essas conversoes tem ideia?

obrigada

conversoes

private boolean converteDataa(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());
			}
A

Não vale a pena tentar o que resolveu o problema do seu outro post, aquele dos relatórios ? Experimenta… e se der erro posta exatamente o que aparece pra você

ErickRAR

% se utiliza para Like, não precisa dele aqui.

//   consulta.setParameter("argumento", "%" +converteData(f.getSelectedDate()) + "%"); 
   consulta.setParameter("argumento", converteData(f.getSelectedDate()));

Aqui você está recebendo uma data, mas não está utilizando. Está usando uma nova data.

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

E acredito que se na tabela o campo está como date, não precisa passar para String. Não me recordo de um dia ter que converter, mas se tiver, acho que é só fazer essas mudanças que eu citei anteriomente.

D

tipo deeve ter algo que possa ser mudado nas conversoes mesmo e la encima pra funcionar

D

beleza vou testa calma ai xD

D

agora to usando o convertedata

consulta.addActionListener (new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) {
				
				
				List <VendaProduto> lista = null;
				List resultList;
				
				erro nesta linha//if (converteData(f.getSelectedDate()))
					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", converteData(f.getSelectedDate()));         
						resultList= consulta.getResultList();  
				}

converte data

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

erro

Exception in thread “AWT-EventQueue-0” java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from String to boolean

at ListarVendas.<init>(ListarVendas.java:122)
at EfetuarVenda$5.actionPerformed(EfetuarVenda.java:274)
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)
D

este é o codigo que estava inicialmente e estava dando erro de string

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 consulta.setParameter("argumento",f.getText().toUpperCase()); resultList= consulta.getResultList(); }

esse aqui o erro que estava dando

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Calendar

D

nao to conseguindo :frowning:

tentei passar o calendar data como parametro mais ta dando erro tambem ademilton se puder me ajudar?

tentei passa assim mais deu erro

tanto comm o codigo inicial ou com o q tava a resolver esse problema ficarei grata

D

erick se puder ajudar tb

D

to apanhando nessa conversao ja tentei d todo jeito mais nao vai :frowning:

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

esse método está errado. o tipo de retorno é String, porém não é o que está retornando.

D

String data?

D

seria assim?

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

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

esse método está errado. o tipo de retorno é String, porém não é o que está retornando.
Só uma dúvida, o que ele está retornando, se não é uma String???
O método format, da classe SimpleDateFormat retorna uma String sim e este método converteData (salvo por não conter orações nem um pastor) faz a conversão corretamente.
Agora, o problema é que todo o processo está errado.
Vamos analisar o seguinte, usando hibernate, o campo “data” que deseja-se usar como parâmetro de pesquisa, no banco de dados, deve estar como Date. Logo, essa conversão para String não faz nenhum sentido.
Segundo, o método recebe um Calendar, mas, não o usa para o processo de conversão.
Terceiro, como o método retorna uma String com a data atual, obviamente o processo de pesquisa irá contemplar mais prazo que o definido pelo usuário.

Se vai trabalhar com Date no banco, não precisa de um método de conversão.
Antes de qualquer coisa, poste a entidade que é usada como base para a consulta, assim podemos saber como o atributo que representa esta data está em VendaProduto.

D

entao eduardo

acho que vou fazer o seguinte retirar esta conversao
porem acontecera um erro no hora de listar
no local da data acontecera o erro de gregory calendar ai nao sei o que pode ser feito mais e date
no banco a entidade variavel ou seja os getters e setters esta assim para a variavel data
@Temporal(Temporal.Type.Date) algo assim
private calendar data;

public void setData(Calendar data)
this.setData = data algo assim, nao exatamente assim…os getters e setters foram gerados automatico pelo programa apartir da variavel calendar data.

irei fazer um teste vou mudar o codigo ai posto aqui novamente…irei tirar a conversao e ver se vai funciona
essa busca por data mais acho que e provavel que nao funciona pois antes a variavel era string e acabei mudando
pra date devido a problema na criacao de relatorios ai agora esta como date…
pois um datechoosercombo na hora que cria acaba criando uma date no banco e uma variavel calendar na entidade o que realmente retorna um date é isso que ocorreu.

D

vou postar a classe entidade pra vc e que estou no servico ai posto

D

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

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) {

	}

}

classe do getters e setters onde cria a tabela no banco

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;
	}
		
	}
D

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

drsmachado

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.

D

seria assim?

private String dataquery(Calendar data) {     
                // TODO Auto-generated method stub   
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");   
         dataProducao = format.format(data);  
                     
            }
drsmachado
daniferreira:
seria assim?
private String dataquery(Calendar data) {     
                // TODO Auto-generated method stub   
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");   
         dataProducao = format.format(data);  
                     
            }
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).
D
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

drsmachado
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


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.

D

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; }

D

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

D

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?

drsmachado

A princípio sim.

D

ta quando eu chegar do servico eu testo \o

D

esses cursos ai e pra compra?

D

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

ErickRAR

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.

drsmachado

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? }

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.

D

SimpleDateFormat forma = new SimpleDateFormat(data);

isso?

D

sem palavrao machado

D

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

drsmachado

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?

D

nossa O.o

drsmachado

Eu quero aprender russo.
Mas sei que não adianta nada perguntar a um russo como eu digo “Oi, como vai você?” em russo. Ele me responderia algo que me soaria como “Sdraztivuitiê, cac tvei d`lá?”. Isso me diria algo? E se eu precisar escrever isso? O idioma russo é baseado no alfabeto cirílico, cujos caracteres são diferentes. Eu não saberia escrever.
Mas eu tentei.
E se eu resolvesse tentar um salto de paraquedas, sem paraquedas? O importante é, então, tentar mesmo?

drsmachado

E só para provar que você está sendo preguiçoso(a), segue aí o link que te dará aproximandamente 22.800.000 resultados (!).

https://www.google.com.br/#hl=pt-BR&sclient=psy-ab&q=converter+string+para+calendar+java&oq=converter+string+para+calendar+&gs_l=hp.3.0.0j0i30.3120.8303.0.9407.31.18.0.8.8.3.774.7987.2-5j2j5j5j1.18.0...0.0.yQ0Xyno488o&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=613704dc169c0a0b&biw=1272&bih=633

Criado 2 de julho de 2012
Ultima resposta 4 de jul. de 2012
Respostas 42
Participantes 5