PB]-子数据窗口操作

合集下载

PB数据窗口技巧问答

PB数据窗口技巧问答

PB数据窗口技巧问答数据窗口是PowerBuilder中用于显示、获取和更新数据库表格的对象之一、在使用数据窗口进行数据操作的过程中,有一些技巧和常见问题需要注意和解决。

以下是对数据窗口技巧和问答的详细介绍。

1.如何在数据窗口中添加一个新的数据库表格?可以通过以下步骤在数据窗口中添加一个新的数据库表格:(2) 选择“Insert”菜单,然后选择“Tables”子菜单。

(3)在弹出的对话框中选择要添加的数据库表格,然后点击“OK”按钮。

2.如何在数据窗口中显示特定的数据列?可以通过以下步骤在数据窗口中显示特定的数据列:(2) 在画布区域中右键点击并选择“Insert”菜单,然后选择“Columns”子菜单。

(3)在弹出的对话框中选择要显示的数据列,然后点击“OK”按钮。

3.如何在数据窗口中设置筛选条件?可以通过以下步骤在数据窗口中设置筛选条件:(2) 在画布区域中右键点击并选择“Filter”菜单。

(3)在弹出的对话框中输入要设置的筛选条件,然后点击“OK”按钮。

4.如何在数据窗口中设置排序条件?可以通过以下步骤在数据窗口中设置排序条件:(2) 在画布区域中右键点击并选择“Sort”菜单。

(3)在弹出的对话框中选择要设置的排序条件,然后点击“OK”按钮。

5.如何在数据窗口中添加计算列?可以通过以下步骤在数据窗口中添加计算列:(3)在弹出的对话框中输入计算列的表达式和名称,然后点击“OK”按钮。

6.如何在数据窗口中设置格式化?可以通过以下步骤在数据窗口中设置格式化:(2)在画布区域中选择要设置格式化的数据列。

(3) 在属性窗口中选择“Format”选项卡,然后选择要应用的格式化类型和样式。

7.如何在数据窗口中执行增、删、改操作?可以通过以下步骤在数据窗口中执行增、删、改操作:(1) 在数据窗口画布区域中右键点击并选择“Insert”菜单,然后选择“Rows”子菜单来添加新的行。

(2) 在数据窗口画布区域中右键点击并选择“Delete”菜单来删除选定的行。

PB数据窗口教程

PB数据窗口教程

PB数据窗口教程数据窗口是PowerBuilder中最常用的控件之一、它用于显示数据库查询结果,并提供了对此结果进行浏览、修改和删除等操作的功能。

本教程将为您介绍如何在PowerBuilder中使用数据窗口控件。

第一步是创建一个数据窗口。

在PowerBuilder的“对象”菜单下,选择“新建”>“数据窗口”。

在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。

此时,将会出现一个空白的数据窗口设计器。

接下来,将需要显示在数据窗口中的列添加到数据窗口中。

您可以通过拖拽数据库字段或手动添加列的方式进行操作。

在设计器的左侧,您将看到一个“对象树”面板,在这里选择数据窗口对象,并右键单击以添加列。

完成列的设置后,您可以在设计器的页面中放置其他控件,以增强用户界面。

一些常用的控件包括文本框、复选框、下拉列表框等。

您可以通过拖拽控件到数据窗口设计器的页面中进行操作,并根据需要设置其属性。

下一步是设置数据窗口的数据源。

在数据窗口设计器的菜单栏中,选择“数据”>“设置数据源”选项。

在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。

此时,数据窗口将会显示数据源中的数据。

现在,您可以运行应用程序,并查看输出窗口中的结果。

您可以通过点击数据窗口中的列标题对数据进行排序,通过点击数据行进行选择,并通过单击“查阅”按钮在查询结果中进行导航。

如果需要,您还可以在数据窗口中进行增加、修改和删除操作。

通过本教程,您应该已经了解了如何在PowerBuilder中创建和使用数据窗口控件。

数据窗口是PowerBuilder开发中非常重要的一部分,掌握了数据窗口的使用方法,可以提升开发效率,并为用户提供更好的用户界面和交互体验。

希望本教程能对您有所帮助!。

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow) 37个技巧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获取或操作数据窗口语句的方法
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的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。

在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。

下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。

一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。

创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。

2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。

通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。

3.数据检索:使用数据窗口可以方便地进行数据检索。

通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。

4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。

通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。

同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。

5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。

通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。

6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。

例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。

二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。

通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。

这对于动态查询和灵活的数据展示非常有用。

2.嵌套数据窗口:PB支持嵌套数据窗口的使用。

通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。

例如,可以在父数据窗口中显示子数据窗口的数据。

PB数据窗口技巧问答

PB数据窗口技巧问答

PB数据窗口技巧问答一、控制数据窗口的显示方式1.使用数据窗口的打开方式:数据窗口可以在工具栏上选择打开方式,如:只读、可更新、可插入等。

3.使用数据窗口对象属性:在对象属性中设置数据窗口的显示方式,如设置为只读或可更新。

二、使用过滤器1. 使用过滤器自动过滤:在PowerBuilder中,可以通过在数据窗口对象的过滤器属性中设置过滤条件,自动过滤查询结果。

