Comparando data atual com data em um BD (Access)

5 respostas
D

E ai galera blz??
Estou tentando adicionar datas em uma combobox a partir de um select que compara data atual com as datas na tabela de um BD. Segue exemplo do código:

//através desta data são mostradas as datas disponíveis
Date data_atual = new Date();

//formatando a data
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.format(data_atual);

//conexão com o BD
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection("jdbc:odbc:teste","","");
			s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
		}
		catch(SQLException sqlex){
			JOptionPane.showMessageDialog(null, "Erro: no acesso ao Banco de Dados");
			System.exit(1);
		}
		catch(ClassNotFoundException cnfex){
			JOptionPane.showMessageDialog(null, "Erro: Classe não encontrada");
			System.exit(1);
		}


public void mouseClicked(MouseEvent e){
			if(e.getSource() == jcbtrecho){
				try{
					jcbdata.removeAllItems();
					jcbdata.addItem("");
					trecho = jcbtrecho.getSelectedIndex();
					rs = s.executeQuery("select via_data from viagem where via_cod_trecho = "+trecho+" and via_data &gt= "+data_atual);
					while(rs.next()){
						dsaida = rs.getString("via_data");
						if(dsaida.equals(dsaida)){
							jcbdata.addItem(dsaida);
						}
						else{
						}
					}
				}catch(SQLException sqlex){
					sqlex.printStackTrace();
					JOptionPane.showMessageDialog(null, "Erro");
				}
			}
}

Quando o usuário clica na jcbtrecho é feito um select no BD e as datas são retornadas na jcbdata. Mas quando eu clico na jcbtrecho recebo a seguinte mensagem:

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'via_cod_trecho = 1 and via_data &gt= Mon Aug 06 15:21:38 BRT 2007'

como eu posso fazer para comparar estas datas?

vlw!!

5 Respostas

evandroshx

Dixavado,

para comparar datas com a base de dados primeiro veja em que formato está sendo salva a data no seu BD.

Acho que seu problema se resolve formatando a data da seguinte forma:

Date data_atual = new Date();

//formatando a data
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
data_atual = dateFormat.format(data_atual);

e sua consulta ficaria dessa forma:

rs = s.executeQuery("select via_data from viagem where via_cod_trecho = "+trecho+" and via_data &gt= ' "+data_atual+" ' ");

Ah, este trecho do seu código está confuso para mim:

dsaida = rs.getString("via_data");
if(dsaida.equals(dsaida)){
	jcbdata.addItem(dsaida);
}
else{
}

Não entendi o sentido desta comparação.

T+

D

Com relação a este trecho não foi nada. Isso foi um lixo que ficou no código e vou retira-lo.
Na verdade eu queria fazer com que apareça somente uma data no combobox. Por exemplo no campo data de um BD tem vária datas 01/01/2007 e eu queria que ao invés de aparecer todas as datas cadastradas aparecesse somente uma. Se der para quebrar o galho nessa tb rsrs…

vlw cara!

rdantas

oi, só completando. Sua variavel trecho está recebendo getSelectedIndex() e depois vc usa esta variavel na pesquisa do banco, vc não deveria estar atribuindo (Date)jcbtrecho.getSelectedValue()?

Espero ter ajudado.

Rdantas.

evandroshx

Dixavado,

deixa ver se eu entendi…o que vc quer é trazer do BD datas diferentes somente uma vez cada. Se for isso então vc pode fazer este tratamento na própria consulta. Faça assim:

rs = s.executeQuery("select DISTINCT via_data from viagem where via_cod_trecho = "+trecho+" and via_data &gt= ' "+data_atual+" ' ");

Espero ter ajudado.
abraço.

D

Valeu mesmo galera!!
Vocês me ajudaram muito. “Matei” várias dúvidas só neste tópico!!

Só complementando o tópico do rdantas. Para entendimento. Estou desenvolvendo um site para compra de passagens de ônibus on-line. Cada trecho recebe um código, o trecho seria por exemplo Rio-São Paulo que teria o código 1 no BD. A minha variável trecho recebe o getSelectedIndex() porque cada trecho tem um código e eu faço a pesquisa no BD através de código do trecho.

Criado 6 de agosto de 2007
Ultima resposta 7 de ago. de 2007
Respostas 5
Participantes 3