2016-12-20 6 views
-1

私は非常に奇妙な問題に直面しています。 DynamicReports APIでレポートを生成しようとしています。レポートはWHERE句なしで生成されていますが、WHERE句で生成されていません。データベースはMySQLです。どんな助けも大歓迎です。ここでは、コードは次のようになります。DynamicReportsが日付のwhere句でレポートを生成しない

サービスクラス:

public class ReportSevice { 
    public void createReport (String reportDate) { 
     System.out.println(reportDate); 
     String sql_statement = null; 
     Connection connection = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      connection = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/world","root", "password"); 
      sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = " + reportDate; 
     } catch (SQLException e) { 
      e.printStackTrace(); 
      return; 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
      return; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     JasperReportBuilder report = DynamicReports.report(); 
     report 
     .columns(
       Columns.column("Customer Id", "id", DataTypes.integerType()), 
       Columns.column("First Name", "fName", DataTypes.stringType()), 
       Columns.column("Last Name", "lName", DataTypes.stringType()), 
       Columns.column("Date", "pickUpDate", DataTypes.stringType())) 
     .title(Components.text("********Report By Date********") 
       .setHorizontalTextAlignment(HorizontalTextAlignment.CENTER)) 
     .pageFooter(Components.pageXofY()) 
     .setDataSource(sql_statement, connection); 

     try { 
      report.show(); 
     } catch (DRException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

[日時MYSQLの整形によるフィルタ]の可能な重複(http://stackoverflow.com/questions/16657202/filter-by-datetime-mysql-formating ) –

+0

一部のMySQLクライアント(MySQL Workbenchなど)のヘルプを使用してクエリをチェックしましたか? DBの* pickUpDate *列の型は何ですか? –

+0

@AlexK、pickUpDateの型は文字列 – JoeZ

答えて

0

最後に私はそれを働かせました。解決策は非常に簡単です。私は将来のユーザーのためにここでコードを共有しています。代わりに

sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate = " + reportDate; 

書き込みの本:

sql_statement = "SELECT id, fName, lName, pickUpDate FROM reservations_db WHERE pickUpDate=$P{reportDate}" 
-2

私はこれがあなたの特定の問題を解決することを約束することはできませんが、それはショットを与えるworhtです: の代わりにあなたの全体のクエリを書きますsourceは、where句とそれ以外のもので完全で、pickUpDateをパラメータとするSQLで関数を作成し、クエリを実行してテーブルを返します。 sql_statement = "select * from function_name(" + reportDate + ")"

このメソッドを追加して以来、私はjasperReportsで作業しています。 。乾杯。

+0

IMHO、それは単純なフィルタを作るために関数を作成するにはあまりにも高価です –

+0

@ D.Tabakov、私はサンプルSQL関数とjavaからその関数を呼び出す方法を教えてくださいコード?私はmysqlのworkbenchでSQL関数を書いて保存し、javaコードから呼び出しますか? – JoeZ

+0

@D。 Tabakov、あなたはJasperReports APIコールまたはDynamicReport API呼び出しを呼び出すことについて話していますか? – JoeZ

関連する問題