PB动态数据窗口
pb数据窗口,sum的用法

pb数据窗口,sum的用法
您提到的"pb 数据窗口" 和"sum 的用法" 可能涉及到不同的概念。
我将就两者分别进行简要说明:
1. Protobuf(Protocol Buffers)数据窗口:
- Protobuf 是一种轻量级的数据交换格式,由Google设计,用于结构化数据的序列化。
它通常用于在不同系统之间传递和存储数据。
Protobuf 使用`.proto` 文件定义数据结构,然后使用编译器生成与多种编程语言兼容的代码。
- "pb 数据窗口" 可能指的是使用Protobuf 序列化的数据的某个特定范围或窗口。
在这种情况下,您可能需要查看相应的`.proto` 文件,以了解数据结构的定义和如何在窗口内进行操作。
2. sum 函数的用法:
-sum 是一个常见的数学函数,用于计算一组数字的总和。
在编程语言和数据处理工具中,通常有内建的sum 函数,例如在Python、NumPy(用于科学计算的库)和SQL 等环境中。
例如,在Python中:
```python
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total)
```
这将输出`15`,因为1+2+3+4+5 的和为15。
-如果您具体提到的"sum 的用法" 涉及到特定的上下文,例如在数据库查询中的SUM 操作,或者在某个编程框架中的使用方式,请提供更多上下文,以便我能够提供更具体的信息。
pb中数据窗口的应用

Pb中数据窗口的应用在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。
要是能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时它自动调用保存了的报表格式那有多好。
本人通过如下方法最终实现了用的要求。
PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。
根据数据窗口可以直接读取PSR文件生成报表的原理,程序通过生成PSR文件,实现动态报表格式的保存。
一、实现原理:PB中的报表其实就相当于是数据窗口。
第一步,动态报表的实现。
通过设置数据窗口对象(dataobject)中文本、列等的Resizeable 和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。
第二步,报表格式的保存。
在一个应用当中,数据窗口对象的名称总是唯一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。
在窗口打开时,程序先校验报表格式是否存在。
如果存在,先将报表格式读取出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,然后提取数据;如果不存在,直接提取数据即可。
二、实现过程:1、建立一个数据库表用以保存报表格式文件。
表名:dyn_reportDwobjectVarchar2(20)数据窗口对象名称Primary keyRptitleVarchar2(80)报表的标题名称MemoLong raw 报表格式2、建立一个窗口w_temp。
定义实例变量如下:string is_dwtype,is_dwobject //保存报表中对象的类型及名称控件名称控件含义Dw_print数据窗口对象Cb_exit退出按钮Cb_savereport 报表格式保存按钮3、在窗口的OPEN事件中加入如下代码, 校验报表格式是否存在,如果存在读取定义好的报表格式到数据窗口。
PB数据窗体技巧

PB数据窗体技巧1.熟悉数据窗体控件:数据窗体有很多不同的控件类型,如文本框、下拉列表、单选按钮等。
熟悉掌握每种控件的特性和使用方法,可以根据需求选择最合适的控件。
2.使用自定义控件:除了内置的控件,PB还支持使用自定义控件。
开发人员可以根据需要自定义控件,并将其应用到数据窗体中。
这样可以更加灵活地满足实际需求。
3.使用动态数据窗体:动态数据窗体是一种可以在运行时根据需求动态生成的数据窗体。
使用动态数据窗体可以根据不同的条件动态地生成不同的数据窗体,提高开发效率和可维护性。
4.使用数据窗口对象:数据窗口对象是一种可以在多个数据窗体之间共享数据和功能的对象。
使用数据窗口对象可以避免重复编写相似的代码,提高代码的复用性。
5.使用数据窗体样式:PB支持使用数据窗体样式来定义数据窗体的外观和行为。
开发人员可以根据需要创建自定义的样式,并将其应用到数据窗体中。
这样可以提高应用程序的一致性和可维护性。
6.使用数据验证和格式化:PB提供了丰富的验证和格式化选项,可以对数据进行有效性检查和格式化。
开发人员可以使用这些选项来确保数据的完整性和一致性。
7.使用数据窗体事件:数据窗体有许多内置事件,开发人员可以通过编写事件脚本来处理特定的事件。
通过使用数据窗体事件,可以实现更复杂的逻辑和交互。
8.使用数据窗体功能:PB提供了许多有用的数据窗体功能,如排序、过滤、分组等。
开发人员可以灵活运用这些功能,为用户提供更好的数据浏览和操作体验。
9.使用数据窗体部件:数据窗体部件是一种可以以独立的方式封装和重用数据窗体中的功能和样式的对象。
使用数据窗体部件可以提高开发效率和代码的复用性。
10.使用数据窗体继承:PB支持使用继承来创建基于已有数据窗体的新数据窗体。
通过继承,可以在不改变原有数据窗体的基础上,添加、修改或删除功能,提高代码的可维护性和可扩展性。
11.使用事务处理:PB支持使用事务处理来确保数据的一致性和完整性。
开发人员可以通过开启和提交事务来控制数据的保存和取消操作。
PB的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。
在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。
下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。
一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。
创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。
2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。
通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。
3.数据检索:使用数据窗口可以方便地进行数据检索。
通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。
4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。
通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。
同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。
5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。
通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。
6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。
例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。
二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。
通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。
这对于动态查询和灵活的数据展示非常有用。
2.嵌套数据窗口:PB支持嵌套数据窗口的使用。
通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。
例如,可以在父数据窗口中显示子数据窗口的数据。
pb数据窗口设置操作

