I wrote the method below:
public void setListaCompra() {
String sql = "SELECT * FROM\n" +
"(\n" +
" SELECT \n" +
" produtos.id AS id, \n" +
" nome_produto AS Nome, \n" +
" SUM(estoque.Estoque_produto) AS Estoque, \n" +
" Periodicidade AS Periodicidade, \n" +
" produtos.estoquemax_produto AS 'Média de venda mensal',\n" +
" IF(SUM(estoque.Estoque_produto) > produtos.estoquemax_produto * 2, 'Muito alto', IF(SUM(estoque.Estoque_produto) > produtos.estoquemax_produto , 'Alto', IF(SUM(estoque.Estoque_produto) > (produtos.estoquemax_produto / IF(Periodicidade = 'M' , 1 , IF(Periodicidade = 'Q' , 2 , 4))) *0.5, 'Bom', IF(SUM(estoque.Estoque_produto) > (produtos.estoquemax_produto / IF(Periodicidade = 'M' , 1 , IF(Periodicidade = 'Q' , 2 , 4))) * 0.3, 'Baixo', IF(SUM(estoque.Estoque_produto) > 0, 'Crítico', 'Zerado'))))) AS 'Nível estoque', \n" +
" precos.Custo_produto AS Custo, \n" +
" produtos.fornecedor_principal AS Fornecedor,\n" +
" Descricao_produto AS 'Marca/Laboratório', \n" +
" grupos_prod.Nome_grupo AS Grupo, \n" +
" subgrupos.Nome AS Subgrupo\n" +
"\n" +
" FROM genius.produtos\n" +
" JOIN produtos_estoque AS estoque ON produtos.id = estoque.id_produto\n" +
" JOIN produtos_precos AS precos ON produtos.id = precos.id_produto\n" +
" JOIN subgruposprodutos AS subgrupos ON produtos.Id_grupo = subgrupos.Id\n" +
" JOIN grupos_produtos AS grupos_prod ON subgrupos.id_grupo = grupos_prod.Id\n" +
" GROUP BY Id\n" +
") AS d\n" +
"WHERE ?";
String resultado;
String pesquisa;
String estado;
String campo = null;
pesquisa = txtPesquisaCompra.getText();
if (cmbEstado.getSelectedItem().equals("Todos")) {
estado = "";
} else {
estado = cmbEstado.getSelectedItem().toString();
}
if (radFornecedor.isSelected()) {
campo = "d.Fornecedor";
} else if (radGrupo.isSelected()){
campo = "d.Grupo";
} else if (radMarca.isSelected()){
campo = "d.'Marca/Laboratório'";
} else if (radNome.isSelected()){
campo = "d.Nome";
}
resultado = campo + " LIKE '%" + pesquisa +"%' AND d.'Nível estoque' LIKE '%" + estado + "%'";
System.out.println(resultado);
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, resultado);
rs = pst.executeQuery();
tblCompra.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
When I run the method it fills only the column title and no row appears, I initially thought the problem was in the value of the String result, since it is used to fill in the value of the WHERE clause:
pst.setString(1, resultado);
Then I got the value of String using:
System.out.println(resultado);
You gave:
d.Nome LIKE '%%' AND d.'Nível estoque' LIKE '%%'
I did it right in MySql, and it worked fine by returning all the values, so the problem should be in the table, but I do not know where.