1
I’m trying to use the date of a jYearChoser
and a jMonthChoser
to search for a full month sale, already tested at the Mysql prompt and worked perfectly with the command below:
SELECT FORMAT(SUM(vendas.total_pagar),2), FORMAT(SUM(desconto_venda),2), FORMAT(SUM(orcamentos.valor_orcamento),2), FORMAT(AVG(valor_venda),2), COUNT(vendas.id), COUNT(DISTINCT(vendas.id_cliente))
FROM genius.vendas
LEFT JOIN genius.orcamentos ON genius.orcamentos.id = id_orcamento
WHERE EXTRACT(YEAR_MONTH FROM `data_venda`) = (EXTRACT(YEAR_MONTH FROM '2016-08-01' - INTERVAL 0 MONTH)) AND vendas.Id_funcionario = 5;
But when I try to use in Java the way below it works, but the account goes wrong:
//abaixo preenche o painel cálculo de pagamento
sql = "SELECT SUM(vendas.total_pagar), FORMAT(SUM(desconto_venda),2), FORMAT(SUM(orcamentos.valor_orcamento),2), FORMAT(AVG(valor_venda),2), COUNT(vendas.id), COUNT(DISTINCT(vendas.id_cliente))\n" +
"FROM genius.vendas\n" +
"LEFT JOIN genius.orcamentos ON genius.orcamentos.id = id_orcamento\n" +
"WHERE EXTRACT(YEAR_MONTH FROM `data_venda`) = (EXTRACT(YEAR_MONTH FROM ?'-1' - INTERVAL 0 MONTH)) AND vendas.Id_funcionario = ?";
try {
int setar = tblFuncionarios.getSelectedRow();
String id = (tblFuncionarios.getModel().getValueAt(setar, 0).toString());
pst = conexao.prepareStatement(sql);
// passando o Id para o "?
pst.setString(1,Integer.toString(jYearChooser1.getYear()) + "-" + Integer.toString(jMonthChooser1.getMonth()));
pst.setString(2, id);
rs = pst.executeQuery();
if(rs.next()) {
double vendas = (rs.getDouble(1));
lblVendas.setText(Double.toString(vendas));
lblDescontos.setText(rs.getString(2));
lblOrcamentos.setText(rs.getString(3));
lblVMC.setText(rs.getString(4));
lblVendas_quant.setText(rs.getString(5));
lblClientes.setText(rs.getString(6));
if ("sim".equals(lblCG.getText())) { // a condição abaixo calcula a porcentagem para comissão gradativa
double inicioCG = Double.parseDouble(lblCGInicio.getText());
double intervaloCG = Double.parseDouble(lblCGIntervalo.getText());
double maxPorcCG = Double.parseDouble(lblCGLimite.getText());
int fator = (int) ((vendas - inicioCG) / intervaloCG + 1);
lblCGPorc.setText(Integer.toString(fator));
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
Does anyone have any tips?
irrelevant parts of the code have been omitted*
– Roberto Gomes
I wish I could replicate this problem. Can you edit your question to let a code that plays the problem and is also compileable and executable? Also, what is your connection string with Mysql?
– Victor Stafusa
Please check the value of
jYearChooser1.getYear()
, the value ofjMonthChooser1.getMonth()
, the exit of query in Java and output directly in SQL.– Anthony Accioly
jYearChooser1.getYear() is "2016" and jMonthChooser1.getMonth() is "08"
– Roberto Gomes