PB日志-数据窗口控件的函数19.Describe()

C/C++ 面试大纲 c/c++面试大纲 阅读详情
 Describe()
功能:返回数据窗口控件结构方面的指定信息包括DataWindow   对象以及数据窗口
对象中其他对象的属性取值数据窗口中的每个列每个标题等等都是对象各自都有一
组描述其特征的属性参看第6   章数据窗口对象的属性在Describe()函数的参数
中可以通过字符串指定要得到其值的一组属性该函数将会把它们的值作为一个字符串返
回
使用Describe()函数也可以计算表达式的值表达式中可以使用指定行/列的值
语法:dwcontrol.Describe   (   propertylist   )
参数:dwcontrol   数据窗口控件名
propertylist   属性列表是个字符串由要查看其取值的一个或多个属性或表
达式组成属性以及表达式之间使用空格分隔这里的属性指数据窗口对象的属性
返回值String   该函数返回一个字符串这个字符串由对应于propertylist   中各属性
的具体取值构成各属性值之间使用换行字符~n   分隔
如果属性列表中包含了无效的项比如拼错了属性名或写错了表达式那么Describe()
函数在相应项的位置返回一个惊叹号!   并忽略随后的所有项当某个属性没有值时
Describe()函数在相应位置返回一个问号?
如果某个属性的值是个问号?   那么Describe()函数将在该项位置返回问号并把
问号放置到引号中通常为单引号 '
如果任何参数的值为NULL   则Describe()函数返回NULL
用法使用Describe()函数可以深入理解数据窗口的结构例如我们可以查到数据
窗口都具备哪些区域也有称做带Band   的叫法各列的数据类型是什么等使用
Describe()函数也能够得到数据窗口当前的属性取值之后可以使用数据窗口控件Modify()
函数进行所需的修改
应用程序中经常使用Describe()函数得到数据窗口当前的SELECT   语句然后根据需
要进行修改比如增加WHERE   子句修改排序方式等
当开发人员使用数据窗口画笔以图形化方式创建数据窗口对象选择了操作数据库的
数据源后实际上就定义了某个SELECT   语句在保存数据窗口对象时PowerBuilder
保存的不是标准的SQL   SELECT   语句而是以它自己定义格式的SELECT   语句称做
PBSELECT   语句与数据窗口对象保存在一起当应用程序使用Describe()函数得到
Table.Select   属性的值时如果应用程序已经连接到数据库上那么Describe()函数返回SQL
SELECT   语句如果应用程序尚未连接到数据库上那么Describe()函数返回PBSELECT
语句
在Describe()函数的参数中引用数据窗口对象属性的一般语法为
objectname.property
有关数据窗口属性表达式的详细介绍请参阅第6   章数据窗口对象属性的访问方法
节
对数据窗口的某些属性来说Describe()函数将返回一组值每个值之间使用Tab   字符
~t   分隔例如下面的Describe()语句将返回指定数据窗口当前使用的所有带Band
的带名
BandsName=dw_1.Describe( "DataWindow.Bands ")
带名之间使用Tab   字符~t   分隔具有下述的形式数据窗口不同使用的带也略
有区别
header~tdetail~tsummary~tfooter
当应用程序要查看某个列的属性时可以使用列名也可以使用列号使用列号时
在列号前放上#号例如Name   是某个数据窗口的第2   列那么语句
Name=dw_1.Describe( "Name.coltype ")
与
Name=dw_1.Describe( "#2.coltype ")
等价
当我们使用数据窗口画笔创建数据窗口对象时系统自动为列对象和列的标题对象命
名列对象的名称通常与数据库中相应列的名称相同计算列的名称采用Compute_####
表示其中####是四个数字列标题的名称由列对象名加上_t   构成比如数据库某个表
中有个名称为salary   的列当数据窗口对象中包含该列时这个列对象的名称为salary
相应列标题的名称为salary_t
下面介绍一下使用Describe()函数计算表达式的方法
可以把Evaluate()函数作为Describe()函数的参数来计算数据窗口画笔表达式的值
Evaluate()函数的语法格式为
Evaluate   (   'expression ',   rownumber   )
这里expression   是希望计算其值的数据窗口画笔表达式rownumber   是数据行的行号
画笔表达式根据该行的数据计算其值在画笔表达式中可以使用数据窗口画笔函数有关
数据窗口画笔函数的详细介绍请参阅第6   章数据窗口画笔函数节例如下面的语句
根据数据窗口第3   行salary   列的值返回255   或0
ls_ret   =   dw_1.Describe(   "Evaluate( 'If(salary   >   100000,   255,   0) ',   3) ")
一般来说我们使用数据窗口控件函数来得到数据窗口中数据值但是有些数据窗
口画笔函数例如LookUpDisplay()函数不能在代码中直接调用此时在Describe()函
数中利用Evaluate()函数进行计算就成为唯一的选择
示例1   假设有个名字为dw_emp   的数据窗口控件该控件关联的数据窗口对象中由
两个列名称分别为emp   和empname   相应列标题对象的名称分别为emp_h   和empname_h
另外state   不是该数据窗口中的一个对象使用该选择的目的是为了演示Describe()函数
对不正确属性设置的处理程序执行下述代码后
string   ls_request,   ls_report
ls_request   =   "DataWindow.Bands   DataWindow.Objects   "&
+ "empname_h.Text   "   &
+ "empname_h.Type   emp.Type   emp.Coltype   "   &
+ "state.Type   empname.Type   empname_h.Visible "
ls_report   =   dw_1.Describe(ls_request)
变量ls_report   的值为
header~tdetail~tsummary~tfooter~Nemp~tempname~temp_h~tempname_h~N
"Employee~R~NName "cd~N   text~N   column~Nchar(20)~N!
结果中惊叹号的出现表示Describe()的参数中出现的错误的项即原本没有的state   列
示例2   下面的语句在调用GetItemNumber()函数得到salary   列的值之前首先检查该
列的数据类型
string   ls_data_type
integer   li_rate
ls_data_type   =   dw_1.Describe( "salary.ColType ")
IF   ls_data_type   =   "number "   THEN
li_rate   =   dw_1.GetItemNumber(5,   "salary ")
ELSE
.   .   .   //   其他处理
END   IF
示例3   下面的语句利用列名得到当前列的数据类型这段代码要在数据窗口控件的
事件处理程序中使用在其他地方使用时需要把This   替换为实际的数据窗口控件名
s   =   This.Describe(This.GetColumnName()+   ".ColType ")
示例4   下面的代码段是数据窗口控件ScrollVertical   事件的事件处理程序的一部分
该代码段的功能是当用户滚动数据窗口不管是按箭头键还是移动滚动条进行滚动时
把数据窗口中第一个可见行设置为当前行
s   =   This.Describe( "DataWindow.FirstRowOnPage ")   //得到第一个可见行的行号
IF   IsNumber(s)   THEN   This.SetRow(Integer(s))   //设置为当前行.
示例5   下面的代码使用了Describe()的Evaluate()函数其功能是得到state_code   列的
显示值该列使用了下拉数据窗口DropDownDataWindow   编辑风格这段代码应该在
发生过ItemChanged   事件后执行这样用户所选值已经被放入了相应的缓冲区为了安全
下面的代码放置在名称为getdisplayvalue   的数据窗口用户自定义事件中
string   rownumber,   displayvalue