pb数据窗⼝设置操作1 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录⽽不能修改,利⽤ Column 的 Protect 属性可以很⽅便的做到这⼀点,⽅法如下:将每⼀列的 Protect 属性设置为:If( IsRowNew(), 0, 1) )在 PowerScript 中可以动态修改 Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")这样,DataWindow 中只有新追加的记录可修改,⽽其他记录是只读的。
2 如何在DataWindow中实现列的⾃动折⾏我们在PowerBuilder应⽤程序的开发过程中, 使⽤DataWindow时, 经常会遇到某列的数据太长, 不能同时全部显⽰的情况. 若采⽤⾃动⽔平滚动, 操作起来⼜不够简便. 下⾯介绍⼀种⽅法, 实现列数据多⾏显⽰, 即实现列数据的⾃动折⾏.具体步骤如下:1) 在DataWindow Painter中打开此DataWindow.2) 在需设定⾃动折⾏的列上双击⿏标, 弹开此列的属性窗⼝.3) 选择Position标签, 选中Autosize Height 多选框.4) 选择Edit标签, 不选中Auto Horz Scroll多选框.5) 单击OK按钮, 保存所做的修改.6) 点中Detail Band (即写有Detail的灰⾊长带), 单击⿏标右键, 选择Properties... 菜单项.7) 选中Autosize Height多选框.8) 单击OK按钮, 保存所做的修改.9) 保存此DataWindow.注意:连在⼀起的汉字(中间没有标点或空格分隔), 系统将认为是⼀个单词, 不会⾃动进⾏折⾏.3 在数据窗⼝中实现动画要实现动画,必须要有定时器,在数据窗⼝中已经有了⼀个定时器,双击数据窗⼝将弹出的对话框,在Timer Interval中定义⼤于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
PowerBuilder(pb)如何更新动态创建的数据窗口

PowerBuilder(pb)如何更新动态创建的数据窗口展开全文2008-06-13 14:49PowerBuilder(pb) 如何更新动态创建的数据窗口为了使动态创建的数据窗口可以被更新,需要在使用dw_control.update()之后进行几个相关的设置:首先需要设置可以更新的列:dw_control.Object.<columnname>.update或dw_control.Modify("<ColumnName>.Update=Yes")这个操作与在Update属性对话框中的"Updateeable Columns"列表框中选择哪些更可以被更新相类似。
在这里,我们假设所有可以被更新的更都是同一张表中的字段,对于要更新的每一个列都应该使用上面的语句。
下一步,应该设置更新是采用的主键:dw_control.Object.<ColumnName>.key = "yes"这个操作与在Update属性对话框中的"Unique Key Columns"列表框中选择哪些更可以被更新相类似。
然后,需要设置WHERE子句的更新方式:dw_1.Object.DataWindow.Table.UpdateWhere = 0 or 1 or 2这对应于设置key, key & updateable, key & modified。
注意,在这里,我们只是对一个表进行了设置,如果需要更新多个表,你需要分别对每个表进行这些设置。
.这样,就可以调用dw_control.Update()另外,还可以用下面的语句来设置:Update Key In Place:Dw_control.object.DataWindow.Table. UpdateKeyInPlace = "yes" or "no"这与在Update属性对话框中Key MOdification下的两个单选按钮作用相同。
PB数据窗口技巧大全