2.使用过滤器窗口:在运行时,可以使用过滤器窗口手动设置过滤条件,实时过滤查询结果。

三、使用计算列1.创建计算列:计算列用于在数据窗口中显示计算结果。

可以通过在数据窗口对象的计算列属性中设置计算表达式来创建计算列。

2. 使用计算列函数:PowerBuilder提供了一系列的计算列函数,可以通过在计算列属性中设置函数来实现复杂的计算操作。

四、使用排序功能1.使用数据窗口控制台进行排序:在数据窗口控制台中,可以使用排序按钮对查询结果进行排序。

2.使用数据窗口对象属性进行排序:在数据窗口对象的排序属性中设置排序条件,可以在运行时自动对查询结果进行排序。

五、使用数据窗口查询功能1.使用查询按钮:在数据窗口中添加查询按钮,可以方便用户执行查询操作。

2.使用自定义查询功能:可以在数据窗口对象的SQL属性中设置自定义查询语句,从而实现更高级的查询操作。

七、使用导航功能1.使用导航按钮:在数据窗口中添加导航按钮,可以方便用户浏览查询结果。

2. 使用导航函数:PowerBuilder提供了一系列的导航函数,可以通过调用这些函数实现数据的导航操作。

八、使用图形功能1.添加图形控件:可以在数据窗口中添加图形控件,用于显示图形数据。

2. 使用图形函数:PowerBuilder提供了一系列的图形函数,可以通过调用这些函数实现图形数据的处理和显示。

九、使用数据窗口布局功能1.使用数据窗口布局:可以在数据窗口对象的布局属性中设置布局方式,实现不同的显示效果。

2.使用数据窗口常规属性:在常规属性中,可以设置数据窗口的大小、位置、标题等。

[整理版]利用PB动态创建数据窗口

[整理版]利用PB动态创建数据窗口

利用PB动态创建数据窗口当利用PowerBuilder建立数据窗口时,用户通常不能自己选择数据来源和显示类型。

如何让用户在应用程序中自己定义数据窗口的数据来源和显示类型呢?为了达到这个目的,我们必须在运行程序阶段根据用户自己的需求,动态地建立一个数据窗口。

笔者将结合实际,详细介绍动态创建数据窗口的步骤。

在建立动态数据窗口之前,必须先得到数据窗口对象的语法,PB中为我们提供了SyntaxFromSQL( )函数,利用这个函数可以得到建立数据窗口的语法。

SyntaxFromSQL()函数的基本格式如下:事物对象.SyntaxFromSQL(数据来源字符串,显示类型字符串,错误字符串)下面是建立一个数据窗口对象语法的范例∶利用SyntaxFromSQL( )所建立的数据窗口对象是在运行阶段才建立的对象,并不会自动保存在PB的对象数据库Library 中。

为了以后可以重复使用这个数据窗口对象,可以利用LibraryImport( )函数保存数据窗口对象。

在利用SyntaxFromSQL( )函数建立一个数据窗口语法后,必须将它与窗口上的数据窗口控件结合,这个数据窗口控件必须已经存在于窗口中。

要将数据窗口对象语法和一个已经存在的数据窗口控件结合,必须利用Create( )函数,下面是范例程序∶在上面程序中,ls_syntax是运行SyntaxFromSQL( )函数后所返回的字符串。

除此之外,也可以利用Librar yExport( )函数从PB对象数据库中得到已经存在于PBL中的数据窗口对象语法。

因为Create( )函数会破坏先前数据窗口与事物对象的结合,所以必须利用SetransObject( )函数重新结合事物对象给新的数据窗口对象,最后再运行Retrieve( )函数,从数据库中读取数据。

最后,我们需要利用SQL 语句字符串,动态创建一个新的数据窗口对象到一个数据窗口控件当中。

虽然,在运行阶段并不能直接在窗口上建立一个数据窗口控件,但却可以利用用户对象建立一个与窗口上一样的数据窗口控件,在运行阶段时再动态打开这个用户对象。

PB窗口使用技巧

PB窗口使用技巧

[PB]-窗口使用技巧**在打开和关闭窗口时进行数据传递OpenWithParm(windowvar,parmeter{,parent})其中windowvar是要打开的窗口名称,可以是window画板中定义的窗口,也可以是脚本中定义的窗口变量;parameter是要传递的参数,只能是String,Numeric或者PowerObject类型,该参数根据类型保存在Message的成员变量中传递个要打开的窗口;parent是一个已经打开的窗口名称,该窗口要成为windowvar窗口的父窗口。

函数执行成功返回1,否则返回-1,如果有参数为null 则返回null。

对象Message是一个结构类型的全局变量,并有很多的成员变量。

在传递参数时三个成员变量用来读取传递的数据,它们是:Message.DoubleParm:用来传递Numeric类型的数据。

Message.PowerObjectParm:用来传递PowerObject对象类型的数据,象数据窗口、按键、列表框和拥护自定义的结构等都可以使用该变量进行传递。

Message.StringParm:用来传递String类型的数据。

当使用函数OpenWithParm打开窗口后,应该在进行其他操作之前首先读取传递过来的参数,以免其他操作修改Message中的成员变量。