rownumber   =   String(dw_1.GetRow())
displayvalue   =   dw_1.Describe(   &
"Evaluate( 'LookUpDisplay(state_code)   ',   "   &
+   rownumber   +   ") ")
在数据窗口的ItemChanged   事件中可以编写下述代码来邮寄用户自定义事件
getdisplayvalue
dw_1.PostEvent( "getdisplayvalue ")
示例6   下面的代码是某个数据窗口控件ItemError   事件处理程序的一部分其功能是
把当前出错的数据项的值置为空除String   类型的列外其他类型的列不能置为空字符串
那样将产生数据类型不匹配的错误代码中Data   和row   是ItemError   事件的参数
string   s
s   =   This.Describe(This.GetColumnName()   +   ".Coltype ")
CHOOSE   CASE   s
CASE   "number "
IF   Trim(data)   =   " "   THEN
integer   null_num
SetNull(null_num)
This.SetItem(row,   This.GetColumn(),   null_num)
RETURN   3
END   IF
CASE   "date "
IF   Trim(data)   =   " "   THEN
date   null_date
SetNull(null_date)
This.SetItem(row,   This.GetColumn(),   null_date)
RETURN   3
END   IF
.   .   .   //   您可以自行增加对其他数据类型的处理
END   CHOOSE
Midscene.js:基于AI视觉的跨平台自动化测试框架实战指南 自动化测试是现代软件工程保障质量的关键环节,其核心原理是通过脚本模拟用户操作,验证应用功能与界面。随着应用形态日益复杂,尤其是跨Web、桌面、移动及嵌入式等多终端场景,传统基于元素定位器(如XPath、CSS Selector)的测试方法面临维护成本高、脚本脆弱等挑战。在此背景下,融合计算机视觉(CV)与人工智能(AI)的**视觉驱动测试**技术应运而生,它通过识别屏幕上的文本、图标与控件图像来定位和操作,实现了测试脚本与底层UI实现的解耦,显著提升了**跨平台自动化测试**的稳定性和可维护性。这项技术尤其 阅读详情

