0

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);
                                      } 
  • 1
    A MVCE (Minimal, Complete, and Verifiable Example) might be more readable : http://stackoverflow.com/help/mcve – Peter May 19 '16 at 16:49
  • How can I do it? It's like 350 lines of code, I had to show all my if statements so you can see what changes between one and othe – Ricardo May 20 '16 at 08:00

1 Answers1

0

(This is the continue of the code, I couldn't put all the code in same question, it has a limit of characters)

// Se cliente, vendedor e data estiverem a ser pesquisados fazer a seguinte consulta SQL
 } if((jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
        try {

        SimpleDateFormat sd17 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial9 = sd17.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd18 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal9 = sd18.format(jDateChooserFinal.getDate());

                 PreparedStatement preparedStatement;   //9 SELECT * FROM fatura WHERE CodCli = 1 AND CodVendedor = 2 Data >= '2015/03/25' AND Data <= '2017/02/27'
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodCli ="
                         + jTextFieldPorCliente.getText()
                         + " AND "
                         + " CodVendedor = "
                         + jTextFieldPorVendedor.getText()
                         + " AND "
                         + " Data >= '"
                         + DataInicial9
                         + "' AND "
                         + " Data <= '"
                         + DataFinal9
                         + "'");
                System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

        // Se cliente e vendedor estiverem a ser pesquisados fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd19 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial10 = sd19.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd20 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal10 = sd20.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial10 == null )) || ((DataFinal10 == null ))) {
        try {
                 PreparedStatement preparedStatement;   //10 SELECT * FROM fatura WHERE CodCli = 1 AND CodVendedor = 2
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE 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 cliente e data estiverem a ser pesquisados fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd21 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial11 = sd21.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd22 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal11 = sd22.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
        try {

                 PreparedStatement preparedStatement;   //11 SELECT * FROM fatura WHERE CodCli = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodCli ="
                         + jTextFieldPorCliente.getText()
                         + " AND "
                         + " Data >= '"
                         + DataInicial11
                         + "' AND "
                         + " Data <= '"
                         + DataFinal11
                         + "'");
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

        // Se apenas cliente estiver a ser pesquisado fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd23 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial12 = sd23.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd24 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal12 = sd24.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial12 == null )) || ((DataFinal12 == null ))) {
        try {
                 PreparedStatement preparedStatement;   //12 SELECT * FROM fatura WHERE CodCli = 1
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodCli = "
                         + jTextFieldPorCliente.getText()
                         + "");                   
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

        // Se vendedor e data estiverem a ser pesquisados fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd25 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial13 = sd25.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd26 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal13 = sd26.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
        try {

                 PreparedStatement preparedStatement;   //13 SELECT * FROM fatura WHERE CodVendedor = 2 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodVendedor ="
                         + jTextFieldPorVendedor.getText()
                         + " AND "
                         + " Data >= '"
                         + DataInicial13
                         + "' AND "
                         + " Data <= '"
                         + DataFinal13
                         + "'");
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

        // Se apenas vendedor estiver a ser pesquisado fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd27 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial14 = sd27.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd28 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal14 = sd28.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial14 == null )) || ((DataFinal14 == null ))) {
        try {
                 PreparedStatement preparedStatement;   //14 SELECT * FROM fatura WHERE CodVendedor = 2
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodVendedor ="
                         + jTextFieldPorVendedor.getText()
                         + "");                    
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

        // Se apenas data estiver a ser pesquisada fazer a seguinte consulta SQL
 }
        SimpleDateFormat sd29 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial15 = sd29.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd30 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal15 = sd30.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
        try {

                 PreparedStatement preparedStatement;   //15 SELECT * FROM fatura WHERE Data >= '2015/03/25' AND Data <= '2017/02/27'
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE Data >= '"
                         + DataInicial15
                         + "' AND "
                         + " Data <= '"
                         + DataFinal15
                         + "'");
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }

  // Se nenhum campo estiver a ser pesquisado fazer a seguinte consulta SQL
 } 
        SimpleDateFormat sd31 = new SimpleDateFormat("yyyy-MM-dd");
        String DataInicial16 = sd31.format(jDateChooserInicial.getDate());

        SimpleDateFormat sd32 = new SimpleDateFormat("yyyy-MM-dd");
        String DataFinal16 = sd32.format(jDateChooserFinal.getDate());

        if((jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial16 == null )) || ((DataFinal16 == null ))) {
        try {
                 PreparedStatement preparedStatement;   //16 SELECT * FROM fatura
                 preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura");                     
                 System.out.println(preparedStatement);
                 ResultSet resultSetForFullTable = preparedStatement.executeQuery();
                 jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));

            } catch (SQLException ex) {
                 System.out.println(ex);
                                      }
 }

When the user searchs with anything that has at the same time the Data it goes well, the problem is when the user don't need data to query and needs the others, it goes wrong.

When I search without setting Data in jDateChooser the error is a NullPointerException, I've tried to read a lot of posts with that error but no one helped me out!

This is the error:

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.util.Calendar.setTime(Calendar.java:1770)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
    at java.text.DateFormat.format(DateFormat.java:345)
    at projeto_mitjavilla_ricardo.ListarVenda.jTextFieldPorArtigoKeyReleased(ListarVenda.java:2266)
    at projeto_mitjavilla_ricardo.ListarVenda.access$200(ListarVenda.java:28)
    at projeto_mitjavilla_ricardo.ListarVenda$4.keyReleased(ListarVenda.java:155)
    at java.awt.Component.processKeyEvent(Component.java:6496)
    at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)
    at java.awt.Component.processEvent(Component.java:6312)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
     (...)

Hope someone can understand what's the problem and figure it out, if anyone doesn't understand what I want to do, please ask me, I'll try to answer the best way I can.

p.s This is the first time I post anything in a forum, so if I did something wrong to post in this forum please tell me and I try to better.