CloseWithReturn(windowname,Returnvalue)其中,windowname是要关闭的窗口的名称,一般是脚本所在的窗口的名称;Returnvalue是要返回的数值,和上述函数OpenWithParm的完全相同。

函数正确执行返回1,否则返回-1,当有参数为null时则返回null。

*只要是response类型的窗口,使用该函数就能有效地传递参数;该窗口不一定非得是用OpenWithParm打开的。

在打开该response的窗口中可以读取传递过来的参数。

总之,使用CloseWithReturn函数时一定要注意,只有被关闭的窗口是response 类型才能有效地获取返回参数。

如何在PB数据窗口中修改数据---设置数据窗口的更新属性

如何在PB数据窗口中修改数据---设置数据窗口的更新属性

如何在PB数据窗口中修改数据---设置数据窗口的更新属性数据窗口对象非常强大的原因之一就是能够很容易地修改数据库。

当用户修改了数据窗口中的数据,插入了新的数据行或者删除了数据行以后,只要调用update()函数就可以将修改了的数据保存到数据库中。

但是,这需要一个前提,就是必须设置数据窗口的修改属性。

数据窗口要修改数据表,首先清楚数据窗口只能修改一个数据表。

当数据窗口的数据来源于不止一个数据表时,可以用脚本控制数据窗口的修改属性来对数据表逐个进行修改,这种技术在后面有关章节介绍。

下面介绍一次修改一个数据表的设定方法。

当数据窗口是用来接受用户的手工录入数据时,应该设置两方面的属性才能确保数据窗口能够用来修改数据表。

一个是修改数据窗口的修改属性,另一个是用户可以修改的字段的相关属性值。

首先介绍数据窗口的修改属性的设置。

在数据窗口画板中,使用菜单项Rows->Update Properties,弹出如图所示的窗口。

数据窗口的所有修改属性都集中在该窗口中。

如果数据窗口对应的数据表中定义了主键或者惟一性索引,则数据窗口创建时缺省的就是允许修改,并且正确设置了所有的修改属性。

否则就需要手工进行设置。

前面介绍过,当增加、删除或者重新选择了字段时,PowerBuilder将数据窗口的修改属性置为不允许,这时也应该进行手工设置。

首先应该选中Allow Updates选项,只有选中该选项,才允许继续进行其他属性的设定。

在Allow Updates右面的下拉列表框叫做Table to Update,只能在该下拉列表框中选择一个,并且必须选择一个数据表名,选中的表就是要被更新的表。

选中了Allow Updates属性后,接下来就要指定在数据窗口中哪些列被更新。

在Updateable Columns列表框中用鼠标单击被更新的字段。

当数据窗口中的字段来自不止一个数据表时,这时一定要选择同一个表中的字段,因为一个数据窗口一次只能更新一个数据表。

PB数据窗口教程

PB数据窗口教程

Powerbuilder创建数据窗口规范与注意事项导言:数据窗口是powerbuilder中一个最重要的控件,且是powerbuilder独有的一个控件,他存在于用户与数据库之间,能够方便的帮助用户进行sql语句对数据库进行操作,使开发人员能够节约大量时间与精力,然而相对数据窗口的强大,powerbuilder软件本身就显得略有不足,相对其他开发软件而言会有更多的bug。

下面就数据窗口的创建与标准布局做一些讲解。

1.新建数据窗口时常见的处理流程a)新建数据窗口1)选择表和要编辑、要显示的字段。

