zoukankan      html  css  js  c++  java
  • pb datawindow中获取datawindowchild的sql以及dataobject

    在实现一个功能的时候,想获取一个数据窗口中的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()//取得满足条件的数据
  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/szxiaofei14/p/4801911.html
Copyright © 2011-2022 走看看