相关推荐

pb中的Evaluate函数、Describe函数、LookUpDisplay函数

字段使用了下拉列表框、下拉数据窗口和单选按钮等有代码表的编辑风格时,在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。在Describe中可以描述某个属性的取值,但是如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate。上面的例子不见得有很大的实用性,但是对于理解函数Describe中使用Evaluate有很大的帮助,而这两个函数的搭配可以提供无与伦比的灵活性。

悠闲饭团的博客 1444

PB中的Describe,Evaluatate,LookUpDisplay小结

PB中的Describe,Evaluatate,LookUpDisplay小结   Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的. uate 如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数uate,LookUpDisplay  , 在...

ribut9225的专栏 859

PowerBuilder 9.0白貂框架实战:数据窗口与HIS系统维护指南

PowerBuilder作为传统企业级应用开发语言,在银行、医院等关键行业中仍有大量存量系统。白貂框架是PB环境下的一套快速开发基础框架,通过继承机制将数据窗口、权限控制、日志等通用能力封装为祖先对象,使开发者只需关注业务逻辑。数据窗口是PB的灵魂,其可视化定义与打印预览(PrintPreview)功能在报表场景中至关重要。框架的价值在于减少重复劳动、统一编码规范,并降低新人的上手门槛。在HIS维护、ERP客户端等场景中,掌握白貂框架能显著提升维护效率。本文基于PB 9.0实战,覆盖数据库连接配置、带权限的

weixin_34356555的博客 417

工作中使用到的单词(软件开发)_第五版

本文摘要: 本文为软件开发相关的术语与技术要点整理,主要包含2020-2025年间四版内容更新(No.01-41)。重点包括: 证书文件格式(PEM/P12)差异 外部API通信注意事项(Accept头设置、HTTPS连接问题) Postman工具使用技巧(Cookie管理、请求头设置) WAS配置相关经验(JVM设置、SSL连接问题) 数据库操作命令(DB2表结构修改) IBM安全管理组件(TAM/iv-user机制) 网络通信细节(chunked传输编码特性) 常用开发工具(curl、Postman)的

sun0322 2520

PB11.5安装配置、DataWindow开发与.NET迁移避坑指南

企业遗留系统维护常从PowerBuilder 11.5这类老IDE入手,其核心是以PowerScript脚本和DataWindow数据管道组织三层工程结构,并通过事务对象控制数据库连接与提交边界。理解SetTransObject复用连接、Update属性中的Key and Updatable Columns并发控制,以及.NET Assembly与WinForms目标的构建约束,能把老系统的维护、性能优化和渐进式迁移变成可验证的工程实践。面向存量PB系统改造、数据窗口应用接手和.NET迁移场景,安装配置、运

weixin_29597551的博客 207