2)设置检索参数3)设置where条件b)显示处理(不分先后)1)去掉无需编辑、无需显示的,但要存储、处理数据的字段2)调整Header、Detail区域字体大小3)设置显示格式format掩码1.直接掩码写死2.根据条件设置掩码c)输入控制1)设置字段是否可以编辑1.去掉无需编辑、需要显示的字段的焦点2.根据条件设置字段是否可以编辑2)设置字段的编辑风格1.edit标签页下style typea)editb)editmaskc)radiobuttonsd)checkboxe)dropdowndwf)dropdownlistbox3)设置字段掩码(如果无显示掩码,则以编辑掩码显示)1.数值(“0.00”、“###0.00”)2.日期(“yyyy-mm-dd”、“yyyy-mm-dd hh:mm:ss”)d)设置数据窗口的更新属性一、创建powerbuilder数据窗口时的注意事项1.简化数据窗口输出列在powerbuilder中,数据传输的流量问题是值得注意的一个问题,每一个数据从数据库到数据窗口都是需要流量作为代价的。

因此,在创建数据库的时候,能够尽可能的少引入列是一个应当遵守的原则。

理论上,能够不读取的字段就不要将其加入数据窗口中,以减少网络传输。

2.列visible属性设为false后改回自动移动到最后的处理方法。

60个PB数据窗口技巧

60个PB数据窗口技巧

60个PB数据窗口技巧数据窗口是一种用于展示数据的工具,它可以帮助用户更好地理解和分析数据。

下面是60个PB数据窗口技巧,帮助您更高效地使用数据窗口。

1.在数据窗口左下角的栏中输入关键词,可以快速筛选显示您所需的数据。

2.使用鼠标右键单击数据窗口的列头,可以自定义列的显示与隐藏。

3.在数据窗口的列头拖动可以更改列的顺序和宽度。

4.在数据窗口的列头双击,可以按该列进行排序。

5. 使用Ctrl键与鼠标左键选择多列,可以同时对这些列进行操作。

6.点击数据窗口的行头,可以选择整行。

7. 使用Shift键与鼠标左键选择多行,可以同时对这些行进行操作。

8.双击数据窗口的行头,可以自动调整该行的高度,使其适应内容。

9.在数据窗口的列头右键单击,可以进行更多的列操作,如冻结列、设置列格式等。

10. 使用Ctrl+Enter键,可以在当前单元格中插入换行符。

11. 使用Ctrl+D键,可以复制当前单元格的内容到下一个单元格。

12.在数据窗口的列头左键单击,可以选择一整列。

13. 使用Ctrl+Shift键与鼠标左键选择多个非连续的列。

14.在数据窗口的列头上方的空白区域右键单击,可以选择整个数据窗口。

15.在数据窗口左上角的复选框,可以选择或取消选择整个数据窗口。

16. 使用Ctrl+C键,可以复制选中的单元格或整行到剪贴板。

17. 使用Ctrl+V键,可以粘贴剪贴板中的内容到当前单元格或行。

18. 使用Shift+Enter键,可以在当前单元格下方插入一行。

19. 使用Ctrl+K键,可以在当前单元格中插入一个链接。

20. 使用Ctrl+Space键,可以选择整列。

21. 使用Shift+Space键,可以选择整行。

22.在数据窗口的列头右键单击,可以选择“筛选”,进行高级筛选操作。

23.在数据窗口的列头右键单击,可以选择“合并”,将相邻的相同内容的单元格合并为一个。

24.在数据窗口的列头右键单击,可以选择“拆分”,将合并的单元格拆分回原来的单元格。

PB关于数据窗口的使用

PB关于数据窗口的使用

实验五数据窗口的使用一、实验目的1、进一步加深对数据窗口的了解,熟悉数据窗口画板的使用和数据窗口对象属性的调整方法。

2、掌握数据窗口对象的标签和字段的属性的调整方法。

3、了解数据窗口对象的各种编辑样式的特点、编程和使用方法。

4、掌握数据窗口各种常用操作(插入、删除、更新等)的程序设计方法。

二、实验环境1.PowerBuilder9.0/10.0,Windows 98/2000,Microsoft SQLSERVER2000。

2.在实验之前先建立一个PBDW文件夹(例如:d:\ PBDW)用来存放本次实验所建立的设计文件与文档。

三、实验内容1、使用PowerBuilder创建Access或SQL Server2000数据库,数据库名称为pb_dw。

2、制作一个学科管理的数据窗口,如图1所示。

该窗口中有一个反映学科信息的数据窗口,有2个前后查看记录的按钮,以及对数据库进行更新、插入、删除和退出的4个图片按钮。

在“学科类型”或“学科名称”字段上单击鼠标,会弹出如图2所示的下拉列表框,提供数据的选择,避免了每次输入字符串,使用十分方便。

四、实验预习与准备1、创建一个新的工作空间。

2、创建一个新的目标、应用库和应用对象。

3、本例中需要创建2个数据窗口对象,一个为窗口上见到的学科信息数据窗口对象d_subjectinfo,另一个为学科名称下拉列表框中引用的学科名称数据窗口对象d_subtitle。

首先创建d_subtitle,步骤如下。

(1)单击“New”图标按钮,弹出“New”对话框。

(2)选择DataWindow选项页,双击"Tabular”图标,弹出“Choose Data Source for Tabular DataWindow”对话框。

(3)选择“Quick Select”数据源方式,单击“Next”按钮,弹出“Quick Select”对话框。

(4)在Table列表框中选择subtitle表,这时在其右边的Columns列表框中列出了subtitle 表的2个字段的名称,单击“Add All”按钮,就将这2个字段加到了下面的区域中。

PB数据窗口其他

PB数据窗口其他

[PB]-数据窗口其他////////////////////////////////标识当前行〓标识当前行也就是给当前行加上醒目的标记,以便用户更清楚当前要对哪一行数据进行操作,尤其当用户的操作中间有停顿时,继续进行操作就特别需要知道哪个是当前行。

这里的当前行不要狭隘地理解成仅仅是光标所在行。

当翻页时如果光标所在行不在当前页中,这时应该将当前页中的第一行置为当前行,否则容易造成错觉;当删除数据时,不能自动改变当前行,此时应该使用脚本设置当前行。

标识当前行的函数和方法很多,比较常用的有SelectRow,SetRowFocusIndicaTor,数据窗口对象中的函数CurrentRow和GetRow等,还有很多可以在数据窗口对象中实现的方法。

〓使用SelectRow函数这是最常用的一种方法。

函数SelectRow的语法比较简单,重点要掌握需要在哪些事件中编写脚本。

函数SelectRow的语法是:dw_1.SelectRow(row,boolean)其中,dw_1是数据窗口控件名称;row是要操作的行号,如果取值为0则表示对数据窗口dw_1中的所有数据进行操作;boolean表示是否选中数据,如果为True 则表示选中row指定的行,如果为False则表示取消选中row指定的行。

函数正确执行返回1,否则返回-1,如果有参数为NULL则返回NULL。

当选中数据窗口中的一行数据时,数据行以蓝底白字显示。

当用户在数据窗口中使用上下光标键、或者Tab键、或者鼠标点击时,如果改变了光标所在行号则这些操作都会触发数据窗口控件的RowFocusChanged事件。

所以,在数据窗口控件的RowFocusChanged事件中编写脚本来标识当前行,比仅在数据窗口的Clicked 事件中编写脚本要全面得多。

脚本如下:if currentrow > 0 thendw_1.selectrow(0,false)dw_1.selectrow(currentrow,true)end if另外,由于滚动垂直滚动条操作不能触发RowFocusChanged事件,如果翻页后当前行不在当前页中,这样容易造成错觉,应该将当前页中的第一行设置为当前行。

pb datawindowchild 用法

pb datawindowchild 用法

在PowerBuilder中,DataWindowChild(简称DWChild)是DataWindow对象的一部分,它表示DataWindow中的子数据窗口。

DataWindowChild允许在主数据窗口中嵌套其他数据窗口,从而创建更复杂的数据窗口布局。

下面是关于DataWindowChild的一些详细解答:1. 创建 DataWindowChild要创建DataWindowChild,首先确保已经在主数据窗口中创建了一个DataWindowChild对象。

可以通过以下步骤来完成:•打开 PowerBuilder IDE。

•在主数据窗口上右键单击,选择“Insert” > “DataWindowChild”。

•在弹出的对话框中,为DataWindowChild指定名称并点击“OK”。

2. 设置 DataWindowChild 的属性在创建DataWindowChild后,可以设置其属性。

一些重要的属性包括:•DataWindow 对象属性:在General选项卡中,指定子数据窗口使用的DataWindow对象。

这决定了子数据窗口的数据源。

•Presentation 属性:在General选项卡中,可以设置DataWindowChild的位置、大小等外观属性。

3. 在主 DataWindow 中使用 DataWindowChild要在主数据窗口中使用DataWindowChild,需要在主数据窗口的Detail或Summary区域添加一个子数据窗口控件。

以下是步骤:•在主数据窗口上右键单击,选择“Insert” > “Control”。

•在弹出的对话框中,选择DataWindowChild。

•将新创建的子数据窗口控件放置在主数据窗口的适当位置。

4. 编程控制 DataWindowChild可以通过PowerScript来编程控制DataWindowChild。

以下是一些常见的操作:•设置 DataWindowChild 的数据源:使用SetTransObject方法为DataWindowChild设置事务对象,然后使用Retrieve方法检索数据。

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数据窗口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数据窗口设置操作

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中定义⼤于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。

PB数据窗口绝对技巧

PB数据窗口绝对技巧

PB数据窗口绝对技巧1、如何让存储文件目录的列,显示图片?选择对应的column的diplayapicture属性为true。

2、如何复制grid类型的所选择的行的数据到系统剪切板?tringl_electedl_elected=dw_1.Object.DataWindow.Selected.Dataclipbord(l_ele cted)3:如何改变GRID数据窗口列位置(新手常见)先preview,然后在预览窗口拖动位置即可。

4、如何设置DW的底色?在DW的editource中改变color的值。

5、如何将Grid风格改成自由格式?在DW的editource中将proceing=1的1改为0。

6、要新建一个表A但风格和现有表B风格一样,怎么将A表快速设置成表B风格?复制B表C,在C表的DW中的editource中将表名和字段名改成A表的,即可。

7、如何实现gird风格的datawindow的多栏表头?添加te某t到header带区,并设置band属性为foreground保存,editource修改te某t的某和width属性表达式如下:某二\integer(decribe('firtcol.某')\width二\-integer(decribe('firtcol.某'))+integer(decribe('latcol.width'))8、如何过滤dddw编辑风格的显示值为指定值的记录?dw_1.etfilter(\dw_1.filter()9、如何设置datawindow的某一列为空?tringl_temp[]etnull(l_temp)dw_l.object.columnname.primary.current=l_temp10、如何设置datawindow的单双行不同颜色间隔?在detail带区的color属性表达式中写上if(mod(getrow(),2)=1,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1,rgb(0,0,2 55),rgb(0,255,0)))ll、如何获取指定名称的datawindowobjectDWObjectldwo_ue,ldwo_abcldwo_ue=dw_1.Objectldwo_abc=ldwo_ue._get_attribute(\为datawindow中te某t对象的名称12、如何缩放datawindow的打印大小?dw_1.object.datawindow.zoom=150ordw_1.object.datawindow.zoom=7513、如何在已过滤后的数据基础上对datawindow进行过滤?dw_1.etfilter(dw_1.decribe(\dw_1.filter()14、如何在datawindow中显示动态时间?mm分秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50015、如何让带用titlebar的datawindow控件的标题栏呈活动窗口的颜色?外部函数定义:funcationlognSetActiveWindow(longhwnd)Library\datawindow控件的clicked事件代码:etactivewindow(handle(thi))16、如何设置datawindow的当前行指示图标?在datawindow中建立一个计算列,e某preion为,并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuchanged事件中写入代码: SetRowFocuIndicator(hand!)或etrowfucindicator(p_1)//p_1为窗口上的picture控件名17、如何通过代码打开dddw?定义外部函数引用声明:SUBROUTINEkeybd_event(intbVk,intbScan,intdwFlag,intdwE某traInfo)LIBRARY\代码如下:contantintegerVK_F4=115dw_1.SetFocu()dw_l.SetColumn(\)//设置当前dddwkeybd_event(VK_F4,0,0,0)//按下F4键keybd_event(VK_F4,0,2,0)//释放F4键18、如何打印datawindow的内容到文件中?dw_1.object.datawindow.print.fileName=\dw_1.print()19、如何设置dddw的初始值?dw_1.object.columnname.Initial=\20、如何只显示不同的数据?dw_1.filter(\andcolumnname<>columnname[-1]\dw_1.filter()21、如何让带有titlebar的datawindow不可以移动?在datawindow的自定义事件ue_nchittet(pbm_nchittet)中写入如下代码:return122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?如column有两列,number和price,并显示为两栏,则第一栏的cot计算列的e某preion为number某price,第二栏的cot_1计算列的e某preion为number[1]某price[1]23、如何清空ddlb或edit.codetable中项目?dw_1.Object.columnname.Value=\24、如何实现指定的column的字体旋转90度?dw_1.object.columnname.font.Ecapement=\25、如何获取datawindow的ql代码?可以通过以下四种方法获取ql代码:tringzelectzelect=dw_1.decribe(\zelect=dw_1.decribe(\zelect=dw_1.decrib e(\zelect=dw_1.getqlelect()26、如何获取datawindow对象占有的虚拟存储的容量?使用datawindow.torage属性举例:在datawindow控件的retrieverow事件中,写入如下代码:longltorageltorage=long(dw_1.object.datawindow.torage)ifltorage>50000th endbcancel()27、如何连续在同一张纸打印两个数据窗口?dw_1.object.datawindow.print.filename=\dw_2.object.datawindo w.print.filename=\dw_1.print()dw_2.print()28、如何设置datawindow分组后每个分组中的记录号?建立一个计算列,e某preion为getrow()-firt(getrow()forgroup1)+129、如何实现在datawindow中只有新增的行,才可以编辑?在所有的column的protect属性表达式中写入以下表达式:if(irownew(),'0','1')30、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。

PB数据窗口对象

PB数据窗口对象

[PB]-数据窗口对象(一)////////////////////////////////////////数据窗口对象的数据源----------PB提供5种数据源:Quick Select(快速选择类型)、SQL Select(SQL选择类型)、Query(查询类型)、External(外部类型)和Stored Procedure(存储过程类型) ----------Quick Select只能从一个数据表或者视图中选取数据(无关联的表或者视图)??----------SQL Select1、选择表可以一次选择多个表2、选择字段Select All //选择所有字段Select Tables //重新选择表Convert to Syntax //进入SQL语法状态Compute //计算字段,右键->Columns //选择字段右键->Functions //选择函数3、指定检索条件Retrieval Arguments //定义检索参数变量的类型和名称where //检索条件,右键->Columns //选择字段右键->Functions //选择函数右键->Arguments //选择参数右键->Value //选择值右键->Select //从其他表中选择----------QueryPB可以将特定的SQL语句保存为Query对象,不同的Query数据源的数据窗口都可以使用这些已经保存好的SQL语句来提取数据----------External当和不存在于数据库中的数据打交道或者要利用数据窗口的某些特性但不进行数据处理时,使用此数据源。

无SQL语句。

----------Stored Procedure使用已经定义好的存储过程来做数据源----------////////////////////////////////////////数据窗口对象的显示样式----------数据窗口对象显示样式有11种:Grid、Tabular、Group、Freefrom、Label、N-Up、Crosstab、Graph、Composite、RichText、OLE2.0----------Grid:字段横向排列在detail band中,标签横向排列在header band中,和字段相对应,字段和字段之间有网格线分隔,类似于电子表格。

PB]-子数据窗口操作

PB]-子数据窗口操作

PB]-子数据窗口操作PB]-子数据窗口**通常的子数据窗口也就是下拉数据窗口。

子数据窗口也是普通的数据窗口对象,没有什么特殊的地方,它的创建方法、可以使用的控件、编程时可以使用的函数等,都和普通的数据窗口相同。

特殊的地方只是因为它放在了父数据窗口中,需要和父窗口进行配合。

**当为数据窗口中某字段指定为下拉数据窗口编辑风格时,必须提供以下三个属性:a)子数据窗口名称。

