`
zjut_xiongfeng
  • 浏览: 280173 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Powerbuilder编程过程中的数据窗口函数

阅读更多

· 与数据库有关的函数

· 行操作

· 列操作

· 数据操作

PowerBuilder为数据窗口控件提供了丰富的函数,这些函数使用户能够在使用数据窗口控件时得心应手。

与数据库有关的函数

这类函数完成与数据库有关的功能。

一、连接数据库

连接数据库也就是指定事务对象。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_return

li_return = dw_1.Update()

IF li_return = 1 THEN

COMMIT USING SQLCA;

ELSE

ROLLBACK 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_return

IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN

li_return = MessageBox("提示","数据尚未保存,是否保存?",Question!,YesNoCancel!,3)

CHOOSE CASE li_return

CASE 1

TriggerEvent(\'ue_save\')

RETURN 0

CASE 2

RETURN 0

CASE 3

RETURN 1

END CHOOSE

END IF

分享到:
评论

相关推荐

    PowerBuilder编程经验谈

    在本篇文章中,我们将深入探讨PowerBuilder编程的一些关键知识点和实践经验。 首先,我们需要了解PowerBuilder的基础架构。PowerBuilder使用面向对象编程(OOP)理念,支持事件驱动的编程模型。它的核心组件包括...

    PowerBuilder数据窗口编程技巧

    本篇将深入探讨"PowerBuilder数据窗口编程技巧",帮助开发者提高工作效率,实现更高效、更灵活的数据展示和操作。 1. 数据窗口的基本概念 数据窗口是PowerBuilder中的一个可视化控件,用于显示、编辑和操作数据库中...

    powerbuilder编程经验谈

    7. **源代码管理**:在“powerbuilder编程经验谈”中,丰富的源代码资源意味着可以学习到实际项目中的编码实践。通过研究这些代码,你可以了解最佳编程实践,例如代码组织、命名规范和注释技巧。 8. **软件工程原则...

    PowerBuilder编程代码

    本压缩包包含的“PowerBuilder编程代码”是一份可供学习和参考的源代码资源,适合对PowerBuilder感兴趣的开发者或者正在学习PowerBuilder的人群。 在PowerBuilder中,主要的编程元素包括数据窗口(DataWindow)、...

    PowerBuilder函数大全

    在开发过程中,结合PB的事件驱动模型和数据窗口组件,可以构建出高效且易维护的数据库应用程序。记住,熟练掌握这些函数将大大提高您的开发效率和代码质量。通过不断学习和实践,您可以成为一个PB编程的专家。查阅...

    PB常见问题汇编;PowerBuilder编程俱乐部常见问题;PB常见函数;PowerBuilder常见问题集;PowerBuilder使用技巧集;PB常见问题;PB技巧100例;PB技巧及经验。是个集成包。

    2. **PowerBuilder编程俱乐部常见问题**:这可能是一个社区或论坛的问题汇总,包含了用户在实际编程过程中遇到的问题和解决方案。这些问题往往具有实践性,能够帮助开发者解决实际遇到的难题。 3. **PB常见函数**:...

    Powerbuilder API函数大全

    PowerBuilder API函数大全是针对PowerBuilder开发环境的一份详尽的参考资源,它包含了PowerBuilder应用程序在编程过程中可能用到的各种API函数。API(Application Programming Interface)函数是操作系统或者库提供...

    pb powerbuilder 截图 截取图片 数据窗 截屏控制

    数据窗口是PowerBuilder中的核心组件之一,用于显示和操作数据库中的数据。它可以动态地从数据库中提取数据,并以各种形式展示,如表格、网格、图表等。数据窗口的强大之处在于它的灵活性,允许开发者自定义布局、...

    powerbuilder编程规范

    在“PowerBuilder编程规范”中,我们可能会涉及到以下几个核心知识点: 1. **数据窗口(DataWindow)**:这是PowerBuilder的核心组件,用于显示、编辑和处理数据库中的数据。规范可能包括如何设计数据窗口,优化...

    PowerBuilder编程技巧CHM_openbtz_PowerBuilder_powerbuilder应用技巧_

    "PowerBuilder编程技巧CHM_openbtz_PowerBuilder_powerbuilder应用技巧_"这个标题表明这是一份关于PowerBuilder编程技巧的CHM(Compiled Help Manual,编译后的帮助手册)文档,可能是由openbtz社区或其他专家编写的...

    原创PowerBuilder编程框架

    "原创PowerBuilder编程框架"很可能是一个由开发者自创的框架,旨在简化PB应用的开发过程,提高代码复用性和项目效率。这个框架可能包含了大量预定义的函数、类、对象和组件,开发者可以基于这些元素快速构建功能丰富...

    PowerBuilder9_0数据窗口技术

    PowerBuilder 9.0的数据窗口支持动态绑定和运行时修改,这意味着在程序运行过程中可以改变数据窗口的属性和行为。例如,可以根据用户权限动态调整显示字段,或者根据业务需求动态执行不同的SQL语句。 1. **动态SQL*...

    PowerBuilder数据窗口技术详解

    数据窗口技术是PowerBuilder 7.0中的核心功能之一,它主要用于处理数据的显示、检索、排序、过滤等操作。数据窗口不仅可以从各种数据源获取数据,还可以通过多种格式展示数据,从而帮助开发者构建出功能丰富且易于...

    PowerBuilder的函数大全

    3. **事件处理函数**:在PowerBuilder中,事件驱动编程是主要的编程模式。函数大全会涵盖各种控件事件对应的处理函数,如Click、DoubleClick等,以及如何在事件处理函数中调用其他函数进行业务逻辑处理。 4. **窗口...

    powerbuilder8.0编程百例

    PowerBuilder 8.0是一款由Sybase公司开发的可视化数据库应用程序开发工具,它以其强大的数据窗口功能和面向对象的编程模型在20世纪90年代至21世纪初深受程序员喜爱。"PowerBuilder 8.0编程百例"是针对这款经典开发...

    PowerBuilder常用日期时间函数

    **用法示例:** 当我们将 Today() 函数作为数据窗口控件 SetItem() 的参数时,如果该数据窗口列的数据类型为 DateTime,则 Today() 将返回当前系统的日期与时间,并将其设置到数据窗口中相应的项上。 #### 三、Now()...

    powerbuilder 9.0精彩编程百例

    在PowerBuilder 9.0中,开发者可以利用其强大的数据窗口(DataWindow)组件来设计和操作数据库,以及利用事件驱动的编程模型来构建用户界面。书中的"精彩编程百例"涵盖了各种功能和应用场景,如数据查询、数据编辑、...

    PowerBuilder精彩编程200例源程序光盘

    PowerBuilder精彩编程200例源程序光盘是一款专为学习和提升PowerBuilder编程技能而设计的资源集合。PowerBuilder是一种强大的数据窗口驱动的应用程序开发工具,尤其在企业级数据库应用开发领域广受青睐。这款光盘...

    PowerBuilder 12.5手册大全

    PowerBuilder 12.5是一款强大的企业级应用开发工具,尤其在数据窗口设计、数据库应用程序构建方面具有显著优势。这款工具由Sybase公司(后被SAP收购)开发,为开发人员提供了高效的可视化编程环境,使得开发人员可以...

Global site tag (gtag.js) - Google Analytics