当前位置: 代码迷 >> PB >> 取数据窗口的检索参数解决思路
  详细解决方案

取数据窗口的检索参数解决思路

热度:144   发布时间:2016-04-29 09:23:09.0
取数据窗口的检索参数
我已经建立的一个数据窗口dw_1,里面有两个检索参数s和e,是string类型的.但是我在代码中想引用这两个检索参数,请问改怎么引用? 好象直接写变量=s 和变量=e 是不行的,请大家指教!

------解决方案--------------------
parm1 = yourStr1
parm2 = yourStr2
dw_1.retrieve(parm1,parm2)
------解决方案--------------------
探讨
检索参数是输入的,但是我在程序中需要用到输入的检索参数的值.

------解决方案--------------------
string a,b
a=dw_1.getitemstring(dw_1.getrow(),"s")
b=dw_1.getitemstring(dw_1.getrow(),"e")
dw_1.settransobject(sqlca)
dw_1.retrieve(a,b)
如果是和我类似的情况的话,试试这样吧···
------解决方案--------------------
1.你的数据源中的参数要预先设定好.
2.定义两变量,来保存你的输入控件的Text
3.你的SQL语句的条件使用你在数据源中定义的参数
4.在SQL语句中如果需要使用参数,需在你定义的参数前加上":"表示是个参数
5.执行了retrieve() 时,用变量把所有的参数都带入

下面是我的一动态改SQL语句的例子,你可以参考:
string modify_sql,rc, li_empno1,li_empno2,cname //定义变量用于存放SQL语句,查询参数,MODIFY函数的返回值

li_empno1=string(trim(sle_1.text)) //将SLE_1中的字符串去掉前后的空格转换为文本型,放入到变量LI_EMPNO1中
li_empno2=string(trim(sle_2.text)) //将SLE_2中的字符串去掉前后的空格转换为文本型,放入到变量LI_EMPNO2中

if isnull(sle_1.text) or trim(sle_1.text)="" then //如果SLE_1中的文体为空或是NULL值,则执行

li_empno1="000001" //将变量LI_EMPNO1赋值为最小(起始)值
end if
if isnull(sle_2.text) or trim(sle_2.text)="" then //如果SLE_2中的文体为空或是NULL值,则执行

li_empno2="999999" //将变量LI_EMPNO1赋值为最大(结束)值
end if

int li_lang //定义计数器

//以下为定义一个SQL语句放到MODIFY_SQL变量中

modify_sql = "SELECT * FROM emp1000c_view_listgrid where (emp1000c_view_listgrid.empno >= :empno1) and (emp1000c_view_listgrid.empno <= :empno2)" 
//将DW_1的SQL语句修改为MODIFY_SQL变量中所存放的SQL语句,并将返回值放入到变量RC中
rc=dw_1.Modify("DataWindow.Table.Select='"+modify_sql+"'")
if rc="" then //如果返回值为空,表示修改成功!
MessageBox("提示","修改成功!") 
li_lang=dw_1.retrieve(li_empno1,li_empno2,cname) //执行取数,带入三个参数,并将返回数值放入计数器中 (必须与数据源设定的参数保持一致)
else
MessageBox("提示",rc) //如果修改失败,则提示一个错误信息
return
end if
sle_3.text=string(li_lang) //将计数器中的内容以文本形式在SLE_3中显示
  相关解决方案