b)显示字段名称:该字段中的内容显示在父数据窗口的字段上,只是显示。

c)数据字段名称:该字段中的内容要赋给父数据窗口的字段,要保存到数据库中。

分别对应数据窗口画板的Edit属性页中的:Eidt Style、Display Column、Data Column。

*子数据窗口不能再包含子数据窗口;父数据窗口可以对其包含的子数据窗口进行插入、删除、检索和保存等操作。

**获取子数据窗口的引用是进行其他操作的前提,使用函数GetChild来获取指定字段的子数据窗口。

该函数的语法如下:dw_1.GetChild(name,dwchildvariable)其中,dw_1.是数据窗口控件名称;name为字段名称,为string类型;dwchildvariable为datawindowchild 类型变量,该变量在函数正确执行后保存对子数据窗口的引用。

该函数正确执行则返回1,否则返回-1。

在获取了子数据窗口的引用之后,就可以捡索子数据窗口中的数据了。

但是,检索子数据窗口的情况比较多,并且也有多种方法。

**保证子数据窗口中的数据更新用户使用下拉数据窗口录入数据时,其中的数据并不一定有用户需要的。

在某些情况下不允许用户再输入其他值,否则可能造成数据的不一致性,这时就可以不再编写其他的脚本。

但在允许用户录入时,就需要把用户录入的数据保存在子数据窗口对应的数据表中,以便以后数据录入时不再重复输入该数据。

