pb数据窗口常用代码

合集下载

pb数据窗口,sum的用法

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动态数据窗口

[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是缺省类型。

PB数据窗口常用函数方法

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获取或操作数据窗口语句的方法

PB获取或操作数据窗口语句的方法

PB获取或操作数据窗口语句的方法
PB(PowerBuilder)是一种用于构建企业级应用程序的集成开发环境(IDE),其中包含了用于操作数据窗口的语句和方法。

以下是获取或操
作数据窗口的一些常用语句和方法:
1.获取数据窗口控件对象:
dw_control = dw_ancestor.Object.dw_controlname
这种方法可以通过数据窗口对象的祖先对象获取数据窗口控件的引用,从而进行后续的操作。

2.设置数据源:
dw_control.SetTransObject(SQLCA)
这个方法会将数据窗口的数据源设置为指定的事务对象(通常是SQLCA对象)。

3.检索数据:
dw_control.Retrieve
这个方法会执行数据窗口的检索功能,从数据源中获取数据并显示在
数据窗口中。

4.更新数据:
dw_control.Update
这个方法会将数据窗口中修改的数据更新到数据库中。

5.取消修改:
dw_control.Reset
这个方法会取消对数据窗口的所有修改,恢复到最后一次检索或更新的状态。

6.设置过滤条件:
dw_control.SetFilter(filter_expression)
这个方法可以设置数据窗口的过滤条件,只显示满足条件的记录。

7.查找记录:
dw_control.Find(filter_expression)
这个方法可以在数据窗口中查找满足条件的记录,并将其选中。

以上是一些常用的获取或操作数据窗口语句和方法,使用这些语句和方法可以方便地对数据窗口进行管理和控制。

PB数据窗口常用函数方法

PB数据窗口常用函数方法
dwcontrol.SetItemStatus ( row, column, dwbuffer, status )
其中,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代码

pb代码
模拟二:
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m+n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m - n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
sle_3.text=string(m*n)
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
if integer(sle_2.text)=0 then
messagebox("出错","除数不能为零")
CASE is<n
sle_3.text="小于"
END CHOOSE
显示:
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
CHOOSE CASE m
CASE is>n
messagebox("提示",sle_1.text+"大于"+sle_2.text)
else
sle_3.text=string(m/n)
end if
模拟三:
比较:
real m,n
m=real(sle_1.text)
n=real(sle_2.text)
CHOOSE CASE m

PB常用代码

PB常用代码
//
----------------------------------------------------------------------
数据压缩加密
//判断是否存在目录
nv_compression lnv_cmp
lnv_cmp = CREATE nv_compression
string ls_dir
//
//自定义事件: uo_enter 返回值: long event id: pbm_keydown
//
// keycode key
//
// unsignedlong keyflags
//
//////////////////////////////////////////////////////
ls_dir = gstr_option.path+'\prodcut_lsj'
if DirectoryExists (ls_dir) then
// messagebox('','请先删除原来的存放数据的"txt"目录!')
// return
else
if createdirectory(ls_dir) = -1 then
if keydown(keyenter!) then
MESSAGEBOX('你按了回车键','你按了回车键')
keybd_event(9,0,0,0) //api
keybd_event(9,0,2,0)
Return 1
end if
dw_2.SetColumn('thp10')

pb数据窗口及事件

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数据窗口,sum的用法 -回复

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代码

01 通信录管理系统录入界面设计【窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【按钮代码】l “添加”按钮代码dw_1.reset()dw_1.insertRow(0)l “删除”按钮代码dw_1.deleteRow(0)l “保存”按钮代码if dw_1.update()=1 thencommit;elserollback;end ifl “刷新”按钮代码dw_1.retrieve()l “返回”按钮代码close(parent)【应用代码】SQLCA.DBMS = "ODBC"SQLCA.DBParm = "Connectstring='DSN=addressbook;UID=dba;PWD=sql'" Connect;open(w_input)02 通信录管理系统字段格式修改菜单设计【导航按钮代码】“第一位”按钮中的代码:dw_1.scrollToRow(1)“前一位”按钮中的代码:dw_1.scrollPriorRow()“后一位”按钮中的代码:dw_1.scrollNextRow()“最后位”按钮中的代码:dw_1.scrollToRow(dw_1.rowCount()) 【当前的记录和总记录代码】“第X位(共X位)”"第"+getRow()+"位(共"+rowCount()+" 位)"03 通信录管理系统查询设计(一)【Filter函数“精确查询”按钮代码】Dw_1.setFilter("编号='"+sle_1.text+"'")Dw_1.filter()【Filter函数“模糊查询”按钮代码】Dw_1.setFilter("编号like '%"+sle_1.text+"%'")Dw_1.filter()【Retrieve函数窗口代码】Dw_1.setTransObject(sqlca)【Retrieve函数“精确查询”按钮代码】Dw_1.retrieve(sle_1.text)【Retrieve函数“模糊查询”按钮代码】Dw_1.retrieve("%"+sle_1.text+"%")【Retrieve函数“生日精确查询”按钮代码】Dw_1.retrieve(date(sle_1.text))【Retrieve函数“编号范围查询”按钮代码】Dw_1.retrieve(sle_1.text,sle_2.text)04 通信录管理系统查询设计(二)【Retrieve函数“生日范围查询”按钮代码】Dw_1.retrieve(date(sle_1.text),date(sle_2.text))【函数keydown(KeyEnter!)应用代码】if keydown(KeyEnter!) thencb_1.TriggerEvent(clicked!)End if【函数messageBox()应用代码】if sle_1.text="" thenmessageBox("信息提示","请输入要查询的内容!!!")returnelseif dw_1.retrieve(sle_1.text)=0 thenmessageBox("信息提示","没有查到内容!")end ifend if05 通信录管理系统查询设计(三)【Filter函数“编号范围查询”按钮代码】Dw_1.setFilter("编号>='"+sle_1.text+"' and 编号<='"+sle_2.text+"'") Dw_1.filter()【Filter函数“编号范围查询”窗口代码】Dw_1.setTransObject(sqlca)Dw_1.retrieve()【“工资税计算”按钮中的代码】if real(sle_1.text)>1600 thensle_2.text=string((real(sle_1.text) - 1600)*0.2) elsesle_2.text="0"end if【“成绩分类”按钮中的代码】Integer ss=integer(sle_1.text)IF s>100 or s<0 thenmessageBox("信息提示","成绩错误!!")Elseif s>=90 thensle_2.text="优秀"Elseif s>=80 thensle_2.text="良好"Elseif s>=70 thensle_2.text="中等"Elseif s>=60 thensle_2.text="及格"elsesle_2.text="不及格"End if【任意字段查询窗口代码】Dw_1.setTransObject(sqlca)lb_1.selectItem("编号",0)【任意字段查询窗口代码“查询”按钮代码】string s_old,s_new,s_wheres_old=dw_1.GetSQLSelect()If ddlb_1.text="like" thens_where=" WHERE "+lb_1.SelectedItem()+' '+ddlb_1.text+"+&'%"+sle_1.text+"%'; "Elses_where=" WHERE "+lb_1.SelectedItem()+' '+ddlb_1.text+" '"+sle_1.text+"'; " End ifs_new=s_old+s_whereif dw_1.SetSqlSelect(s_new)=-1 thenbeep(3)messageBox("信息提示","条件窗口条件设置有误,请仔细检查!",StopSign!) elsedw_1.setTransObject(sqlca)dw_1.retrieve()dw_1.SetSqlSelect(s_old)end if【多关系组合查询“增加条件”按钮代码】(2)“增加条件”按钮代码if sle_1.text="" thenmessageBox("信息提示","没有查询条件的值,请仔细检查!")return;end ifif trim(mle_1.text)<> "" thenif ddlb_1.text="like" thenmle_1.text= mle_1.text+" and "+lb_1.SelectedItem()+' '+ddlb_1.text+" '%"+& sle_1.text+"%' "elsemle_1.text= mle_1.text+" and "+lb_1.SelectedItem()+' '+ddlb_1.text+" '"+& sle_1.text+"' "end ifelseif ddlb_1.text="like" thenmle_1.text= mle_1.text+' '+lb_1.SelectedItem()+' '+ddlb_1.text+" '%"+&sle_1.text+"%' "elsemle_1.text= mle_1.text+' '+lb_1.SelectedItem()+' '+ddlb_1.text+"+&'"+sle_1.text+"' "end ifend ifsle_1.text=""【多关系组合查询“查询”按钮代码】string s_old,s_newif trim(mle_1.text)= '' thenmessageBox("信息提示","缺少查询条件!")returnend ifs_old=dw_1.GetSQLSelect()s_new=mle_1.texts_new=s_old+" where "+s_new+";"if dw_1.SetSqlSelect(s_new)=-1 thenbeep(3)messageBox("信息提示","条件窗口条件设置有误,请仔细检查!",StopSign!) elsedw_1.setTransObject(sqlca)dw_1.retrieve()dw_1.SetSqlSelect(s_old)end if【多关系组合查询“清空”按钮代码】mle_1.text=""06-通信录管理系统报表设计(一)【窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【“另存为.txt文件...”按钮代码】dw_1.saveas("",text!,false)【“从.txt文件中读数据...”按钮代码】int valuestring docname,namedvalue = GetFileOpenName("请选中一个文件名:", docname, named, "Doc", & + "Text Files (*.TXT),*.TXT") //读数据文件if value=1 thendelete from addressbook; //清空addressbook表中的数据dw_1.ImportFile(docname) //导入文件数据elsereturnend ifif dw_1.update()=1 then //将文件数据传入数据表中commit;elserollback;end if【“页码”代码】"第" + page() + " 页(共" + pageCount()+" 页)"【“退出”按钮代码】Close(parent)【“打印机设置”按钮代码】printSetup()【“打印预览”按钮代码】if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if【“打印”按钮代码】dw_1.print()07-通信录管理系统报表设计(二)【单选按钮集成报表窗口代码】dw_1.setTransObject(sqlca)dw_1.retrieve()【单选按钮集成报表窗口中按钮代码】“打印机设置”按钮中的代码为:printSetup()“打印预览”按钮中的代码为:if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if“打印”按钮中的代码为:dw_1.print()“退出”按钮中的代码为:close(parent)【“RadioButton”控件中代码】dw_1.DataObject="d_report_crosstab" //数据窗口对象要修改dw_1.setTransObject(sqlca)dw_1.retrieve()【选项卡集成报表窗口代码】tab_1.tabPage_1.dw_1.setTransobject(sqlca)tab_1.tabPage_2.dw_2.setTransobject(sqlca)tab_1.tabPage_3.dw_3.setTransobject(sqlca)tab_1.tabPage_4.dw_4.setTransobject(sqlca)tab_1.tabPage_5.dw_5.setTransobject(sqlca)tab_1.tabPage_6.dw_6.setTransobject(sqlca)tab_1.tabPage_7.dw_7.setTransobject(sqlca)tab_1.tabPage_1.dw_1.retrieve()tab_1.tabPage_2.dw_2.retrieve()tab_1.tabPage_3.dw_3.retrieve()tab_1.tabPage_4.dw_4.retrieve()tab_1.tabPage_5.dw_5.retrieve()tab_1.tabPage_6.dw_6.retrieve()tab_1.tabPage_7.dw_7.retrieve()【选项卡集成报表窗口按钮代码】所有标签页共用“打印机设置”按钮中的代码为:printSetup()“退出”按钮中的代码为:close(parent)各个标签页“TabPage_1-7”专用的注意按钮名称和数据窗口名称的修改“打印预览”按钮中的代码为:if cb_2.text="打印预览" thendw_1.Object.datawindow.print.preview='Yes'cb_2.text="关闭预览"elsedw_1.Object.datawindow.print.preview='No'cb_2.text="打印预览"end if“打印”按钮中的代码为:dw_1.print()08 工具栏、主界面修饰;系统登录界面、可执行文件生成【主界面图片定时改变代码】双击主界面窗口空白处,在“open”事件中输入下面代码:randomize(0) //初始化随机序列函数p_p="f"+string(rand(20))+ ".jpg" //rand(n)获取1和n之间的一个随机整数p_1.pictureName=p_ptimer(3) //以指定的时间间隔(3秒钟)重复触发定时器事件中的代码单击“open() returns long [pbm_open]”下拉列表框,选择“timer() returns long [pbm_timer]”,并在下面空白处输入下面代码:p_p="f"+string(rand(20))+ ".jpg"p_1.pictureName=p_p【简单系统登录界面代码】如果用户名为“SIFT”,密码为“A123”,则只要在pb_1按钮的“Clicked”事件中编写如下代码即可。

pb数据窗口控件的常用函数

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数据窗口常用函数方法在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开发技巧代码集合

PB开发技巧代码集合:00. 凡事预则立,不预则废。

生于忧患,死于安乐。

时间就是生命,1分钟可以做什么!01. 获取窗口属性的方法:dw_1.selectrow(0,false)//不选中任何行ls_read = dw_1.Object.DataWindow.ReadOnly // 获取dw_1只读属性ls_read = dw_1.Describe("DataWindow.ReadOnly") // 获取dw_1只读属性(同上) dw_1.Object.DataWindow.ReadOnly="no" // 取消dw_1只读属性02. 程序中使用SQL语句:基本格式如下:Select name,salary,sexInto :ls_name, ls_salary, ls_sexFrom studentWhere id = :li_id; //(注意逗号分隔,冒号变量,分号结束)03. SQL基本语句:1) 创建表:create tableCreate Table Personal(P_id varchar2(25) primary key not null,P_name varchar2(25) not null, P_pwd varchar2(25) not null,P_age varchar2(25) not null);2) 删除表:drop tableDrop table personal;3) 修改表:alter tableAlter table personalAdd notes varchar2(25);4) 单行基本格式:Select (Distinct/All) name, pwd , sexFrom tabA a, tabB bWhere a.id = b.idGroup by name, pwd, sexHaving nameOrder by a.id;5) 嵌套查询:例子1:查询张三所在部门所有人的信息。

PB获取或操作数据窗口语句的方法

PB获取或操作数据窗口语句的方法

PB获取或操作数据窗⼝语句的⽅法1、setsqlselect⽤法:ls_select=getsqlselect //通过getsqlselect取得当前数据窗⼝的查询语句ls_where=" " //给变量ls_where赋值,将所要添加的限定条件赋给此变量,但应考虑到select⼦句与where⼦句之前的空格dw_1.setsqlselect(ls_select+ls_where) //通过setsqlselect将⽣成的查询语句更新⾄数据窗⼝dw_1.event ue_retrieve()2、dw_1.modify⽤法:Old_Select=dw_1.Describe("DataWindow.Table.SQLSelect ")ls_select=getsqlselectls_where=" "dw_1.modify("DataWindow.Table.Select='" + ls_select+ls_where + " ' ")dw_1.settransobject(SQLCA)dw_1.retrieve()dw_1.object.DataWindow.Table.Select=Old_Select更新完后可⽤以下语句取出select语句查看并调试messagebox("",string(dw_1.Describe("DataWindow.Table.SQLSelect ")))⽹上有贴⼦说此语句只能更改DW查询语句中的where⼦句,暂未证实3、dw_1.object.DataWindow.Table.Select=" " ⽤法:此种⽤法与dw_1.modify()基本相同,只是使⽤dw_1.modify()时,在()中需要使⽤双引号把其中的DataWindow.Table.Select以及其后的变量引起来,需要考虑引号的对应关系问题,⽽此种⽤法则相对简单⼀些Old_Select=dw_1.Describe("DataWindow.Table.SQLSelect ")ls_select=" select …… from ……"ls_where=" ……"ls_having=" …… "ls_groupby=" …… "dw_1.object.DataWindow.Table.Select=ls_select+ls_where+ls_having+ls_groupbydw_1.settransobject(SQLCA)dw_1.retrieve()dw_1.object.DataWindow.Table.Select=Old_Select感觉此语句最为强⼤,⽤起来也顺⼿,我喜欢注意:在动态修改sql语句时,select段可以修改,但应确保select后⾯跟随的字段个数以及类型应与建⽴数据窗⼝时选择的字段个数和类型相同,否则报错。

PB中下拉数据窗口带参数应用

PB中下拉数据窗口带参数应用

PB中下拉数据窗口带参数应用在数据输入时,当用到下拉列表时,会发现有些数据是和别的数据相关的,这时我们会希望过滤掉那些不相关的数据。

例如生成一个入库单,某种物料有多个供应商,我们要根据物料来过滤掉和这个物料不相关的供应商,这样会加快检索和输入的速度。

入库单表:billrec1. 以supply表,制作一个带参数的数据窗口,命名为d_supply_replace_list,参数列为item」d,字符型,隐藏物料代码列2. 以billrec 表,制作一个数据窗口,命名为billrec_ma in tai n,将supply_id 列的edit 属性中的style type选定为DropDownDW , datawindow 为d_supply_replace_lis。

在窗口中放置数据窗口控件dw_1,将其与billrec_ma in tain数据窗口关联。

在窗口中定义实例变量datawindowchild idwc_child。

3. 在dw_1的constructor事件中编写以下脚本:this.getchild("supply_id",idwc_child // 生成子数据窗口, supply_id 为下拉列表列idwc_child.i nsertrow(0idwc_child.settra nsobject(SQLCAthis.of_settra nsobject(SQLCAthis.i nsertrow(04. 在dw_1的itemchanged事件中编写以下脚本:long ll_getcolu mnll_getcolu mn = this.getcolu mn( //获得当前歹Uchoose case ll_getcolu mncase 7 /假设item」d列是第7列dw_1.accepttext(is_id = dw_1.getitemstri ng(row,7 〃获得物料代码idwc_child.retrieve(is_id //检索替代供应商end choose这样在输入不同的物料时,会像下图那样,只列出相关的供应商。

PB常用代码

PB常用代码

pb 常用的一些代码窗口的open 事件或者【浏览】和【查询】按钮的click 事件dw_1.settransobject(sqlca)//指定事务对象dw_1.retrieve()//检索数据【添加】按钮的click 事件dw_1.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(dw_1.rowcount())if dw_1.updata()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseeslemessagebox("提示","保存失败,请核实!")end ifdw_1.setcolumn(1)//将第一列设置为当前列cb_1.enabled=falsecb_3.enabled=true//cb_3 为保存控件【保存】按钮的click 事件if dw_1.update()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseelsemessagebox("提示","保存失败,请核实!")end if【删除】按钮的click 事件if dw_1.deleterow(0) then//其中0 表示删除当前行if dw_1.update()=1 thenmessagebox("提示","删除成功!")elsemessagebox("提示","删除失败!")end ifelsemessagebox("提示","删除失败")end if【退出】按钮click 事件close(parent)【上一条】按钮的click 事件dw_1.scrollpriorrow()dw_1.selectrow(0,false)//0 表示选取或者取消所有行,dw_1.selectrow(1,true)//第一行高亮显示dw_1.selectrow(dw_1.getrow(),true)【下一条】按钮的click 事件dw_1.scrollnextrow()dw_1.selctrow(0,false)dw_1.selectrow(dw_1.getrow(),true)【升序】按钮的click 事件本例按商品编号升序排列dw_1.setransobject(sqlca)dw_1.setsort("商品编号A")//setsort 函数用来定义数据窗口如何排序,sort()函数则实际对数据窗口进行排序。

PB开发技巧代码集合

PB开发技巧代码集合

PB开发技巧代码集合:00. 凡事预则立,不预则废。

生于忧患,死于安乐。

时间就是生命,1分钟可以做什么!01. 获取窗口属性的方法:dw_1.selectrow(0,false)//不选中任何行ls_read = dw_1.Object.DataWindow.ReadOnly // 获取dw_1只读属性ls_read = dw_1.Describe("DataWindow.ReadOnly") // 获取dw_1只读属性(同上) dw_1.Object.DataWindow.ReadOnly="no" // 取消dw_1只读属性02. 程序中使用SQL语句:基本格式如下:Select name,salary,sexInto :ls_name, ls_salary, ls_sexFrom studentWhere id = :li_id; //(注意逗号分隔,冒号变量,分号结束)03. SQL基本语句:1) 创建表:create tableCreate Table Personal(P_id varchar2(25) primary key not null,P_name varchar2(25) not null, P_pwd varchar2(25) not null,P_age varchar2(25) not null);2) 删除表:drop tableDrop table personal;3) 修改表:alter tableAlter table personalAdd notes varchar2(25);4) 单行基本格式:Select (Distinct/All) name, pwd , sexFrom tabA a, tabB bWhere a.id = b.idGroup by name, pwd, sexHaving nameOrder by a.id;5) 嵌套查询:例子1:查询张三所在部门所有人的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、连接数据库连接数据库也就是指定事务对象。

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。

相关文档
最新文档