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()//取得满足条件的数据
  • 相关阅读:
    win10安装jmeter配置环境路径
    genymotion在mac上的安装
    jmeter的启动
    win10的cmd输入javac的问题
    01 | 你真的懂测试吗?从“用户登录”测试谈起 茹炳晟
    冒烟测试
    软件测试基础知识
    红队指南--第3章 列举
    REDTEAM 指南---第四章 外部侦察
    Red Team 指南-第1章 红队和红队概述
  • 原文地址:https://www.cnblogs.com/szxiaofei14/p/4801911.html
Copyright © 2011-2022 走看看