这时就应该编写脚本保存该数据了。

**检索子数据窗口在应用中,对子数据窗口的编程不是检索数据,就是更新其中的数据。

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

PB]-子数据窗口操作PB]-子数据窗口**通常的子数据窗口也就是下拉数据窗口。

子数据窗口也是普通的数据窗口对象,没有什么特殊的地方,它的创建方法、可以使用的控件、编程时可以使用的函数等,都和普通的数据窗口相同。

特殊的地方只是因为它放在了父数据窗口中,需要和父窗口进行配合。

**当为数据窗口中某字段指定为下拉数据窗口编辑风格时,必须提供以下三个属性:a)子数据窗口名称。

b)显示字段名称:该字段中的内容显示在父数据窗口的字段上,只是显示。

c)数据字段名称:该字段中的内容要赋给父数据窗口的字段,要保存到数据库中。

分别对应数据窗口画板的Edit属性页中的:Eidt Style、Display Column、Data Column。

*子数据窗口不能再包含子数据窗口;父数据窗口可以对其包含的子数据窗口进行插入、删除、检索和保存等操作。

**获取子数据窗口的引用是进行其他操作的前提,使用函数GetChild来获取指定字段的子数据窗口。

该函数的语法如下:dw_1.GetChild(name,dwchildvariable)其中,dw_1.是数据窗口控件名称;name为字段名称,为string类型;dwchildvariable为datawindowchild 类型变量,该变量在函数正确执行后保存对子数据窗口的引用。