PowerBuilder PB教程:DataWindow与事务控制实战

在快速应用开发(RAD)与企业级数据库应用中,数据窗口(DataWindow)承担检索、过滤、回写与界面呈现,PowerScript 负责事件驱动逻辑,SQLCA 与事务控制保障多表操作一致性。理解这些基础概念,关键在于区分数据库端 SQL 筛选与客户端缓冲区过滤,明确 SetTrans 与 SetTransObject 的连接复用差异,并用显式 COMMIT/ROLLBACK 管理原子性。其技术价值体现在缩短原型周期、降低遗留系统维护成本,并让 Update 开关、行状态与错误码排查有章可循。典型场景包括

weixin_31714129的博客 222

pb中describe、Evaluate、Lookupdisplay的用法

Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的. Evaluate 如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate,LookUpDisplay 在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetIt...

abc7979的博客 310

PB11.5 环境搭建与 DataWindow 事务提交避坑

数据窗口(DataWindow)把 SQL、显示格式与更新逻辑封装为可复用对象,事务对象(SQLCA)则统一管理数据库连接、提交与回滚,这是快速应用开发中典型的数据访问链路。其原理在于通过 32 位 ODBC 驱动建立客户端会话,由 DataWindow 依据行状态生成 INSERT/UPDATE/DELETE,再由 SQLCA 控制事务边界;若 AutoCommit 或字符集配置不当,就会出现中文乱码、保存成功但未入库等问题。技术价值在于把界面、数据与事务语义收敛到可控链路,降低遗留系统维护成本。该链路常

weixin_29496633的博客 303

PB常用技巧

1.RGB函数计算公式: 颜色值= (65536 * Blue) + (256 * Green) + (Red) 2.控件可拖动: send(handle(this),274,61458,0) 3.如何用程序控制下拉子数据窗口的下拉和收起 用modify或者直接用dw_1.object.col1.dddw.showlist = true 4.检索参数有些不需要传入则传%.

linybo的专栏 2791

PB describe Evaluate LookUpDisplay用法

PB describe Evaluate LookUpDisplay用法,仅供参考!

pb Describe,Evaluatate,LookUpDisplay小结

PB中的Describe,Evaluatate,LookUpDisplay小结

pb 数据窗口设置操作

1 使DataWindow列只能追加不能修改 2 在数据窗口中实现动画

chenllxx的专栏 5794

【Ablation Studies 理解】深度学习模型组件的对比实验/性能分析

Ablation Study 用于检测深度学习/机器学习模型中各部分构件对于整体的重要性。 可以理解为为:组件\tricks重要性测试、组件性能系统性分析、控制变量法、组件去除对比实验、性能敏感性测试、性能因子分析等 Ablation Studies 一些新颖的深度学习模型在论文中都会进行AblationStudy,这部分的主要意义在于系统性的移除模型中的各种组件/trick等因子或者是创新的...

TomRen 4588

PB(Powerbuilder)中如何取得窗口字段类型

PB(PowerBuilder)中如何取数据窗口中字段类型

c_lou_d的博客 608

深入解析路科验证V0实验lab1:SV接口与时钟块实战

本文深入解析了路科验证V0实验Lab1的核心内容,重点阐述了SystemVerilog接口与时钟块在验证环境搭建中的关键作用。通过拆解router_io接口设计、时钟块同步机制及程序块封装,详细讲解了如何构建稳定可靠的验证通信基础,并提供了复位时序分析与常见调试技巧,为后续复杂验证打下坚实基础。

peach的博客 430

英飞凌AURIX™ Development Studio(ADS)工程调试与烧录实战指南

本文详细介绍了英飞凌AURIX™ Development Studio(ADS)的工程调试与烧录实战指南。从调试环境搭建、硬件连接到断点设置、变量监控等核心调试技巧,帮助开发者快速掌握ADS安装使用教程,提升多核处理器开发效率。

k8l9m0n的博客 573
上一篇: IE浏览器接受cookie设置
下一篇: 数据窗口的函数LookUpDisplay
qiaodi
博客等级 码龄17年 30粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值