起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20442|回复: 12

[结贴] 关于ksql sql 查询问题

  [复制链接]

43

主题

109

帖子

626

积分

高级会员

Rank: 4

积分
626
QQ
发表于 2014-4-22 09:49:23 | 显示全部楼层 |阅读模式
版本: X5.2.7 小版本号:
数据库: MySQL 服务器操作系统: 应用服务器:
客户端操作系统: Windows 7 浏览器:
本帖最后由 wdq7402065w 于 2014-4-22 09:53 编辑

我现在做了一个报表   需要随机使用3个条件进行查询  条件字段 id    name    date   用ksql 怎么实现
另  用SQL时下面的代码对吗
public static Table query(String name, String id, String date ) {                 
                       String oracle = "SELECT FJSDH,FFHR,FSHDZ,FDW,FKS,FSJ,FDH,fDG,FFHGSMC,FJJRBFH,FFHRQ from XY_FPJSB";
                        String mssql = "SELECT FJSDH,FFHR,FSHDZ,FDW,FKS,FSJ,FDH,fDG,FFHGSMC,FJJRBFH,FFHRQ from XY_FPJSB";
                        
                        oracle += " WHERE 1=1 ";
                        mssql += " WHERE 1=1 ";
                        
                        if(!"".equals(name)){
                                oracle += "and FDW like '%"+name+"%' ";
                                mssql += "and FDW like '%"+name+"%' ";
                        }
                        if(!"".equals(id)){
                                oracle += String.format("and FJSDH = '%s' ", id);
                                mssql += String.format("and FJSDH = '%s' ", id);
                        }
                        if(!"".equals(id)){
                                oracle += String.format("and FFHRQ = '%s' ", date);
                                mssql += String.format("and FFHRQ = '%s' ", date);
                        }

                        
                        HashMap<String,String> sqlMap = new HashMap<String,String>();
                        sqlMap.put(SQL.DEFAULT_DB_NAME,mssql);
                        sqlMap.put(DatabaseProduct.ORACLE.name(),oracle);
                        sqlMap.put(DatabaseProduct.MSSQL.name(),mssql);
                        sqlMap.put(DatabaseProduct.KINGBASE.name(),oracle);
                        sqlMap.put(DatabaseProduct.SYBASE.name(),mssql);
                        sqlMap.put(DatabaseProduct.DB2.name(),oracle);
                        return SQL.select(sqlMap,null,"/xygl/xtgl/data");
                }

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
发表于 2014-4-22 09:53:10 | 显示全部楼层
可以参考KSQL、SQL使用说明 http://bbs.justep.com/thread-33592-1-1.html
回复 支持 反对

使用道具 举报

109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2014-4-22 10:04:29 | 显示全部楼层
KSQL语句中必须给出概念的别名,可以与概念同名,
如:SELECT SA_OPPerson.sName FROM SA_OPPerson SA_OPPerson
KSQL支持的操作符 比较:=, >, <, >=, <=, <>, like, in, exists, is null, is not null, between
具体的KSQL语法,可以查询API
api.png

评分

参与人数 1 +4 收起 理由
jishuang + 4 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

43

主题

109

帖子

626

积分

高级会员

Rank: 4

积分
626
QQ
 楼主| 发表于 2014-4-22 10:18:26 | 显示全部楼层
MaHZ 发表于 2014-4-22 10:04
KSQL语句中必须给出概念的别名,可以与概念同名,
如:SELECT SA_OPPerson.sName FROM SA_OPPerson SA_OPP ...

我现在不知道where 条件的个数变化时怎么写 查询时 可能只用到id    可能只用用到name   可能只用用到name
也可能用到id和name      也可能用到id  name date
回复 支持 反对

使用道具 举报

109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2014-4-22 10:53:26 | 显示全部楼层
wdq7402065w 发表于 2014-4-22 10:18
我现在不知道where 条件的个数变化时怎么写 查询时 可能只用到id    可能只用用到name   可能只用用到nam ...

那就是多条件查询了 ,你可以拼sql进行查询,具体的操作,百度一下,网上很多的
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-4-22 11:14:00 | 显示全部楼层
1、使用queryAction查询数据,调用data组件的setFilter方法设置条件
2、使用ksql.select查询数据,在java中拼接ksql
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-4-22 12:51:55 | 显示全部楼层
SQL方式我是不说了,

KSQL可以这个传值

//得到当前选择行的ID
var id = justep.xbl('dataMain').getID();
//给条件赋值,使得ksql完整  Iid 就是传给 你写的 KSQL 里面的值
justep.xbl('ds1').setStringVar('a', id);
//刷新报表数据。
justep.xbl('report1').refresh();
//显示报表预览效果
  justep.xbl('report1').preview();


具体的你可以参考 报表 组件,里也在相关的介绍
http://bbs.justep.com/forum.php? ... page=1#pid165010211
向前进,向前进,我们……
回复 支持 反对

使用道具 举报

17

主题

355

帖子

772

积分

高级会员

Rank: 4

积分
772
QQ
发表于 2014-4-22 15:28:08 | 显示全部楼层
把id    name    date   作为组合条件进行前段拼写,直接作为where条件进行传值。

评分

参与人数 1 +2 收起 理由
jishuang + 2 赞一个!

查看全部评分

一步一步走向那迦南地......
回复 支持 反对

使用道具 举报

43

主题

109

帖子

626

积分

高级会员

Rank: 4

积分
626
QQ
 楼主| 发表于 2014-4-22 15:53:47 | 显示全部楼层
fpj 发表于 2014-4-22 12:51
SQL方式我是不说了,

KSQL可以这个传值

shentong.data1AfterRefresh = function(event){
var data = justep.xbl('data1');
data.setValue("fRQ",justep.Date.toString(new Date(), justep.Date.STANDART_FORMAT_SHOT));  
var s = data.getValue("fRQ");   
data.setValue("fRQ2",s);                 
};

shentong.trigger3Click = function(event){
//静态data
        var data1 = justep.xbl('data1');
//得到开始时间var id = justep.xbl('dataMain').getID()
        if(data1.getValue('fRQ2') != ''){
                var d1 = data1.getValue('fRQ2');  
               d1 = d1.substr(0, 10);
                d1 = d1.replace("T", " ");   
                alert(d1);
                justep.xbl('ds1').setStringVar('a',d1);
        }
//得到结束时间
        if(data1.getValue('fRQ1') != ''){
                var d2 = data1.getValue('fRQ1');
                d2 = d2.substr(0, 10);
                d2 = d2.replace("T", " ");
               justep.xbl('ds1').setStringVar('b', d2);

        }
//刷新报表
        justep.xbl('gridReport').refresh();
};

帮忙看一下什么问题   
出现下面的报错
执行KSQL出错, KSQL: select XY_FPJSB.* from XY_FPJSB XY_FPJSB where XY_FPJSB.fFHRQ >= :a AND XY_FPJSB.fFHRQ <= :b
        at com.justep.report.controller.DataController.a(Unknown Source)
        at com.justep.report.controller.DataController.a(Unknown Source

当把 a b换成2014-04-22 这样的时间时没什么问题     
回复 支持 反对

使用道具 举报

11

主题

1134

帖子

1261

积分

金牌会员

Rank: 6Rank: 6

积分
1261
QQ
发表于 2014-4-22 16:05:07 | 显示全部楼层
给日期赋值 使用setDateVar、setTimeVar、setDateTimeVar 不要是用setStringVar
远程的联系方法QQ2025089647。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-24 06:32 , Processed in 0.070521 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表