该函数正确执行则返回1,否则返回-1。

在获取了子数据窗口的引用之后,就可以捡索子数据窗口中的数据了。

但是,检索子数据窗口的情况比较多,并且也有多种方法。

**保证子数据窗口中的数据更新用户使用下拉数据窗口录入数据时,其中的数据并不一定有用户需要的。

在某些情况下不允许用户再输入其他值,否则可能造成数据的不一致性,这时就可以不再编写其他的脚本。

但在允许用户录入时,就需要把用户录入的数据保存在子数据窗口对应的数据表中,以便以后数据录入时不再重复输入该数据。

这时就应该编写脚本保存该数据了。

**检索子数据窗口在应用中,对子数据窗口的编程不是检索数据,就是更新其中的数据。

检索数据时,如果只显示子数据窗口中同父数据窗口中某字段取值对应的数据,这时子数据窗口的定义就应该有检索参数。

根据检索和更新数据这两个因素,可以将检索数据的情况划分成以下三种:a)没有条件限制,并且不允许更新。

b)没有条件限制,并且允许更新。

c)有条件限制,不管是否可以更新。

检索子数据窗口有两个时机,一个是在子数据窗口下拉时,另一个是在父数据窗口检索时。

在子数据窗口打开时进行数据检索,每次录入该字段时都要进行,所以可以保证子数据窗口中的数据是最新的,所以这样的检索是在数据可以更新的情况下才使用。

而不允许更新时,子数据窗口中的数据总是和父数据窗口检索时相同,如果不根据其他字段取值检索数据,就没有必要每次录入时都进行检索,只要在窗口打开时进行检索就可以了;当要根据其他字段取值检索数据时,还得在每次下拉子数据窗口时进行检索。

*和父数据窗口共享事务对象在和父数据窗口共享事务对象的情况下的编程最简单。

因为子数据窗口可以和父数据窗口共享事务对象,只是简单地对父数据窗口进行检索,即可将子数据窗口中的所有数据自动检索出来。

一般在窗口的open事件中编写如下脚本:dw_1.settransobject(sqlca)dw_1.retrieve()一种特殊的情况需要注意。

当A、B两个数据窗口共享数据时,如果其中B有子数据窗口,A设置事务对象而B没有设置,当A使用函数Retrieve检索数据后,B因为共享数据也会自动获得数据,但是B中的下拉子数据窗口的字段只能显示编码而不能显示对应的汉字,即使该下拉子数据窗口的属性中显示列、数据列都设置正确也是如此。

只有当数据窗口B设置了事务对象才能在A检索数据之后正确显示下拉子数据窗口Display Value中指定的字段数据。

*检索子数据窗口的数据因为用户随时都有可能录入了新数据,为了保证子数据窗口中显示最新数据,每次打开子数据窗口时都重新进行数据检索。

