查看单个帖子
  #8 (permalink)  
旧 2008-12-30, 04:12 PM
sanegod sanegod 当前离线
Junior Member
 
注册日期: 2008-10-23
帖子: 14
积分: 251
默认

我遇到一个类似的问题!是用js脚本解决的!
起初我有这样一个数据集:
select * from table1 where column1 in (params["psnname"]);
这里的参数params["psnname"]传进来的数量是一个变动的,个数不定!
你想啊,in过程是一个特殊的过程;

最后研究发现需要借助脚本函数function和数据集中的“属性绑定”功能;
还拿上面的语句为例,
1.在数据集的查询里写上不带任何条件的一个select:
select * from table1
2.在数据集的“属性绑定中”写入下面内容,对应你的语句去做相应的修改:

function pm(n){
var s,ss;
var bbb="";
var s = n;
if(s!=""){
ss = s.split(",");
for( i=0;i < ss.length;i++){
if(ss.length==1){
bbb = ss[i] ;
}
else{
if (i==ss.length-1){
bbb += "'"+ ss[i];
}
else if (i>=1){
bbb += "'" + ss[i] + "'," ;
}
else{
bbb += ss[i] + "'," ;
}
}
}
return (bbb);
}
}
"select * from table1 where column1 in ('" +
pm(params["psnname"])
+"')"
这里定义一个pm函数,这个函数的功能是将你要输入的条件转换成在语句中可以in的字符串;
如,你要传过来三个值:a,b,c (格式必须这样)
救过pm后,就会变为:'a','b','c'
这样在语句中的in就发挥作用了,这就是参数多值问题的解决!
解决这个东西花了一下午时间啊,转载的朋友,注明是小哲发布的啊!呵呵!
回复时引用此帖