数据窗口常用函数.ppt
《数据窗口常用函数.ppt》由会员分享,可在线阅读,更多相关《数据窗口常用函数.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据窗口常用函数数据窗口控件事务对象1.SetTransObject函数函数 调用格式:调用格式:dwcontrol.SetTransObject(transaction)其其 中中:dwcontro为 数 据 窗 口 控 件 的 名 称;transaction为缺省的或 用户定义的事务对象。返返回值:回值:1-成功;-1-失败。SetTransObject函数为数据库维持了一个开放性的连接,不需要反复连接和断开数据库,对数据窗口的更新进行提交或滚回操纵。只有在用户改变数据窗口对象或者用户断开与数据库连接后,才要再次调用SetTransObject函数。SetTransObject()函数的特
2、点是,在使用之前要求建立事务对象与数据库的连接,一直保持这一连接,直到代码执行DISCONNECT语句后才断开与数据库的连接。它在检索和更新数据时所花的时间只是检索和更新所需的时间,效率上明显高于SetTrans()函数。例例如如,在完成了数据库的连接之后,如果在某个窗口中有个数据窗口控件dw_1,可以在窗口打开的open事件中,添加如下代码:dw_1.SetTransObject(SQLCA)此后,就可以使用其它函数访问数据库了。数据窗口控件事务对象 2.SetTrans函数函数 调用格式:调用格式:dwcontrol.SetTrans(transaction)参数及返回值与SetTrans
3、Object函数相同。不同点是SetTrans使用内部事务对象,用户不必先进行数据库的连接,而是每进行一次数据库操作,都会自动产生一个数据库的连接,并在操作结束时自动断开与数据库的连接。每当操作数据库时,都会完成连接、操作、断开数据库这一系列步骤。对绝大多数数据库管理系统来说,CONNECT、DISCONNECT操作是件极为耗时的工作。如果应用程序对数据库操作频繁,SetTrans需要花费的资源比较多,效率比较低。一般应用在远端使用应用程序或者对数据库操作较少的场合。数据窗口控件的函数 数据窗口控件提供了丰富的对象函数,这些函数在增强数据窗口功能的同时,也方便了应用程序的开发,加快了开发进度。
4、数据窗口函数编程注意事项:数据窗口函数编程注意事项:1.窗口函数触发数据窗口事件窗口函数触发数据窗口事件 窗口函数会触发某些数据窗口事件,如果在这些数据窗口事件中调用能够触发该事件的数据窗口函数,就会造成死循环。2.PowerBuilder的数据处理机制的数据处理机制数据窗口在客户机的本地内存中开辟了四个缓冲区:主缓冲区、删除缓冲区、过滤缓冲区、原始缓冲区,从数据库中检索到数据后,数据窗口根据不同情况把数据放置到不同的缓冲区。四个缓冲区各司其职,协作完成数据的增删改,最后把结果提交给数据库管理系统。n除了在数据窗口画笔中可以定义数据窗口对象外,还提供了根据SQL SELECT语句和指定的属性动
5、态创建数据窗口的能力,这样,应用程序就能够构造的更加灵活,以适应千变万化的用户需求。7.4 数据窗口控件的函数n 当使用数据窗口控件的Retrieve()函数从数据库中提取数据后,数据被存入了数据窗口的主缓冲区中,程序对数据窗口中数据的操作均在缓冲区中完成。n用户在向数据窗口中输入数据时,并没有直接把数据输入到数据窗口的主缓冲区中,而是把数据输入到悬浮在数据窗口当前单元上面的编辑控件中,当用户移动了输入焦点或代码中使用AcceptText()函数操作之后,系统验证输入数据的有效性,通过有效性验证的数据才被放置到数据窗口控件的主缓冲区中。n当插入数据时,插入的数据也存放在主缓冲区。当删除数据行时
6、,不管是使用DeleteRow()函数直接删除一行还是使用RowsMove()函数在缓冲区之间移动数据行,被删除数据行从主缓冲区移动到删除缓冲区。n当使用数据窗口控件的对象函数Update()将数据窗口的修改发送到数据库管理系统后,被成功删除的记录均从删除缓冲区中清除。在保存数据时,删除缓冲区用于生成DELETE语句。过滤缓冲区用于保存那些满足数据源定义,而不满足过滤条件的行。n原始缓冲区保存数据窗口从数据库中检索出的原始数据。可以通过把GetItem簇函数的入口参数originalvalue设置为true来访问原始缓冲区中数据。7.4 数据窗口控件的函数数据窗口缓冲区之间的关系见图。7.4
7、数据窗口控件的函数n 主缓冲区的记录行数可以通过数据窗口控件的对象函数RowCount()得到,删除缓冲区的记录行数通过数据窗口控件的对象函数DeletedCount()得到,过滤缓冲区的记录行数通过数据窗口控件的对象函数FilterCount()得到。n利用数据窗口控件的对象函数SetFilter(),可以动态改变过滤条件,然后使用数据窗口控件的对象函数Filter()更新主缓冲区和过滤缓冲区中的数据。数据窗口控件只显示主缓冲区中的数据,用户的所有操作也都是针对主缓冲区进行的。n编辑状态标志在数据窗口控件的主缓冲区、过滤缓冲区和删除缓冲区中,每一行和每一行中的每个列都有个编辑状态标志,这个标
8、志指示了相应行是否是新增加的行、相应列的数据是否被修改。在往数据库中保存数据时,数据窗口利用这个标志值来决定产生什么类型的SQL语句。n需要获得某行/某列的编辑状态标志的方法是使用数据窗口控件的GetItemStatus()对象函数。修改行或列的编辑状态标志的数据窗口控件对象函数是SetItemStatus()。7.4 数据窗口控件的函数 编辑状态标志是个dwItemStatus枚举类型。7.4 数据窗口控件的函数3.访问的缓冲区访问的缓冲区dwBuffer用来指定数据窗口控件函数访问的缓冲区,dwBuffer使用枚举数据类型。表表7-4 dwBuffer枚举数据类型与指定的缓冲区枚举数据类型
9、与指定的缓冲区数据窗口常用函数nDwo.Reset()重置数据窗口nInsertRow()函数函数n用来在数据窗口的主缓冲区中插入一条新记录。其语法格式为:nlong dwcontrol.InsertRow(long row)n其中:row用于指定新行的插入位置。若row为0,则表示在所有记录的最后插入新行。n例如:dw_1.InsertRow(0)数据窗口常用函数nDeleteRow()函数nDeleteRow函数用来在数据窗口的主缓冲区中删除一行。其语法格式为:ninteger dwcontrol.DeleteRow(long row)n其中:row表示要删除的行的行号。若row为0,则表
10、示要删除当前行。n例如,语句:ndw_1.DeleteRow(5)n表示删除数据窗口控件中的第5条记录。数据窗口常用函数nUpdate()函数nUpdate函数用来把数据窗口上数据的变化更新到数据库中。nUpdate函数的语法格式为:nintegerdwcontrol.Update(booleanaccept,booleanresetflag)n其中:参数accept是一个布尔值,如果该值为true,表示在更新之前调用AcceptText函数。参数resetflag用来确定数据窗口更新后是否重设更新标记。n该函数执行成功,则返回1,否则返回-1。n例如,在本书实例窗口w_ini的【保存】按钮的
11、Clicked事件代码为:数据窗口常用函数nif dw_1.Update()0 thenncommit;/提交nelsenmessagebox(,无法对数据保存!)nrollback;/返回nend ifn注释:在调用注释:在调用update函数后,必须做事务的函数后,必须做事务的管理工作,即使用管理工作,即使用SQL语句语句COMMIT或或ROLLBACK来结束更新操作。来结束更新操作。数据窗口常用函数n连接事务对象的函数nSettransobject()函数n参数为事务对象n例:dw_1.Settransobject(sqlca)n滚动数据行函数nScroll()和ScrollToRow(
12、)函数nlongdwcontrol.Scroll(longnumber)nnumber指定要滚动的方向和行数。number为正数,表示向下滚动;若number为负数,表示向上滚动。如果该函数执行成功,那么将返回数据窗口控件中可见的第一行的行号;如果执行失败,则返回-1。n滚动数据行函数nScrollToRow函数nintegerdwcontrol.ScrollToRow(longrow)n参数row指定要滚动到的行号。如果row为0,则滚动到第一行,如果row大于最后一行的行号,则滚动到最后一行。该函数执行成功,则返回值为1,否则,返回-1n注释:调用注释:调用ScrollToRoll函数后,
13、指定的行变为当函数后,指定的行变为当前行,如果该行在数据窗口控件中已经可见,则数前行,如果该行在数据窗口控件中已经可见,则数据窗口控件中显示的行没有什么变化,否则,显示据窗口控件中显示的行没有什么变化,否则,显示这一行这一行nScrollToRoll函数和其他数据窗口滚动函数并不能函数和其他数据窗口滚动函数并不能高亮度显示行。此时可使用高亮度显示行。此时可使用SelectRow函数高亮度函数高亮度显示该行以使用户知道这是当前行。显示该行以使用户知道这是当前行。nScrollToRow函数和其他数据窗口滚动函数可能触函数和其他数据窗口滚动函数可能触发下列事件:发下列事件:ItemChanged、
14、ItemError、ItemFocusChanged、RowFocusChanged。nScrollNextRow()和ScrollPriorRow()函数nlong dwcontrol.ScrollNextRow()nlong dwcontrol.ScrollPriorRow()n作用:向上或向下滚动一行nScrollNextPage()和ScrollPriorPage()函数nlong dwcontrol.ScrollNextPage()nlong dwcontrol.ScrollPriorPage()n作用:向上或向下滚动一页使当前记录亮度显示nSelectrow()函数ninteger
15、dwcontrol.SelectRow(long,boolean)n参数long型表示行号,行号为0表示对所有行进行操作。boolean型:true表示稿亮度显示,false表示去掉亮度显示。n例:Dw_1.selectrow(dw_1.getrow(),true)表示将当前行亮度显示nRetrieve()函数nRetrieve函数的功能是用指定的事务对象从数据库中把数据检索到数据窗口进行显示。nRetrieve函数的语法格式为:nlong dwcontrol.Retrieve(any argument,any argument.)n其中:argument是可选参数,它表示在数据窗口对象中定义
16、的检索参数,这些参数的顺序必须和定义时的顺序相同。n如果调用成功,则返回检索出的记录行数;否则,返回-1。nSetSort()和Sort()函数nSetSort()函数设置排序条件nSort()函数执行排序操作ninteger dwcontrol.SetSort(string format)n其中:参数format是一个表示排序标准的字符串,包括列名或列号(列号前加#号)和排序顺序(A表示升序、D表示降序)。如果format值为NULL,PowerBuilder将显示“Specify Sort Columns”对话框,让用户选择排序条件。该函数执行成功时返回值为1,否则返回-1。nnumber
17、 dwcontrol.Sort()n该函数没有参数,执行成功时返回值为1,否则返回-1。n例如,可使用如下代码实现按第一列升序、第二列降序的顺序排序:ndw_1.setSort(#1 A,#2 D)ndw_1.sort()nSetFilter()和和Filter()函数函数nSetFilter函数用来在程序中动态改变数据窗口的过滤条件。修改之后,再用Filter函数过滤数据。integer dwcontrol.SetFilter(string format)n其中:format是个字符串,其值是作为过滤条件的逻辑表达式,表达式中可以包含列名或列号。如果format值为NULL,PowerBui
18、lder将显示“Specify Filter”对话框,让用户输入过滤条件。n该函数执行成功时返回1,否则返回-1。integer dwcontrol.Filter()n例:dw_1.setfilter(xh=0251101)dw_1.filter()可以实现过滤学号字段为0251101学生的记录nReset()函数函数nReset函数可以清除数据窗口中的所有行。其语法格式为:ninteger dwcontrol.Reset()n若该函数执行成功,则返回1,否则返回-1。n执行Reset函数后再执行Update()函数并不会清除数据库中的数据,而删除数据窗口的所有行后再执行Update()函数则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 窗口 常用 函数
限制150内