用户在打开子数据窗口之前一般有鼠标点击动作,所以可以在数据窗口控件的clicked事件中编写脚本。

例如,在一个进行工资人事管理的软件中,人事信息保存在employee库中,录入工资的数据窗口要选择职工时可以使用下拉数据窗口。

子数据窗口至少包含职工姓名name和职工身份证号no。

下面是完整脚本:datawindowchild ldwc_dataif dw_1.getchild("name",ldwc_data) <> -1 thenldwc_data.settransobject(sqlca)ldwc_data.retrieve()end if在很多书籍和讲座中,都使用上面的编程方法进行子数据窗口的数据检索。

(*可以在单击事件中先判断是否是下拉的字段列,再进行检索子数据窗口)实际上,还有更为合理的解决办法。

因为上面的方法不管用户点击的是否是下拉数据窗口,都要执行脚本,并且用户选择下拉数据窗口中的数据之前也并不总是首先点击鼠标,还可能通过键盘来操作,不仅这样做的程序执行效率不高,而且逻辑上也不是很严格。

如果有这样一个事件,该事件只有当用户使用下拉数据窗口时才触发,这样脚本的执行效率就会高了。

另外,上面的解决方法,在一个数据窗口中有多个子数据窗口时也比较麻烦,必须书写多个类似上面的脚本,对每个有下拉数据窗口的字段都进行判断,烦琐的很;并且一旦字段的名字发生变化时,脚本也必须加以修改,通用性也很差。

下面再介绍一种方法。

首先定义一个自定义事件ue_dropdown,映射pbm_dwndropdown。

该事件只有用户下拉数据窗口要打开时触发,所以执行效率比较高。

然后在该事件中编写如下脚本:datawindowchild ldwc_datagetchild(getcolumnname(),ldwc_data)ldwc_data.settransobject(sqlca)ldwc_data.retrieve()这样,就可以很好地解决上面提到的烦琐和不通用的问题。

第二种需要检索数据的情况,是当用户录入了某个宇段时,该字段可以决定其他字段的取值范围,这时就要检索铁决定的字段的子数据窗口中的数据。

*使用带参数检索在检索受其他字段录入影响的字段数据的情况下,子数据窗口的设计应该是带有检索参数的,在适当的事件中使用带参数检索。

比如,当用户录入了部门名称后,应该让“职工”,字段的子数据窗口只显示该部门的职工姓名。

可以在该数据窗口控件的ue_dropdown(映射pbm_dwndropdown事件)事件中编写如下脚本:…… //首先获取子数据窗口的引用。

child.retrieve(getitemstring(getrow(),"department"))当然上面的脚本也可以在数据窗口控件的Clicked事件中编写。

如果子数据窗口的检索条件总取决于某个固定的字段,可以使用上面的带参数检索。

如果取决于多个字段,可以使用过滤来实现。

**共享子数据窗口当同时打开多个包含相同字段的子数据窗口时,有必要保证这些子数据窗口之间的数据同步,这是一个比较重要的问题。

因为,如果有一个子数据窗口中,用户输入了新数据并且该子数据窗口正确保存,其他子数据宙口如果不能同步反映出来,就会造成很多问题。

如果其他用户没有重新输入该数据,这时的情况还好一些,如果又重新输入了该数据,保存会出现错误信息,用户会感觉到莫名其妙。

所以,一定要重视这时的同步问题。

对于同一个客户端同时打开的多个子数据窗口,使用数据共享可以很好地解决它们之间的同步问题。

比如,在工资、人事管理软件中,可能同时打开工资和奖金发放窗口,这两个窗口中的数据窗口都有包含身份证号的子数据窗口。

下面介绍如何进行同步。

假设两个窗口的打开有一定的顺序。

比如,在工资发放窗口中双击数据窗口时打开人事维护窗口w_rs。

在窗口w_gz的数据窗口的dubleClicked事件中编写如下脚本:datawindowchild ldwc_dataif getchild("no",ldwc_data) = -1 then returnif w_rs.dw_1.sharedata(ldwc_data) = -1 thenbeep(1)if messagebox("错误","发生意外错误,是否继续?",yesno,2) = 1 thenopen(w_jj)end ifend if上面的脚本保证了对奖金窗口w_jj上数据窗口dw_1中主缓冲区所做的任何更新操作都将在子数据窗口child中得到反映。

当要打开的窗口之间没有顺序,并且打开哪些窗口也不确定时,可以通过定义全局变量来实现。

比如,在物资管理系统中,物资名称和对应的代码使用一个数据表来保存。

很多数据窗口录入物资时部使用该子数据窗口。

可以在该系统中定义全局变量,语句如下:datawindowchild gdwc_data然后在用到该子数据窗口的窗口open事件中都编写如下脚本:datawindowchild ldwc_dataif getchild("no",ldwc_data) = -1 then returnif ldwc_data.sharedata(gdwc_data) = -1 thenldwc_data.settansobject(sqlca)ldwc_data.retrieve()end if这样,每个数据窗口中的数据更新都可以自动反映到其他的数据窗口中。

相关文档
最新文档