如何在两个日期框zk之间进行过滤

时间:2017-08-25 06:20:40

标签: java oracle zk

我有2个日期框来制作过滤器。他们的价值将决定'来自'和'到'在我的查询中(我现在使用的是Oracle),这是代码。

@Listen("onClick=#btnSaveFilter")
public void saveFilter() throws Exception {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

    c_main_filter.detach();
    cc.refreshFilter(""
            +"[Date of Birth] between '" + formatter.format(dbDateBirthFrom.getValue()).toString() + "' "
            + "and '" + formatter.format(dbDateBirthto.getValue()).toString() + "'");

}

当两个datebox都有值时,查询工作。但是当它们没有值时,查询没有提供任何数据。

当datebox有值时,它会提供数据

"[Registration Date] between '2010-09-23' and '2010-09-23' "

当datebox没有值时,它没有提供数据

 "[Registration Date] between '' and '' "

像我想要的另一个过滤器,如果值是''那么所有的数据都会出现,但不是:D哈哈哈。条件实际上超过这个,过滤器有很多参数,其中一个就是这个条件,其中一些使用日期格式,所以会有更多这样的条件。

你知道如何优雅地解决这个问题,我一直在考虑使用'如果'确定日期框有值或没有然后我会将文本附加到查询文本,如果它们都有价值,但后来我发现另一个问题我如何添加'和'在查询中给出另一个条件,

假设我有5个条件,那么

"select * from xxxx where 1stcondition and 2ndcondition and
3rdcondition and 4thcondition and 5th condition"

所以当第5个条件的日期框没有值时,查询将会出错,如此

"select * from xxxx where 1stcondition and 2ndcondition and 
3rdcondition and 4thcondition and" 

如果我想使用'如果'我该如何使用'和'?但如果你有其他选择,那将是很好的因为我不必处理'如果' :D

2 个答案:

答案 0 :(得分:1)

您可以使用$('#msg-modal').modal(); $scope.toggle=true; 来确定是否需要放置$('#msg-modal').modal('hide'); $scope.toggle=false;

String.isEmpty()

答案 1 :(得分:0)

我不知道您是否使用普通的JDBC或ORM框架(如hibernate)来查询数据库,但您可以尝试这样的事情:

public void saveFileter(){
 StringBuilder sb = new StringBuilder();
 sb.append("select * from table ");

 if(dbDateBirthFrom.getValue() != null{
   sb.append(determineFilterWord(sb.toString()));
   sb.append("your condition ");
 }

 if(dbDateBirthTo.getValue() != null{
   sb.append(determineFilterWord(sb.toString()));
   sb.append("your condition ")
 }
 session.createQuery(sb.toString()); //if you using hibernate
}

private string determineFilterWord(String query){
  if(query.toLowerCase().indexOf("where") != -1){
     return "and ";
   }else{
     return "where ";
   }
}