hur.cn - 华软网

 热门搜索

数据窗口传参,好难哦!

  作者:未知    来源:网络    更新时间:2018/5/16
数据窗口的sql语句大致如下
         SELECT  
         "A_FILE_BASIC"."VESSEL_CODE",   
         "A_FILE_BASIC"."VESSEL_TYPE",   
         "A_FILE_BASIC"."DEPT_CODE" 
         FROM  "A_FILE_BASIC" 
         WHERE "A_FILE_BASIC"."DEPT_CODE" in :as_glbm  
说明:该数据窗口有一传入参数as_glbm,参数操作条件为in,现在传入参数设定为('10','1','0'),即gs_glbm = ('10','1','0'),传入检索不到数据。
检索不到数据原因:把参数('10','1','0')整下当作一变量{WHERE "A_FILE_BASIC"."DEPT_CODE" in '('10','1','0')'},而不是我想要的三个字符变量{WHERE "A_FILE_BASIC"."DEPT_CODE" in ('10','1','0')},有没有办法解决,自已觉得好难呀

------华软网友回答------
晕,这有什么难,建一个字符串数组传不就可以了
------华软网友回复------
用数组
------华软网友回复------
其实你可以这样来做

先定义数据窗口SQL


SELECT   A_FILE_BASIC.VESSEL_CODE,   
         A_FILE_BASIC.VESSEL_TYPE,   
         A_FILE_BASIC.DEPT_CODE 
         FROM  A_FILE_BASIC

也就是条件先不要加 ,并把引号去了,这样下面的操作方式,又不影响实际使用,我不明白你为何加上双引号在SQL


然后在使用的时候,如Cb_1.Clicked事件中

String  ls_OldSQL,ls_NewSQL

ls_OldSQL = dw_1.getsqlselect( )

ls_NewSQL = ls_OldSQL + "     WHERE A_FILE_BASIC.DEPT_CODE in (" + 您的条件 + ")"

//自己用Messagebox('',ls_newSQL)检查一下合成的SQL语法是不是正确,一般看到这样的就对了,最主要的是要在Messagebox显示时看到下面的单引号

/*SELECT   A_FILE_BASIC.VESSEL_CODE,   
         A_FILE_BASIC.VESSEL_TYPE,   
         A_FILE_BASIC.DEPT_CODE 
         FROM  A_FILE_BASIC
         WHERE A_FILE_BASIC.DEPT_CODE in ('10','1','0')
*/
dw_1.Setsqlselect(ls_NewSQL)
dw_1.Settransobject(sqlca)
dw_1.retrieve()
dw_1.Setsqlselect(ls_OldSQL)//这里以为了以后再用一次

//这个方法用于动态参数比较好
------华软网友回复------
pb 中的数组类型的数据是不可以作为参数传递的, 包括用作函数的参数也是不行的,
建议楼主把 ('10','1','0') 作为一个字符串,或者放在一个数据窗口中传递到你所需要的窗口中!
------华软网友回复------
wscft(勤勤恳恳, 追求美好生活!) 是 as_glbm = "'10','1','0'"这个意思吧,我也同意这么做。
但没试过。
------华软网友回复------
传个xml好了

------华软网友回复------
传入参数用数组名即可解决
------华软网友回复------
:)
------华软网友回复------
传数组参数和改变数据窗口的SQL方法都可取!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。