PB数据窗口技巧大全PB数据窗口是PowerBuilder语言中的一种常用控件,用于显示和操作数据。
在实际项目开发中,掌握一些PB数据窗口的技巧能够提高开发效率和用户体验。
下面是一些常用的PB数据窗口技巧的详细介绍,包括动态数据源、处理数据更新、格式化数据、控制数据窗口行为等方面。
1. 动态数据源:PB数据窗口支持通过修改SQL语句和参数实现动态查询。
可以通过修改dw_1.sqlsyntax和dw_1.settransobject等属性实现动态数据源切换或过滤。
2. 处理数据更新:PB数据窗口提供了一些方法来处理数据的插入、更新和删除。
可以使用dw_1.insertrow、dw_1.updaterow和dw_1.deleterow等方法来实现数据的增删改操作。
3. 格式化数据:PB数据窗口提供了一些格式化数据的方法,可以通过修改数据窗口列的format属性来实现对数据的格式化。
例如,可以使用dw_1.modify表示列的format属性来自定义数据的显示格式。
4. 排序和过滤数据:PB数据窗口提供了排序和过滤数据的功能。
可以通过修改dw_1.setsort和dw_1.setfilter等方法实现对数据的排序和过滤。
5. 控制数据窗口行为:PB数据窗口提供了一些属性和方法来控制数据窗口的显示效果。
例如,可以使用dw_1.retrieve来重新检索数据,使用dw_1.setitemstatus来设置数据窗口的状态等。
6.多表连接查询:PB数据窗口支持多表连接查询,可以通过在SQL 语句中使用连接符号和条件来实现多表连接查询的功能。
7.数据窗口插入计算列:PB数据窗口支持插入计算列,可以通过在SQL语句中使用函数和表达式来插入计算列实现对数据的计算和处理。
8.数据窗口多级分组:PB数据窗口支持多级分组,可以通过在数据窗口中设置分组列和聚合函数来实现数据的分组和统计。
9.数据窗口嵌套:PB数据窗口支持嵌套,可以在一个数据窗口中插入另一个数据窗口,实现数据的嵌套显示和处理。
在PB中创建动态数据窗口

