码迷,mamicode.com
首页 > 数据库 > 详细

pb datawindow中获取datawindowchild的sql以及dataobject

时间:2015-09-11 20:47:14      阅读:752      评论:0      收藏:0      [点我收藏+]

标签:

在实现一个功能的时候,想获取一个数据窗口中的datawindowchild里边sql,然后将sql放到一个datastore中检索,原本的想法是这样的

adw_main.getChild("xxxx",ldwc_temp)
lds_temp.dataobject = ldwc_temp.dataobject
ls_sql = lds_temp.getsqlselect( )

发现datawindowchild根本就没有dataobject这个属性

通过百度才知道可以直接通过datawindowchild的GetSQLSelect()方法获取 sql

sql是可以获取到了,那问题又来了,如何获取datawindowchild关联的datawindow的名称呢?

查看数据窗口的源码才知道,这个datawindow放在了dddw.name的属性下边

<DW Control Name>.Describe("<Columnname>.DDDW.Name")

<DW Control Name>.Modify("<Columnname>.DDDW.Name=<name of DataWindow used as dddw> ")

这样就可以了 :)

 

Integer rtncode

String ls_nowFld,ls_deptid,ls_sql

DataWindowChild fld_child

rtncode = dw_1.GetChild("Unit_id",fld_child) //获得Unit_id字段名下拉数据窗口的句柄

If rtncode = -1 Then MessageBox("错误!", "不是下拉数据窗口!")

fld_child.SetTransObject(SQLCA) //设置事务对象

ls_sql = Lower(fld_child.GetSQLSelect())// 获得DDDW的SQL语句



// 去除Sql 语句中的Where条件子句, 如原Sql 语句中须有Where条件子句,此处则需进行较

//复杂的处理,应视具体情况而定。

if Pos(ls_sql, " where ")>0 then ls_sql = Left(ls_sql,Pos(ls_sql, " where "))

//重新设置Sql 语句中的Where条件子句

ls_deptid=dw_1.Object.dept_id[GetRow()] //取得当前dept_id选定值

ls_sql = ls_sql + " Where dept_id = ‘" +Trim(ls_deptid)+"‘"



//重新设置Sql 语句

fld_child.SetSQLSelect(ls_sql)

fld_child.Retrieve()//取得满足条件的数据

 

pb datawindow中获取datawindowchild的sql以及dataobject

标签:

原文地址:http://www.cnblogs.com/szxiaofei14/p/4801911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!