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中数据窗口函数总结

一、连接数据库连接数据库也就是指定事务对象。
PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。
语法格式:dw_control.SetTrans(TransactionObject)dw_control.SetTransObject(TransactionObject)其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。
这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。
用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。
而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。
但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。
与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。
因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。
这两个函数都是成功时返回1,发生错误时返回-1。
二、检索数据用于检索数据的函数只有一个,就是Retrieve()函数。
语法格式:dw_control.Retrieve()如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。
而且检索参数必须和数据窗口对象中定义顺序一致。
此函数返回一个长整型的数据,代表检索出来的数据行数。
如果发生错误,将返回-1。
三、更新数据当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。
语法格式:dw_control.Update()这个更新可能成功,也可能失败。
PB数据窗口常用函数方法

PB数据窗口常用函数方法1. Retrieve函数:用于从数据库中检索数据,可以通过设置检索条件过滤数据。
例如,dw_employee.Retrieve(将从数据库中检索出所有的员工数据。
2. Update函数:用于更新数据窗口中的数据到数据库中。
例如,dw_employee.Update(将更新数据窗口中的所有修改到数据库中。
3. Create功能:用于创建一个新的数据行。
例如,dw_employee.Create(将在数据窗口中新增一行空数据。
4. Modify功能:用于修改数据窗口中的数据。
例如,dw_employee.Modify(将允许用户进行修改操作。
5. InsertRow函数:用于在数据窗口中插入一行数据。
例如,dw_employee.InsertRow(1)将在第一行之前插入一行数据。
6. DeleteRow函数:用于删除数据窗口中的一行数据。
例如,dw_employee.DeleteRow(2)将删除第二行的数据。
7. SetItem函数:用于设置数据窗口中指定列的值。
例如,dw_employee.SetItem(1, "John")将设置第一列的值为"John"。
8. GetItem函数:用于获取数据窗口中指定列的值。
例如,string ls_name = dw_employee.GetItemString(1)将获取第一列的值并赋给ls_name变量。
9. GetRowCount函数:用于获取数据窗口中的行数。
例如,intli_rows = dw_employee.GetRowCount(将返回数据窗口中的行数。
10. GetColumnCount函数:用于获取数据窗口中的列数。
例如,int li_columns = dw_employee.GetColumnCount(将返回数据窗口中的列数。
11. GetRow函数:用于获取数据窗口中指定行的数据。
PB数据窗口常用函数方法

其中,row参数指定将要修改状态的行;column参数指定将要修改状态的列(可以是整型的列号,也可以是string类型的列名),当列号为0时表示要修改row指定的整行的状态;dwbuffer指定要修改哪个缓冲区(肯定不能是original),status为上面的四个取值中的一个,但不是任意的取值,因为有些状态不能用该函数设置成另外一种状态,必须是能够转换的状态。下面列出了能够转换的状态。
integer dwcontrol.SetColumn ( string column)
integer dwcontrol.SetColumn ( integer column)
设置当前行
integer dwcontrol.SetRow ( long row )
得到当前列
integer dwcontrol.GetColumn ( )
返回值:执行成功则返回1,发生错误则返回-1,如果dwcontrol为Null则返回Null
★AcceptText
语法:dwcontrol.AcceptText ( )
功能:该函数执行时,首先对当前编辑框中的内容进行对应字段的校验规则,能够通过校验规则,则保存在对应字段中,否则显示校验信息提示错误。需要执行该函数的原因是,当在某字段上的编辑框中输入内容而没有移动光标到别的字段上时,其他控件获得焦点,此时编辑框中的内容不能被保存到字段中,所以就应该在数据窗口失去焦点时执行该函数。
Next
dw_1.SetColumn("sex") //选中性别列,保证最后一个也要通过校验规则
PB中的Describe、Evaluatate、LookUpDisplay小结

PB中的Describe,Evaluatate,LookUpDisplay小结一、Describe可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的。
二、在Describe 中添加上Evaluate以后,具备了取值,判断以及计算的功能。
如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate。
语法:Evalute('expression',rowno)其中,expression是属性表达式,rowno是要描述的行号。
该函数放置在Describe的属性列表中。
(1)判断例如,判断第3行的salary工资是否大于1 000,如果大于则返回1,否则返回0,可以使用下面的语句:dw_1.Describe("Evaluate('If(salary > 1000, 1, 0) ', 3)")(2)取值dw_2.Describe("Evaluate('column_conn',1)") //取'column_conn'中第一行的值(3)计算dw_1.Describe("Evaluate('SUM((salary)',0)") //可以避免从数据库中提取数据注意:表达式要有引号,Evaluate()也要有引号。
三、LookUpDisplay在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。
如何才能读取用户看到的值?可以使用此函数,LookUpDisplay函数不能直接从PowerScript调用,可以在Describe中和Evaluate 函数配合使用。
PB数据窗口GetItemString函数详解

PB数据窗口GetItemString函数详解GetItemString函数作用:从数据窗口或者DataStore 控件的指定缓冲区中获取指定单元的 String 类型的数据。
通过参数的设置,还可以获取指定单元的最初数据,也就是最初 Retrieve 或者最近 Update 成功之后的该单元的取值。
需要注意的是,该函数获取的是被数据窗口中字段接受的数据,是触发完AcceptT ext 之后列中的数据,是通过了校验规则的数据;当用户输入完内容尚未离开该单元时,数据尚未被该单元接受,这种情况下使用该函数是获取不到当前录入的内容的,这时需要使用函数 GetText 来获取。
这是 GetText 和 GetItemString 函数的区别。
类似的, GetItemNumber、GetItemDecimal 等系列函数还有很多,它们的用法都是类似的。
函数语法:语法格式一:string dwcontrol.GetItemString ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } )语法格式二:string dwcontrol.GetItemString ( long row, string column {, DWBufferdwbuffer, boolean originalvalue } )z dwcontrol:要获取数据的数据窗口、DataStore 或者子数据窗口控件;z row:要获取哪行的数据,long 类型;z column:要获取数据的列,可以是列号,也可以是列名。
当采用列号时,一定要注意只有定义数据窗口的 SQL 语句中字段的顺序才能决定列号,列的显示位置不能决定列号。
该列的类型必须是字符类型,否则不能正确获取数据。
z dwbuffer:该参数是可选的。
用来指明在哪个数据缓冲区中获取数据。
PB之常用函数

Return1
//不允许关闭
EndChoose //用户所有的选择情况处理完毕
通过上面的脚本,可以为用户提供一个很健壮的数据处理窗口。即使直接关闭该窗口,在数据窗口中所做的数据修改也不会丢失,除非用户 自己想放弃。
另外,需要注意的是,在其他事件中调用或者触发(使用TriggerEvent函数、PostEvent函数或者是对象名称.Event 事件名称格式调用事 件)Close事件,都只是执行该事件中的脚本,并不真正关闭窗口。也就是说,应该区别事件和事件处理脚本,这两者虽然有很多的联系但 并不相同。 PB中的所有事件和事件处理脚本都是有区别的。
row:要设置数据的行,为long类型。
column:要设置数据的列,可以是string类型的列名称,也可以是integer类型的列号。
插入空行:insertrow(0) dw_name.insertrow(0) 通常配合插入行使用的是滚动行 dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行 比如:int row
row = dw_1.insertrow(0)
//显示
dw_1.scrolltorow(row)
该函数有返回值,1,2,3对选择的按键。
基本写法事例: MessageBox('此处为标题,'此处为内容') 完整写法事例: if MessageBox('提示信息','是否删除?',&Question! ,OKCancel! , 1 ) = 1 then//选择确定 MessageBox('提示信息', '你选择了删除') else//选择取消
//使用
PB函数大全

PB函数大全一、数组函数1、LowerBound()功能:得到指定数组第n维的下界。
语法:LowerBound ( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的下界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的下界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,LowerBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dimLowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 102、UpperBound()功能:得到指定数组第n维的上界。
语法:UpperBound( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的上界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的上界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,UpperBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dimLowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 10二、Blob(大二进制对象)函数Blob函数得到Blob数据类型的信息、完成数据类型转换以及操作Blob类型数据。
pb数据窗口,sum的用法

pb数据窗口,sum的用法
pb数据窗口是PowerBuilder开发工具中的一个重要控件,用于显示和编辑数据库中的数据。
它可以与数据库表格、查询或存储过程建
立连接,并根据提供的绑定(binding)规则显示数据,同时还允许用
户对数据进行增删改查的操作。
SUM函数是一种用于计算某一字段的总和的聚合函数。
在数据窗口中,SUM函数可以用于计算某一列的总和,并将结果显示在其他控件中,如一个文本框。
SUM函数的语法通常如下:
SUM(column_name)
其中,column_name为要计算总和的列名。
另外,在使用SUM函数时,还可以使用条件表达式来限制计算总
和的数据范围。
例如,可以使用WHERE子句来筛选出满足特定条件的
数据进行总和计算。
在拓展方面,除了基本的使用方式外,SUM函数还可以与其他函数一起使用,如COUNT函数、AVG函数等,以实现更复杂的计算需求。
此
外,可以通过设置数据窗口对象的属性来控制SUM函数的计算方式,如是否包含空值、是否进行四舍五入等。
总之,pb数据窗口是PowerBuilder中用于显示和编辑数据库数据的重要控件,SUM函数则是其提供的用于计算某一列总和的聚合函数,可以根据具体需求使用不同的拓展方式。
PB中的Describe,Evaluate,LookUpDisplay小结

PB中的Describe,Evaluate,LookUpDisplay小结一、Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的.二、在Describe 中添加上Evaluate以后,具备了取值,判断以及计算的功能。
如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate。
语法:Evalute('expression',rowno)其中,expression是属性表达式,rowno是要描述的行号。
该函数放置在Describe的属性列表中。
(1)判断:例如,判断第3行的salary工资是否大于1 000,如果大于则返回1,否则返回0,可以使用下面的语句:dw_1.Describe("Evaluate('If(salary > 1000, 1, 0) ', 3)")(2)取值:dw_2.Describe("evaluate('column_conn',1)") //取'column_conn'中第一行的值(3)计算:dw_1.Describe("Evaluate('SUM((salary)',0)") //可以避免从数据库中提取数据注意:表达式要有引号,Evaluate()也要有引号。
三、LookUpDisplay 在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。
如何才能读取用户看到的值?可以使用此函数,LookUpDisplay函数不能直接从PowerScript调用,可以在Describe 中和Evaluate函数配合使用。
pb数据窗口,sum的用法 -回复

pb数据窗口,sum的用法-回复PB数据窗口,sum函数的用法PB (PowerBuilder)是一种用于开发Windows应用程序的集成开发环境(IDE)。
在PB中,数据窗口是一个重要的工具,用于显示和操作数据库的数据。
而sum函数在数据窗口中常用于计算某列的合计值。
本文将逐步介绍PB数据窗口的基本概念及sum函数的用法。
一、PB数据窗口的基本概念PB数据窗口是PB中用于显示和操作数据库数据的工具。
它可以与一或多个数据源相连接,允许用户对数据库进行查询、修改、插入和删除等操作。
数据窗口由列对象和行对象组成,每个列对象对应数据库中的一列,每个行对象对应数据库中的一行。
用户可以通过数据窗口的属性设置来定义数据的显示方式、编辑权限以及排序等。
二、sum函数的用法sum函数在数据窗口的列对象中常用于计算某列的合计值。
该函数的语法如下:sum([列名])其中,列名表示要计算合计值的列。
sum函数可以用于数值型列、日期型列以及字符型列。
对于数值型列,sum函数将列中的所有值相加;对于日期型列,sum函数将列中的所有日期相加;对于字符型列,sum函数将列中的所有字符串拼接在一起。
三、使用sum函数计算数值型列的合计值下面以一个例子来演示如何在数据窗口中使用sum函数计算数值型列的合计值。
假设我们有一个数据窗口包含一个数值型列Salary,我们希望计算该列中所有值的合计值。
1. 打开PB并创建一个新的数据窗口。
2. 在数据窗口中添加一个数值型列Salary。
3. 在数据窗口的代码窗口中,在打开事件中添加以下代码:sum(Salary) 计算Salary列的合计值4. 在数据窗口的设计视图中,选择合适的数据源并运行数据窗口。
5. 在运行时,数据窗口将自动计算Salary列的合计值,并将结果显示在数据窗口的底部。
四、使用sum函数计算日期型列的合计值类似地,sum函数也可以用于计算日期型列的合计值。
下面以一个例子来演示如何在数据窗口中使用sum函数计算日期型列的合计值。
PB数据窗口及事件

Pb数据窗口1、Pb数据窗口介绍(结合实例进行讲解):数据窗口控件对应到数据窗口对象显示数据。
数据窗口对象分为:常用的数据窗口类型:Composite 复合报表数据窗口Crosstab 交叉报表数据窗口Freeform 自由模式数据窗口Graph 图形报表数据窗口Grid 网格数据窗口Group 分组数据窗口n-up 多列显示数据窗口分别举例说明各个数据窗口:杏林妙手中的体检报告中保护上述数据窗口类型。
2、数据窗口数据源类型介绍:Quick select、sql select、query、external、stored procedure 分别为:通过单表查询,通过多表查询,通过查询对象,通过自定义的字段,通过存储过程。
3、数据窗口控件常用函数介绍:Setredraw(boolean):设置是否自动刷新报表,true 自动刷新,false不自动刷新。
Describe(string):获取数据窗口指定对象的属性,string为数据窗口表达式。
例如:“t_1.text”等。
Modify(string):设置数据窗口指定对象的属性,和describe配合使用,string为数据窗口表达式。
例如“t_1.text=‟123‟”描述查找相关设置的方法。
Getitemstring(int,string)、Getitemstring(int,int):获取数据窗口指定行的字符串列的值,参数:行号,列名(或列值)。
Setitem (int,string,string)、Setitemstring(int,int,string):设置数据窗口指定行的字符串列的值,参数:行号,列名(或列值),设置值。
(还有获取其他数据类型的类似函数不做赘述!,还可以通过object.列名[行号] 来获取和设置指定行列的值)Deleterow(int):删除行指定行的操作,和循环配合使用的注意事项。
Insertrow(0):插入行,参数0表示在最后一行插入Rowcount():当前数据窗口的行数。
pb 数据窗体 参数

pb 数据窗体参数
E在PowerBuilder(PB)中,数据窗体(DataWindow)的参数传递通常涉及使用函数如OpenWithParm、CloseWithReturn等。
这些函数在进行窗口操作(打开或关闭)时,会将参数存入Message消息对象中。
当传递参数给数据窗体时,这些参数的数据类型(如数值、字符串或PB对象等)决定了它们在Message 对象中的存储方式。
例如,对于数值类型的参数,它们会保存在Message.DoubleParm属性中;对于字符串类型的参数,会保存在Message.StringParm属性中;而对于PB对象类型的参数,则会保存在Message.PowerObjectParm属性中。
如果需要传递多个参数,可以通过定义结构变量来包含这些参数,然后将这个结构变量作为参数传递给数据窗体。
在数据窗体的打开事件中,可以通过访问Message对象的相应属性来获取这些参数的值。
具体的参数传递方式会根据实际应用的需求和场景而有所不同。
因此,在实际开发中,需要根据具体的需求和场景来选择合适的参数传递方式,并确保参数的正确传递和处理。
pb数据窗口控件的常用函数

检索函数retrieve()setfilter() filter()setsort() sort()getsqlselect():用于获得当前数据窗口的数据来源的SQL表达式setsqlselect():设置当前数据窗口的数据来源*数据窗口控件的常用焦点控制函数*获取和设置有关数据项的值(GetItem族函数)GetItemDate(row,column):从数据窗口指定的行和列位置读取一个Date类型的值。
GetItemDateTime(row,column):从数据窗口指定的行和列位置读取一个DateTime类型的值。
GetItemDecimal(row,column):从数据窗口指定的行和列位置读取一个Decimal类型的值。
GetItemNumberl(row,column):从数据窗口指定的行和列位置读取数值类型(可以Decimal、Double、Integer、Long、Real等类型)的值。
GetItemString(row,column):从数据窗口指定的行和列位置读取一个String类型的值。
GetItemTime(row,column):从数据窗口指定的行和列位置读取一个Time类型的值。
*数据窗口中的数据行滚动Scroll(number):将数据窗口的当前编辑框控件从其所在列按指定的方式滚动到同一列的某一行上。
ScrollToRow():滚动数据窗口控件的显示至指定行row,函数改变当前行但不改变当前列。
ScrollNextRow():ScrollPriorRow():ScrollNextPage():ScrollPriorPage():*数据窗口中的数据行的插入和删除和更新InsertRow(Row):在数据窗口的主缓冲区插入一个新行,函数执行成功后,返回已插入行的行号;执行失败则返回-1。
DeleteRow(Row):在数据窗口的主缓冲区中删除指定行,函数执行成功后返回1;执行失败则返回-1。
PB数据窗口常用函数方法

PB数据窗口常用函数方法在PB(PowerBuilder)中,数据窗口是一种非常常用的控件,用于显示和处理数据。
以下是一些PB数据窗口常用的函数方法:1. SetItem(li_row, ls_column, ls_value): 可以用来设置指定行列位置的单元格的值。
2. GetItemString(li_row, ls_column): 返回指定行列位置的单元格的字符串值。
3. SetItemStatus(li_row, ls_column, lsb_update): 可以设置指定单元格的更新状态,lsb_update为TRUE表示有更新,FALSE表示没有更新。
5. Retrieve(: 用于从数据库中检索数据并在数据窗口中显示。
6. Modify("sql"): 可以修改数据窗口的检索SQL语句,并重新检索数据。
7. InsertRow(li_row): 插入一行数据。
8. DeleteRow(li_row): 删除指定行数据。
9. Update(: 保存对数据窗口中数据的修改到数据库。
10. ResetUpdate(: 取消对数据窗口中数据的修改。
11. Reset(: 清空数据窗口中的所有数据。
12. SelectRow(li_row, lsb_select): 可以选择或取消选择指定行。
13. SelectText(li_start, li_end): 可以选择指定行列范围的文本。
14. GetColumnName(li_column): 返回指定列索引的列名。
15. GetColumnCount(: 返回数据窗口中的列数。
16. GetRowCount(: 返回数据窗口的行数。
17. GetRow(: 返回当前选中行的索引。
18. Find("value"): 在数据窗口中查找指定值,并返回先找到的行索引。
19. FindNext("value"): 在数据窗口中继续查找指定值,并返回下一个找到的行索引。
深入了解PB的数据窗口

深入了解PB的数据窗口数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好,在运行时将所要的数据从数据库服务器上下载到客户机上处理,然后将更改后的数据进行提交(Commit)或回滚(Rollback)。
这种处理机制大大降低了数据的传输量,减轻了网络的负担,也提高了数据的处理速度。
充分利用数据窗口的特点,可达到事半功倍的效果,但是如果有些问题不加注意就会出现意想不到的错误。
几个函数1. AcceptText()AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中。
程序通常在关闭窗口及其他情况下判断是否改变了当前数据。
如果已改变数据,应提示用户保存。
这就杜绝了用户在偶然的情况下丢失更改数据的现象。
一般用ModifiedCount和DeletedCount函数判断数据是否改变。
PB在处理数据窗口时,对应开辟了四个数据缓冲区,分别为Primary Buffer、Deleted Buffer、Filter Buffer、SortBuffer,其中Deleted Buffer存放被删除的记录,Filter Buffer存放被过滤的记录,Sort Buffer存放排序的记录,Primary Buffer存放其他记录。
函数ModifiedCount从Primary and Filter Buffers中取数据进行判断,DeletedCount则从Deleted Buffer中取数据进行判断。
PB在接受用户输入时设置了一个浮动编辑框,用户输入或更改的内容并不直接进入Primary Buffer,而是在用户输入完后进入下一个域时,PB首先对它进行有效性检测,通过后转入Primary Buffer。
如果只改变一项数据就关闭窗口则相关数据并没有进入Primary Buffer,系统判断ModifiedCount()为0,所以不会提示保存数据。
用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中,在相应的程序段前加上Accepttext(),问题就解决了。
pb常用函数

弹出窗口:messagebox()基本写法:Messagebox('标题','内容')完整写法: MessageBox ( '标题','内容',图标,按键,默认值)设置焦点:setfocus()对象名.setfocussle_1.setfocus()用format菜单下的tab order命令可以修改焦点顺序。
把用户名和密码框分别设为10,20,确定按钮设为30就行了。
也可以用控件的setfocus()方法设置焦点。
触发事件:triggerevent()对象名.triggerevent()(1)函数作用:触发指定对象的指定事件,并且立即执行该事件中的脚本。
注意该函数和PostEvent的区别。
PostEvent不是立即执行,TriggerEvent是立即执行触发事件的脚本。
(2)函数语法:objectname.TriggerEvent ( event{, word, long } )关闭窗口:Close()和CloseQuery()默认数据库链接变量:sqlcadw_name.settransobject(sqlca)链接数据库sqlca.sqlcode = 0 有数据\\ = 100 无数据链接数据库connect;一般用于程序open的时候,跟在数据库链接代码后面打开窗口:open( )open(win downame)关闭应用:halt close()halt closehalt 直接结束应用程序从ini配置文件中提取string数据profilestring('文件名,可以包含路径','主要字节','在主要字节下的关键字','如果找不到数据则返回的数据')断开链接disconnect;一般用于程序close的时候是否修改过:isrowmodified()if dw_1.modifiedcount()+dw_1.deletedcount()>0 then.......//数据窗口处于修改状态end if是否新增的:isrownew()数据窗口中的if函数if(true\false,'为true时返回的值','为false时返回的值',)如:if(isrownew(),'新',if(isrowmodified(),'改','旧'))插入空行:insertrow(0)dw_name.insertrow(0)通常配合插入行使用的是滚动行dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行比如:int rowrow = dw_1.insertrow(0)//显示dw_1.scrolltorow(row)//使用dw_1.object.column[row]从数据窗口中提取数据:getitem( )dw_name.getitem\\string\date\......(row,'数据来源控件名')string dwcontrol.GetItemString ( long row,integer column {, DWBuffer dwbuffer, boolean originalvalue } )String dwcontrol.GetItemString ( long row, string column {,DWBuffer dwbuffer, boolean originalvalue } )getitem首先根据数据窗口不同的字段类型,有不同的函数。
PB Datawindow函数大全

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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
pb从数据窗口获得数据的方法总结

pb从数据窗口获得数据的方法总结pb从数据窗口获得数据的方法总结通过PowerBuilder的数据窗口对象属性,我们可以指定一定格式的表达式来直接从数据窗口中获得数据。
这种直接的数据操作方法让我们能只需一条语句而不用调用许多方法,就可得到一定量甚至大量的数据。
操作数据的表达式大致可分为三种,下面逐一介绍。
---------------------------------------------------------------------1)在知道列或计算域名时得到数据得到某列中一行或全部的值,表达式:(如果rownum忽略,则可得到缓冲区或数据源的值)dwcontrol.Object.columnname {.buffer } {.datasource } { [ rownum ] }其中datasource 参数表示数据源,它有两个可选项,Current (缺省)和Original,由此参数我们可以指定数据是从当前数据窗口上还是从数据库中得到。
对于计算域,它不能被改变也没有当前值,所以我们必须指定为此参数为Original。
示例:因为缺省设置是在Primary缓冲区的当前值,下面语句是等价的,都是从第一行得到emp_name列的值dw_1.Object.emp_name[1]dw_1.Object.emp_name.Primary.Current[1]下面语句设置emp_name列的第一行值为“国防科技大学先进制造中心”dw_1.Object.emp_name[1] = "国防科技大学先进制造中心"下面语句得到所有emp_name列的值,并将它们放入数组中string ls_namearray[]ls_namearray = dw_1.Object.emp_name.Current下面语句得到emp_name列在filter缓冲区的所有当前值string ls_namearray[]ls_namearray = dw_1.Object.emp_name.Filter下面语句得到emp_name在filter缓冲区的初始值(数据库中的值)string ls_namearray[]ls_namearray = dw_1.Object.emp_name.Filter.Original下面语句得到emp_name列在delete缓冲区的第14行的当前值string ls_namels_name = dw_1.Object.emp_name.Delete[14]This statement gets the original下面语句得到emp_name列在delete缓冲区的第14行的初始值(数据库中的值)string ls_namels_name = dw_1.Object.emp_name.Delete.Original[14]下面语句得到review_date计算域的所有值string ld_review[]ld_review = dw_1.Object.review_date.Original得到被选择项的值表达式:dwcontrol.Object.columnname {.Primary }{.datasource }.Selected示例:由于Primary缓冲区是程序本选择项所在的唯一缓冲区并且当前数据是缺省的,下面的语句作用是等价的,它们实现从emp_name列中得到被选中行的值。
pb数据窗口控件函数canundo、categorycount、categoryname

pb数据窗口控件函数canundo、categorycount、categorynameCanUndo()功能:检测最近的编辑操作能否被取消。
语法:dwcontrol.CanUndo()返回值:如果最近一次操作被取消,该函数返回true,否则返回false。
如果dwcontrol为null,则CanUndo()函数返回Null。
CategoryCount()功能:返回数据控件指定统计图的数据类别数。
语法:dwcontrol.CategoryCount(graphcontrol)参数:graphcontrol:string类型,指定放置在数据窗口对象中的统计图对象名,要得到该统计图的数据类别个数。
返回值:integer。
函数执行成功时返回1,出现错误时返回-1。
如果任何参数的值为null,则Categorycount()函数返回null。
试例:integer:li_countli_count=dwcontrol.categorycount("gr_revenues")CategoryName()功能:返回数据窗口控件指定统计图数据类的名称。
语法:dwcontrol.categoryname(graphcontrol,categorynumber) 参数:graphcontrol:数据窗口控件中统计图对象的名称,用字符串表示。
categorynumber:得到其名称的数据类的编号。
返回值:string。
函数执行成功时,返回数据窗口中统计图对象指定类别编号的类名;执行失败时,返回空字符串(“”),如果任何参数的值为null,则categoryname()函数返回null。
用法:统计图中数据类的编号从1开始连续编号到categorycount()函数返回最大的编号。
当删除统计图中某个类时,余下的类重新编号,以保持编号的连续性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pb中数据窗口函数总结一、连接数据库连接数据库也就是指定事务对象。
PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。
语法格式:dw_control.SetTrans(TransactionObject)dw_control.SetTransObject(TransactionObject)其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。
这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。
用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。
而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。
但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。
与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。
因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。
这两个函数都是成功时返回1,发生错误时返回-1。
二、检索数据用于检索数据的函数只有一个,就是Retrieve()函数。
语法格式:dw_control.Retrieve()如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。
而且检索参数必须和数据窗口对象中定义顺序一致。
此函数返回一个长整型的数据,代表检索出来的数据行数。
如果发生错误,将返回-1。
三、更新数据当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。
语法格式:dw_control.Update()这个更新可能成功,也可能失败。
一般在这个函数被调用之后,总是要做一个检查。
请看下面的例子:Int li_returnli_return = dw_1.Update()IF li_return = 1 THENCOMMIT USING SQLCA;ELSEROLLBACK USING SQLCA;END IF在这段代码中,首先对数据窗口控件进行更新操作。
但是更新只是把数据写入到客户机的内存,并没有提交到数据库中。
如果更新成功,就把它提交到数据库中,如果更新失败,就回滚到当前的事务。
行操作行操作的函数主要是对数据库中的数据进行插入、删除或选择操作。
一、插入行在DataWindow中插入一行,可以使用InsertRow()函数。
语法格式:dw_control.InsertRow(rownumber)dw_control是数据窗口控件名,rownumber是要插入行的的行号。
如果这个参数为0,代表在当前DataWindow的最后一行插入一空行。
InsertRow()函数返回一个长整型值,以此来代表插入的行号。
如果插入失败,则返回-1。
二、删除行要删除DataWindow内的一行数据,则要使用DeleteRow()函数。
语法格式:dw_control.DeleteRow(rownumber)其中rownumber是要删除的行号。
如果该值为0,表示删除当前行。
如果删除成功,返回1,失败则返回-1。
三、设置当前行如果要设置DataWindow中的某行为当前行,可以使用SetRow()函数。
语法格式:dw_control.SetRow(rownumber)其中rownumber是要设置为当前行的行号。
如果函数返回1表示成功,返回-1代表失败。
四、获取当前行如果想要获取DataWindow中的某行为当前行,可以使用GetRow()函数。
语法格式:dw_control.GetRow()该函数没有参数,它返回一个长整型,代表当前行号。
如果返回-1代表失败。
如果返回0代表没有选中任何行。
五、选择行如果想要在DataWindow中加亮显示某一行或取消加亮显示某一行,可以使用SelectRow()函数。
语法格式:dw_control.SelectRow(rownumber,select)其中,rownumber表示要加亮或者取消加这显示的行号,0表示所有行。
select是一个布尔类型的值,TRUE表示加亮,FALSE表示取消加亮显示。
该函数返回1时表示成功,返回-1时表示失败。
如果想要直接设置某一行为加亮,需要首先取消其它行的加亮显示状态,采用如下的两行代码:dw_1.SelectRow(0,FALSE)dw_1.SelectRow(rownumber,TRUE)六、获取选择行如果想要获取当前DataWindow中加亮显示的行,可以使用GetSelectRow()函数。
语法格式:dw_control.GetSelectRow(rownumber)其中,rownumber为开始查找的行的行号,0表示从头开始查找。
该函数返回一个长整数,表示从rownumber开始查找第一个加亮显示的行的行号。
如果失败返回0。
七、滚动行如果在DataWindow的末尾插入一行数据,而当前行是在DataWindow的中央,那么这种插入可能不会被用户觉察。
为了改变这种情况,可以滚动行到DataWindow 的末尾,这样用户就能发现新的改变。
要滚动行,可以使用ScrollToRow()函数。
语法格式:dw_control.ScrollToRow(rownumber)该函数返回1时表示成功,返回-1时表示失败。
与ScrollToRow()函数据功能相关的还有如下几个函数:ScrollPriorRow():向上滚动一行ScrollNextRow():向下滚动一行列操作列操作类的函数主要是选择指定的列和获取列的信息。
一、获取列如果要获取当前的列号,可以使用GetColumn()函数,如果要获取当前的列名,可以使用GetColumnName()函数。
语法格式:dw_control.GetColumn()dw_control.GetColumnName()这两个函数都没有参数,GetColumn()函数返回一个长整型值,代表当前的列号,GetColumnName()函数返回当前列的列名。
如果返回0,表示当前没有任何列被选择返回-1表示失败。
二、设置列要设置某一列为DataWindow中的当前列,可以使用SetColumn()函数。
语法格式:dw_control.SetColumn(column)其中column既可以是列号,也可以是列名。
当该函数返回1时表示成功,返回-1时表示失败。
数据操作数据操作类的函数主要是对DataWindow中的数据进行获取、设置。
一、获取数据如果要从DataWindow的指定行和列中获取数据,就要使用GetItem系列的函数。
这个系列的函数共有五个,分别是对字符串、数字、日期、日期时间和小数。
语法格式:dw_control.GetItemString(rownumber,column)dw_control.GetItemNumber(rownumber,column)dw_control.GetItemDate(rownumber,column)dw_control.GetItemDateTime(rownumber,column)dw_control.GetItemDecimal(rownumber,column)其中,rownumber参数表示行号,column可以是列号或列名。
二、设置数据与获取数据所用的函数不同,设置DataWindow内指定行列处的数据只要使用一个SetItem()函数就可以了。
语法格式:dw_control.SetItem(rownumber, column, value)其中rownumber表示行号,column可以是列号,也可以是列名,value表示要设置的值。
但是该必须与DataWindow中指定的行列处的数据类型一致,不然PowerBuilder会报错。
SetItem()函数返回1时表示成功,返回-1时表示失败。
三、数据排序如果希望对DataWindow内的数据进行重新排序,而又不想重新从数据库中检索数据,可以使用SetSort()和Sort()函数。
这两个函数一起完成对DataWindow进行排序的功能。
其中SetSort()函数用于设置如何排序,Sort()函数用于对DataWindow实际进行排序。
语法格式:dw_control.SetSort(expression)dw_control.Sort()其中expression是一个字符串,表示排序的表达式,它的具体值是一个列名后面加一个空格,然后是"A",表示升序,或"D",表示降序。
如果有多个列要同时进行排序,它们之间用逗号隔开。
例:dw_1.SetSort("name A,xh D")这两个函数都是返回1表示成功,返回-1表示失败。
四、数据过滤如果希望对DataWindow内的数据进行过滤而不重新从数据库中检索数据,可以使用SetFilter()和Filter()函数。
它们一起完成对数据的过滤功能。
其中SetFilter()函数用来设置过滤条件,Filter()函数用于对DataWindow进行过滤。
语法格式:dw_control.SetFiter(expression)dw_control.Fiter()其中expression是一个字符串,表示过滤的条件,它实际是一个逻辑表达式。
例:dw_1.SetFilter("id>\'003\' AND name like\'王%\'")dw_1.Filter()这两个函数都是返回1表示成功,返回-1表示失败。
五、数据检查PowerBuilder提供了两个函数用于数据的检查,它们是DeleteCount()和ModifiedCount(),其作用分别是检查DataWindow中的数据自上一次更新到现在,被删除的行数和被修改的行数。
它们一般在窗口的CloseQuery事件中使用,用来检查该窗口的DataWindow中的数据是否有尚未保存的修改。
语法格式:dw_control.DeleteCount()dw.control.ModifiedCount()它们分别返回从上一次更新到现在,DataWindow中被删除和被修改的行数。
如果没有行被删除或被修改,那么它们返回0。
如果出现错误则返回-1。
一般情况下,如果窗口中含有可供修改的数据窗口对象,那么在窗口的CloseQuery事件中通常使用如下代码检查数据窗口对象中是否有尚未保存的数据:Int li_returnIF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THENli_return = MessageBox("提示","数据尚未保存,是否保存?",Question!,YesNoCancel!,3)CHOOSE CASE li_returnCASE 1TriggerEvent(\'ue_save\')RETURN 0CASE 2RETURN 0CASE 3RETURN 1END CHOOSEEND IF。