要 采 用 动 态 数 据 窗 口 技 术 动 态 地 创 建 数 据 操 作 对
象。
一
套 成 熟 的 应 用 系 统 往 往 具 有 完 备 的 维 护 体
多 大 意 义 了 。在 P 应 用 中 如 何 建 立 灵 活 、 用 的 动 B 实 态 数 据 窗 口 , 显得 十 分 的重 要 了 。 就
tpe) y
系 统 中 生 成 数 据 窗 口 对 象 , 如 果 Da W id w 控 件 t no a
或 Daa t r t S o e系 统 中 定 义 了 当 前 其 他 数 据 窗 口 对
象 , 新 创 建 的 数 据 窗 口对 象 将 替 换 当前 对 象 。 则
创 建 动 态 数 据 窗 口 ,依 据 的 是 数 据 窗 口语 法 。 数 据 窗 口语 法 的建 立 方 式 , 要 有 下 列 几 种 : 主 1S n a F o QL( ) 数 法 .y tx r mS 函 S n a Fr mS y tx o QL( )函 数 法 是 一 个 在 P 应 用 B 中较 常 用 的 函 数 , 语 法 为 : 其
理 自如 。
一
、
问 题 的 提 出
数 据 窗 口的 处 理 机 制 是 根 据 所 需 的 显 示 方 式 将 数 据 源 表 中 的 域 设 计 好 ,在 运 行 时 将 所 需 的 数 据 从
数 据 库 服 务 器 下 载 到 客 户 机 ,将 更 改 后 的 数 据 进 行 提 交 或 回滚 。 这 种 处 理 机 制 大 大 降低 了数 据 的 传 输 量 , 轻 了 网络 的负 担 , 高 了数 据 的 处 理 速 度 。 在 减 提 用 P 设 计 一 些 较 大 型 的 软 件 项 目时 ,用 数 据 窗 口 B
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[PB]-动态数据窗口〓创建动态数据窗口若要动态创建数据窗口,需要使用函数Create,该函数的语法如下:dw_1.Create(syntax{,errorbuffer})其中,dw_1是数据窗口控件的名称,该数据窗口控件要和新创建的数据窗口对象相关联。
syntax是用来描述创建数据窗口对象的确切语法的字符串。
errorburrer是可选项,用来保存创建数据窗口对象过程中发生的错误信息。
如果不指定该参数,就会在发生错误时显示一个错误信息的提示窗口。
如果创建成功该函数返回1,否则返回-1,如果参数为null则函数返回null。
由于Create函数成功创建数据窗口对象后,要改变dw_1数据窗口控件所关联的数据窗口对象,因此,需要重新为数据窗口设置事务对象(使用函数SetTransObject或者SetTrans)。
获取创建数据窗口的语法有多种方法,可以对相关的SQL语句使用SyntaxFromSQL函数,也可以使用对已经创建好的数据窗口对象使用LibraryExport函数。
因为创建数据窗口的语法比较复杂,即使使用了LibraryExport输出已有数据窗口对象的语法,操作起来也相当费劲。
所以,更为通用的是前面一种方法。
这种方法配合一定的编程技巧,让用户指定要创建的数据窗口对象的SQL语句,使用户有更多的自由和选择。
使用这种方法,肯定用到函数SyntaxFromSQL,它的语法是:transaction.SyntaxFromSQL(SQLselect,presetation,err)其中,transaction是事务对象的名称,该事务对象必须正确地设置了相关参数,并且和数据库建立了联结。
SQLselect是用来创建数据窗口的SQL语句,为String 类型。
presentation是要创建的数据窗口对象的显示风格,为String类型。
简单的格式是:Style(Type=presentationstyle)其中Style和Type都是保留字,presentationstyle的取值有Tabular,Grid,Form,Graph,Group,Label和Nup,其中Tabular是缺省类型。
err是用来保存函数执行时出错信息的string类型的变量。
*关于函数SyntaxFromSQL的参数presentation可以有更复杂的语法。
其格式是:"Style ( Type=value property=value ... )DataWindow ( property=value ... )Column ( property=value ... )Group groupby_colnum1 Fby_colnum2 ... property ... )Text property=value ... )Title ( 'titlestring' )"使用这样的格式,可以详细定义要创建的数据窗口对象的外观。
〓在很多情况下都需要一个数据窗口控件和不同的数据窗口对象关联。
可以通过修改数据窗口控件的dataobject属性来实现。
在修改了这一特性之后,数据窗口控件就不再具有与它相关的事务处理对象了,应该再重新为数据窗口设置事务对象。
*如果为数据窗口设置了行焦点标志,在修改了dataobject属性后应该重新设置行焦点标志。
〓获得数据窗口的SQL语句有时需要修改数据窗口对应的SQL语句,以便构造查询应用。
这时,首先就要读取数据窗口当前的SQL语句,然后再对where子句进行修改。
可以有多种方法获取SQL语句。
最常用的是使用函数GetSQLSelect,它的语法如下:dw_1.GetSQLSelect()其中,dw_1是数据窗口控件的名称,可以是子数据窗口或datastore等。
函数执行正确则返回对应的SQL语句,否则返回空字符串("")。
另外,还可以使用Describe函数描述数据窗口对象的相关属性来获得。
在使用该函数时,如果数据宙口联结到数据库则返回真正的SQL语句,否则返回数据窗口的PBselect语句。
PBselect语句是数据窗口的专用语法,和SQL语句有很大的区别,但也是从SQL语句转化而来的。
数据窗口对象有三个属性用来保存SQL 语句,它们是的table.select、table.SQLselect、table.select.attribute。
这些属性获得的SQL语法稍微有区别。
下面是获取一个数据窗口SQL语法的不同的语句:string ls_sqlls_sql = dw_1.GetSQLSelect()ls_sql = dw_1.Describe("datawindow.table.select")ls_sql = dw_1.describe("datawindow.table.SQLselect")ls_sql = dw_1.describe("datawindow.table.select.attribute")〓修改数据窗口的SQL语句使用上面介绍的方法获得SQL后,可以进行修改加工,然后重新应用于数据窗口对象。
使用这种方法可以创建功能比较强大的查询程序。
和提取语法一样,也有两种修改SQL的方法:使用函数Modify或者SetSQLSelect。
不管使用哪种方法,修改完SQL语句后都要重新设置事务对象。
比较常用的是后一种函数,它的语法是:dw_1.SetSQLSelect(statement)其中,dw_1是要重新设置SQL语句的数据窗口控件名称,可以是子数据窗口或者datastore。
statement是一个包含合法SQL语句的字符串。
该函数正确执行返回1,否则返回-1。
另外,对于新的SQL语句有很多需要注意的地方:(1)字段的类型和个数必须和原SQL语句相同;(2)原来的SQL语句中定义了检索变量时,就不能重新设置SQL语句。
如果原来的数据窗口可以修改数据库中的数据表,那么重新设置时,PowerBuilder把和原来主键位置相同的字段仍然作为新的主键。
如果碰到了下面的两种情况,则将使数据窗口无法更新:a)from于句中包含多个数据表名;b)数据窗口可以更新的是数据库的计算列。
使用相应的Modify函数和相应的语法也可以修改数据窗口的SQL。
例如:dw_1.modify("datawindow.table.select=~"select name,sex,from addresswhere sex='男'~"")也可以直接使用语法来修改数据窗口的SQL语句。
例如,上面的语句可以改写成:dw_1.datawindow.table.select="select name,sex,from address where sex='男'"然而这种方法无法验证SQL语句是否正确,不如使用Modify函数,但是上面这种方法的执行速度比较快,如果能够确保准确无误,这种方法还是可以考虑的。
可以看出它的语法和上面的相同。
这里的技巧是,如果在运行时需要对数据窗口的SQL语句进行修改,创建没有where子句的数据窗口比较好些。
因为where子句可以在动态修改时添加,sort 可以在运行时使用setsort函数实现。
这样,程序运行时处理数据窗口的SQL语句就比较方便。
下面介绍一个在程序运行时动态修改数据窗口的SQL语句的实例。
在该例子中,使用数据窗口控件函数ModIfy可以修改数据窗口对象中的控件的属性。
脚本如下:String ls_SQL,ls_where,ls_selectls_SQL = dw_1.Describe("DataWindow.table.select") //获取数据窗口当前的SQL语句If Pos(ls_SQL,"where") > 0 Then //如果有where子句(有可能是运行时添加的)ls_select = Left(ls_SQL,pos(ls_SQL,"where") - 1) //取where前面的内容Elsels_select = ls_SQL //如果没有where子句则直接赋值End Ifls_where = " where xm like '郭%' order by xm" //where子句。
可以设计界面让用户构造ls_SQL = ls_select + ls_where //添加where子句If dw_1.SetSQLSelect(ls_SQL) = 1 Thendw_1.Retrieve()End If在上面的例子中,where条件都是固定的。
也可以设计界面,让用户指定条件来查询数据。
该脚本可以编写成一个函数,将where子句作为参数,将是否成功设置SQL作为返回值,在用户每次指定查询条件进行检索时调用该函数。
〓其他*GetFileOpenName(title,pathname,filename{,extension{,filter}})功能:Displays the system's Open File dialog and allows the user to select a file or enter a filename.(打开选择文件对话框)--具体请见PB帮助*LibraryDirectory ( libraryname, objecttype )功能:Obtains a list of the objects in a PowerBuilder library.(获得PBL中的对象)--具体请见PB帮助*long dwcontrol.ImportString ( string string {, long startrow {, long endrow {,long startcolumn {, long endcolumn {, long dwstartcolumn } } } } } ) 功能:Inserts data into a DataWindow control or DataStore fromtab-delimited data in a string.(把字符串数据插入到数据窗口中)--具体请见PB帮助。