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类型数据。
- 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。