I'm a beginner in programming so if possible help me out! I'm doing a program that does selects to DataBase(MySQL) depending in what user choose's to search for. Programm has 4 different things to search: Artigo, Cliente, Vendedor and Data that has 2 jDateChoosers (it will query between first date and second date). So I'll need 16 if conditions to catch every possible combinations.
Here's my code about one event, the jTextFieldClienteKeyReleased, take on consideration that the code is repeated equaly in all other TextFieldsKeyReleaseds and jDateChoosersMouseClicked.
private void jTextFieldPorVendedorKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here
// Se artigo, cliente, vendedor e data forem pesquisados fazer a seguinte consulta SQL
SimpleDateFormat sd1 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial1 = sd1.format(jDateChooserInicial.getDate());
SimpleDateFormat sd2 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal1 = sd2.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //1 SELECT * FROM fatura WHERE CodArt LIKE '%AES%' AND CodCli = 1 AND CodVendedor = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ "CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ " AND "
+ "Data >= '"
+ DataInicial1
+ "' AND "
+ " Data <= '"
+ DataFinal1
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
//Se artigo, cliente e vendedor estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd3 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial2 = sd3.format(jDateChooserInicial.getDate());
SimpleDateFormat sd4 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal2 = sd4.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial2 == null )) || ((DataFinal2 == null ))) /*|| (jDateChooserInicial.getDateFormatString().contains("yyyy-MM-dd")) || (jDateChooserFinal.getDateFormatString().contains("yyyy-MM-dd")))*/ {
try {
PreparedStatement preparedStatement; //2 SELECT * FROM fatura WHERE CodArt LIKE '%39%' AND CodCli = 1 AND CodVendedor = 1
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ "CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ "CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo, cliente e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd5 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial3 = sd5.format(jDateChooserInicial.getDate());
SimpleDateFormat sd6 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal3 = sd6.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //3 SELECT * FROM fatura WHERE CodArt = 2 AND CodCli = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ " Data >= '"
+ DataInicial3
+ "' AND "
+ " Data <= '"
+ DataFinal3
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e cliente estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd7 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial4 = sd7.format(jDateChooserInicial.getDate());
SimpleDateFormat sd8 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal4 = sd8.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial4 == null )) || ((DataFinal4 == null ))) {
try {
PreparedStatement preparedStatement; //4 SELECT * FROM fatura WHERE CodArt = 1 AND CodCli = 1
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo, vendedor e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd9 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial5 = sd9.format(jDateChooserInicial.getDate());
SimpleDateFormat sd10 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal5 = sd10.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //5 SELECT * FROM fatura WHERE CodArt = 2 AND CodVendedor = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ " AND "
+ " Data >= '"
+ DataInicial5
+ "' AND "
+ " Data <= '"
+ DataFinal5
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e vendedor estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd11 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial6 = sd11.format(jDateChooserInicial.getDate());
SimpleDateFormat sd12 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal6 = sd12.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial6 == null )) || ((DataFinal6 == null ))){
try {
PreparedStatement preparedStatement; //6 SELECT * FROM fatura WHERE CodArt = 1 AND CodVendedor = 2
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd13 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial7 = sd13.format(jDateChooserInicial.getDate());
SimpleDateFormat sd14 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal7 = sd14.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))){
try {
PreparedStatement preparedStatement; //7 SELECT * FROM fatura WHERE CodArt = 2 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " Data >= '"
+ DataInicial7
+ "' AND "
+ " Data <= '"
+ DataFinal7
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se apenas artigo estiver a ser pesquisado fazer a seguinte consulta SQL
}
SimpleDateFormat sd15 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial8 = sd15.format(jDateChooserInicial.getDate());
SimpleDateFormat sd16 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal8 = sd16.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial8 == null )) || ((DataFinal8 == null ))){
try {
PreparedStatement preparedStatement; //8 SELECT * FROM `fatura` WHERE CodArt LIKE '%AM%'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}