第08章教案数据窗口对象的应用riuiso(powerbuilder)_第1页
第08章教案数据窗口对象的应用riuiso(powerbuilder)_第2页
第08章教案数据窗口对象的应用riuiso(powerbuilder)_第3页
第08章教案数据窗口对象的应用riuiso(powerbuilder)_第4页
第08章教案数据窗口对象的应用riuiso(powerbuilder)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章 数据窗口对象的应用 创建数据窗口对象使它和数据库相连接,执行数据的检索、修改、删除等工作。注意:数据窗口对象只有通过数据窗口控件才能发挥它的巨大作用。 8.1 数据窗口控件的使用数据窗口控件是窗口中一个标准的PowerBuilder控件,它放在窗口中,是窗口的一部分,不能独立存在。数据库中的数据要在数据窗口对象中显示和修改,必须依靠数据窗口控件。把数据窗口控件放在窗口中,使这个数据窗口控件和相应的数据窗口对象关联,通过这个数据窗口控件完成数据窗口对象和数据库的连接。 8.1.1 添加数据窗口控件 打开要添加数据窗口控件的窗口,选择菜单【Insert|Control|DataWindow

2、】,在窗口的适当位置点击鼠标左键,这时出现一个空白框,这个空白框就是数据窗口控件。8.1.2 更改数据窗口控件属性 常用的属性有:(1)DataObject:设置与数据窗口控件关联的数据窗口对象名称。(2)TitleBar复选框:选中表示数据窗口控件显示标题栏,否则不显示。(3)Title文本框:定义标题栏中标题内容。(4)ControlMenu复选框:选中表示在标题栏上显示控制按钮,否则不显示。(5)MaxBox、MinBox:选中这两个复选框分别表示给标题栏添加最大化按钮和最小化按钮。(6)HScrollBar VscrollBar:选择这两个复选框分别表示给数据窗口控件添加水平和垂直滚动

3、条。(7)Border复选框和Border Style下拉列表框:用来设置控件的边界形状。(8)Name:编辑框中的内容表示数据窗口控件名称,编写脚本时使用该名称。(9)Other标签页:设置控件的位置、大小及鼠标在控件中的形状。 8.1.3 设置数据窗口控件中关联的数据窗口对象 (1)静态关联选择数据窗口控件,点击右键,选择Properties进入数据窗口控件的属性视窗,在DataObject框中输入要关联的数据窗口对象。(2)动态关联程序运行过程中,若一个数据窗口控件在不同情况下要关联不同的数据窗口对象,这时就要用脚本控制,实现动态关联。脚本控制语句如下:dw_controlname.da

4、taobject=“d_objectname”。 8.2 操作数据窗口对象中数据的前提 程序运行时,要操纵数据窗口对象中的数据,就要在程序中连接数据库,让数据窗口对象与数据库之间建立连接。必须首先创建应用程序与数据库之间的连接,应用程序与数据库之间的连接是通过事务对象完成的。 (1)什么是事务对象事务对象是一个传递应用程序与数据库之间信息的一个变量,它驻留在内存中,存储着用于连接数据库及从数据库得到反馈的所有信息,它定义了数据库与应用程序连接的参数。一个应用程序开始创建时,系统就自动定义一个名为SQLCA的默认全局变量。8.2 操作数据窗口对象中数据的前提 (2)事务对象的属性事务对象共有15

5、个属性,可以分为两类,一类有10个,用来描述连接数据库的信息,如所连接的数据库的名称;另一类有5个,用来接受有关数据库或最近执行SQL语句的情况或状态,如数据库操作是否成功。 AutoCommit:这是一个布尔型属性。它指定是否将数据库设置成自动提交所有事物。当它为TRUE时,由系统自动提交所有事务,当为FALSE时,用户必须自己在程序中设置事务管理,并在需要的时候对数据库进行提交事务。它的默认值是FALSE。DataBase:这是一个字符串类型的属性。它指定要连接的数据库名称。DBMS:这是一个字符串类型的属性。它指定应用程序所使用的数据库管理系统的名称,如ODBC。 DBPass:这是一个

6、字符串类型的属性。它描述的是用户连接数据库的密码。Lock:这是一个字符串类型的属性。它是数据库的保护级别,一般不必给出。LogID:这是一个字符串类型的属性。它用于指定登录数据库服务器所需的用户名或用户的ID。 8.2 操作数据窗口对象中数据的前提SQLCode:这是一个长整型(Long)的属性。它用来指定最近一次数据库操作成功与否的代码,共有三个返回值:0表示操作成功;100表示操作成功,但没有返回数据;-1表示操作失败。用户可以从SQLDBCode或SQLErrTex中得到具体详细的错误信息。SQLDBCode:这是一个长整型的属性。它包含了数据库错误代码,不同的数据库,错误代码不同,但

7、大部分数据库厂商都用0表示操作成功,100表示成功但没有检索到数据,负数表示没有成功。SQLErrText:这是一个字符串类型的属性。它包含了数据库操作的错误信息。 UserID:这是一个字符串类型的属性。它指定了连接数据库的用户名或用户的ID。8.2.1 使用系统默认的事务对象SQLCA 系统提供了一个默认的全局事务对象SQLCA,可以在程序的任何地方使用这个事物对象。8.2.1 使用系统默认的事务对象SQLCA下面是一个连接ODBC数据库所用的代码:/ Profile ExerciseSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm

8、 = Connectstring=DSN=exercise这段脚本用来设置事务对象的属性,一般把它写在应用程序的Open事件中8.2.2 自己定义事务对象 一般情况下,使用系统提供的全局事务处理对象SQLCA就可以了,但有时需要连接多个数据库,这时只用一个SQLCA就不够了,需要用户自己定义事务对象,因为一个事务对象只能保存一个数据库的连接信息。 自己定义事务对象步骤如下:(1)确定事物对象变量的作用域和名称像变量一样,事务对象的作用域有局部的、实例的、全局的和共享的,声明的地方决定了事务对象的作用域,事务对象变量的类型是transaction。声明事务对象的格式为:transaction 用

9、户自定义的事务对象名如要声明一个全局的事务对象sqluser,则在定义全局变量的位置书写transaction sqluser声明语句。8.2.2 自己定义事务对象 (2)创建事务对象实例上面只是声明了一个自定义的事务对象sqluser,但该事务对象并没有创建。创建语句如下:自定义的事务对象名=create transaction如要创建事物对象sqluser,描述创建的语句为sqluser=create transaction。要使得打开应用后,就能使用自己定义的事务处理对象sqluser,则该语句必须写在应用的Open事件中。(3)确定事务对象变量的属性自定义事务对象的属性设置可参考前面的

10、SQLCA属性的设置,将SQLCA信息拷贝到应用的Open事件后,将其SQLCA改为sqluser即可。/ Profile Exercisesqluser.DBMS = ODBCsqluser.AutoCommit = Falsesqluser.DBParm = Connectstring=DSN=exercise(4)注意:系统提供的默认事务对象SQLCA,用户不能声明、创建、删除它,系统会自动处理对它的操作;给事务对象赋值时,只能给事物对象的属性一一赋值,不能将一个事物对象直接赋给另一事务对象。8.2.3连接数据库 定义了事务对象之后,要在数据窗口对象中处理数据库中数据,还必须配合其它语句

11、一起使用。 (1)connect:数据库连接该语句表示与数据库连接。它的语句结构是:connect using 事务对象名;若是使用sqlca,可以使用两种格式:connect;connect using sqlca;上面两条语句作用一样,也就是说使用系统默认的sqlca,语句中可以指明,也可以不指明,默认指sqlca。下面两条语句作用不同:connect;connect using sqluser;第一条使用默认的事务对象sqlca,第二条使用自定义的事务对象sqluser。(2)disconnet:断开与数据库的连接该语句表示断开与数据库的连接,它的语法结构是:disconnect usi

12、ng 事务对象名;使用方法同(1)connect。8.2.3连接数据库(3)commit:提交事务用来提交当前所做的一切事务,实际上是向数据库提交所有数据修改工作。它的语句结构及使用方法同(1)connect。(4)rollback:取消事务它用来回滚当前的所有事务,实际上是取消自上次提交事务以来的这一段时间内所有数据修改工作。 它的语句结构及使用方法同前面(1)connect。 (5)settransobject():事务对象与数据窗口控件关联通过connect语句,将一个事务对象与数据库连接起来了,但为了能使一个具体的数据窗口访问数据库,还必须把数据窗口控件和事务对象关联起来。关联语句中一

13、定要使用数据窗口控件名,而不是数据窗口对象名。使用下面语句将数据窗口控件和事务对象关联。语句格式如下:DWControlname.settransobject(TransactionObjectName)如 让 d w _ 1 数 据 窗 口 控 件 与 s q l c a 事 务 对 象 关 联 , 语 句 写 为dw_1.settransobject(sqlca)。 该语句一般写在数据窗口控件所在窗口的Open事件中。8.3 操作数据窗口中的数据 8.3.1 检索数据(retrieve) 检索数据使用函数retrieve。(1)函数不带参数格式:dwcontrolname.retrieve

14、()如数据窗口控件dw_1检索数据,可用dw_1.retrieve()语句。这种情况的使用简单,用于没有设定任何参数的数据窗口对象。(2)函数带有n个参数,格式是dwcontrolname.retrieve(参数1,参数2,参数n),如数据窗口控件dw_1检索数据,可用dw_1.retrieve(参数1,参数2,参数n)。 要特别注意,这里参数的个数、类型、与数据窗口对象中定义的变量个数、类型要相对应,若这里给定的参数个数少于数据窗口对象中定义的变量个数,程序运行时就会出现错误;若这里的参数个数多于数据窗口对象中定义的变量个数,程序运行时就会自动去掉后面多余的参数。 检索函数多用于settra

15、nsobject(sqlca)语句后面。 (3)函数的返回值函数返回一个整型值,表示从数据库中检索到的行数;若没有匹配的结果,则返回值是0;若检索中出现了错误,返回值是-1。 8.3.1 检索数据(retrieve)(4)执行函数时触发的事件DBError:检索失败时发生。RetrieveRow:每行数据检索出来以后发生。RetrieveStart:检索开始时发生。RetrieveEnd:检索完成后发生。(5)典型应用dw_1.settransobject(sqlca)dw_1.retrieve( )将数据窗口与事务对象关联,并检索数据窗口中数据。 8.3.2 更新数据(update)Upda

16、te函数用于把当前数据窗口中从上次执行update或retrieve函数以来进行的所有修改保存到数据库中。(1)常用语法形式如下:DWcontrolname.Update()如更新数据窗口控件dw_1,脚本写为:dw_1.update()。 8.3.2 更新数据(update)(2)函数返回值若返回值是1表示成功,返回值是-1表示失败。(3)执行函数时触发的事件DBErrorSQLPreviewUpdateStartUpdateEnd(4)典型应用if dw_1.update()=1 thencommit;elserollback;end if数据窗口中数据更新正确则提交事务(保存数据),否则

17、取消事务(不保存数据)。 8.3.3 从数据窗口控件中读数据(getitemstring) 处理数据时,经常要从数据窗口中读出数据,然后再进行处理。(1)常用语法形式:DWcontrolname.getitemstring(rownum,column)DWcontrolname.getitemnumber(rownum,column)DWcontrolname.getitemdate(rownum,column)DWcontrolname.getitemdatetime(rownum,column)DWcontrolname.getitemdecimal(rownum,column)如从数据窗

18、口dw_1中取出第二行第一列“name”字段值,这里假设“name”字段是字符型,则用以下脚本:dw_1.getitemstring(2,“name”)或用dw_1.getitemstring(2,1)。getitemstring表示从数据窗口中取出字符型数据;rownum表示所取数据在数据窗口中的行号;column表示所取字段,可用字段名或表示列号的整数表示,若用字段名表示,要将字段名用引号引起来;若用表示列号的整数,用数字1、2、表示。Getitemnumber:所取字段的类型是不带小数的数值型。Getitemdate:所取字段的类型是日期型。Getitemdatetime:所取字段的类型

19、是日期时间型。Getitemdecimal:所取字段的类型是带小数的数值型。 8.3.3 从数据窗口控件中读数据(getitemstring)(2)典型应用string name1name1=dw_1.getitemstring(2,“name”)messagebox(“第二条记录的名字是:”,name1)从dw_1的第二行中取出“name”字段,然后以对话框的方式显示出来。 8.3.4 将数据写到数据窗口控件中(setitem)处理数据时,除了要从数据窗口中读出数据,有时还要把数据写到数据窗口中。(1)语法形式:DWcontrolname.setitem(rownum,column,valu

20、e)rownum和column与前面的含义相同,value表示要放在数据窗口中的值。(2)典型应用string name1name1=dw_1.getitemstring(2,“name”)dw_2.setitem(1,“name”,name1)从dw_1的第二行中取出“name”字段,然后将取出的值放在dw_2中的第一行“name”字段上。8.3.5 对数据窗口控件中的数据进行排序(setsort)运行程序数据窗口按原排序显示数据,有时希望根据不同情况对不同字段进行再排序,这时就要用到setsort()和sort()函数。(1)语法形式:dwcontolname.setsort(sortex

21、pression)dwcontolname.sort()sortexpression是一个字符串,表示排序条件表达式,包括要排序的列名或列号以及排序方式,具体形式是一个列名后加上一个空格,然后是字符A或D,表示升序或降序,若对多列同时排序,它们之间用逗号隔开。 说明:排序字段若用列号,表示为#1,#2,#n,注意这里的列号前面要加上#符号,与前面的getitemstring有区别。 (2)函数返回值这两个函数的返回值一样,1表示成功,-1表示失败。(2)典型应用例1:dw_1.setsort(“name A”) dw_1.sort()将数据窗口控件dw_1中的数据按“name”字段递增排序。若

22、“name”字段的列号是1,上述第一行脚本可写为:dw_1.setsort(“#1 A”)。8.3.6 对数据窗口控件中的数据进行过滤(setfilter) 对数据窗口中的数据进行过滤,但又不想重新从数据库中检索数据,这时就要用到setfilter()和filter()两个函数。(1)语法形式:dwcontolname.setfilter(filterexpression)dwcontolname.filter()filterexpression是一个字符串,表示过滤条件表达式,它是一个逻辑表达式,其中各关系表达式之间用逻辑运算符and、or、not连接。在过滤表达式中可以使用列名或列号,列号

23、使用方法同上面的setsort()函数。(2)函数的返回值1表示成功,-1表示失败。(3)典型应用例1:过滤条件中包含数值型常量。dw_1.setfilter(“math_score=70 and math_score90”)dw_1.filter()数据窗口控件dw_1的过滤结果:显示“math_score”字段的值介于70和90之间的记录(包含70,不包含90)。8.3.7 重新设置数据窗口中的数据(reset) 在使用retrieve函数进行检索之前,系统自动调用该函数重置数据窗口,不必在retrieve函数前使用该函数。(1)语法形式:dwcontrolname.reset()此函数不

24、要求参数。(2)函数的返回值1表示成功,-1表示失败。(3)典型应用dw_2.reset()dw_2.insertrow(0)重置数据窗口控件dw_2,清除数据窗口缓冲区内的所有行后,添加一条空白记录。 8.3.8 插入记录(insertrow) 录入数据,添加新记录,就要用到insertrow函数。要想将插入的记录保存到数据库中,还应执行更新命令。(1)语法形式:DWcontrolname.insertrow(rownumber)其中rownumber表示插入行的行号,它是一个long型变量。若它的值是0,表示在数据窗口的最后插入一条记录。(2)函数的返回值函数的返回值是long型,表示插入

25、行的行号;插入失败返回值是-1。该函数只能插入一条记录,但不能自动滚动到插入行,也不能自动把插入行设置为当前行。(3)典型应用long nnnn=dw_1.insertrow(0)dw_1.scrolltorow(nn)在数据窗口控件dw_1的最后插入一条空白记录,并使屏幕滚动,使刚插入的记录显示在屏幕范围内。8.3.9 删除记录(deleterow) 处理数据时,删除多余的记录,就要用到deleterow函数。要将删除记录的结果保存到数据库,还应使用更新命令。(1)语法形式:DWcontrolname.deleterow(rownumber)其中rownumber表示要删除的行号,它是一个l

26、ong型变量。若它的值是0,表示删除当前行。(2)函数的返回值1表示删除成功,-1表示删除失败。(3)典型应用long nn,row1nn=dw_1.rowcount()for row1=1 to nndw_1.deletrow(1)next删除数据窗口控件dw_1中现有的所有记录,记录虽然删除,但数据库中数据并没改变,我们改变的只是缓冲区中的内容,要将删除结果保存,需要编写更新脚本。 8.3.10 滚动行(scrolltorow) 在缓冲区的尾部插入新记录,新插入的记录可能在数据窗口中看不到,这时就可以使用该函数将新插入的行滚动到视窗内。(1)语法形式:DWcontrolname.scrol

27、ltorow(rownumber)其中rownumber表示要滚动到的行号,是一个long型,若rownum为0,则会滚动到数据窗口的第一行,若rownum的值大于数据窗口的总行数,则会滚动到最后一行。滚动到的行就是数据窗口的当前行。(2)函数的返回值1表示操作成功,-1表示操作失败。(3)典型应用dw_1.scrolltorow(dw_1.rowcount()滚动到数据窗口的最后一行。(4)触发事件执行该函数时,会触发以下事件:ItemChanged、ItemFocusChanged、RowFocusChanged、ItemError。 8.3.11 选择行(selectrow) 要加亮显示

28、或取消加亮显示行,就要用到该函数。(1)语法形式:DWcontrolname.selectrow(rownumber,select)其中rownumber表示要加亮或取消加亮的行号,是一个long型,若rownumber=0表示要加亮或取消加亮所有行;select是布尔型值,确定指定行是否被加亮显示,若select的值是true表示加亮显示,若是false表示取消加亮显示。(2)函数的返回值1表示操作成功,-1表示操作失败。(3)典型应用(该脚本写在数据窗口的clicked事件中)dw_1.selectrow(0,false)dw_1.selectrow(row,true)数据窗口控件dw_1

29、中点击的行加亮显示。(Row表示当前行号)8.3.12 获取当前行(getrow) 此函数用来获取当前行的行号。(1)语法形式:DWcontrolname.getrow()该函数没有参数。(2)函数的返回值函数的返回值是long类型,表示当前行的行号;若数据窗口中没有当前行,则返回值是0;若发生错误,则返回值是-1。(3)典型应用(该脚本写在数据窗口的clicked事件中)dw_1.setrow(row)messagebox(“当前选择的行号是:”,dw_1.getrow()点击数据窗口控件dw_1中的某行,就显示点击行的行号。 8.3.13 设置当前行(setrow) 该函数用来接受一个行号

30、并且使它成为当前行。(1)语法形式:DWcontrolname.setrow(rownumber)其中rownumber是一个long类型的变量,表示要指定为当前行的行号。(2)函数的返回值操作成功返回1,操作失败返回-1。(3)典型应用dw_1.setrow(dw_1.getrow()- 1)使输入焦点上移一行。(4)触发事件执行该函数时,会触发以下事件:ItemFocusChanged、RowFocusChanged、ItemError、ItemChanged。 8.3.14 获取当前列(getcolumn) (1)语法形式:DWcontrolname.getcolumn()该函数没有参数

31、,函数得到数据窗口中的当前列。(2)函数的返回值返回值是当前的列号,若返回值是0表示没有任何列被选中,-1表示失败。(3)典型应用:该函数应用较少。dw_1.setcolumn(dw_1.getcolumn()+ 1)使输入焦点下移一列。8.3.15 设置当前列(setcolumn) 要设置某列为数据窗口当前列,可用setcolumn函数。比如数据窗口输入数据之后,列焦点没有移开,则该列值就无法取出,这时可用该函数将焦点从当前列移到其它列,就可取出该列值了。(1)语法形式:DWcontrolname.setcolumn(columnnumber)其中columnnumber是一个字符串,表示要

32、设置为当前列的列,列的表示可以用列名,也可以用列号,使用列号时,要在列号的前面加上符号“#”。(2)函数的返回值操作成功返回1,操作失败返回-1。(3)典型应用假定窗口中有两个按钮,分别是“新加记录”、“存盘”,其中“新加记录”按钮上有语句dw_1.insertrow(0),“存盘”按钮上的脚本如下:8.3.15 设置当前列(setcolumn)long nn,row1string name1nn=dw_1.rowcount()dw_1.setcolumn(1)name1=dw_1.getitemstring(nn,“name”)if name1=“” or isnull(name1) the

33、nmessagebox(“提示:”,“名字字段不能为空。”)returnelseif dw_1.update()=1 thencommit;elserollback;end ifend if这里的“name”字段的列号不是1,这样即使输入数据时焦点停留在“name”字段上没有移开,也能把该字段值取出来,只要该字段中值不为空,就能完成后面的更新工作。 8.4 数据窗口事件 8.4.1 Clicked (1)触发条件当用户在数据窗口中单击鼠标左键时就触发该事件。(2)事件所带参数该事件带有的四个参数如下:xpos:是一个integer类型的变量,表示单击时所在位置的X坐标。ypos:是一个inte

34、ger类型的变量,表示单击时所在位置的Y坐标。row:是一个integer类型的变量,表示单击时的行号。dwo:是一个DWObject类型的变量,表示对单击的列对象的引用。(3)事件的返回值事件的返回值是long类型,0是系统的默认值,表示继续操作;1表示不能改变输入焦点。(4)典型示例点击数据窗口的某列,数据按该列递增排序,同时该列变为红色;再次单击该列时,数据按该列递减排序,同时该列变为蓝色。8.4.1 Clicked (4)典型示例首先在窗口中定义一个实例变量string last_sort,该变量用于存放上次的排序方式。string column_name,this_sort/定义两个

35、变量,分别存放当前点击的列标题及当/前的排序方式。if dwo.type=text then/若点击的是列标题column_name=/取出的值是列名+“_t”column_name=left(column_name,len(column_name) - 2)/取出列名if last_sortcolumn_name+ a then/若以前的排序方式不是按该列递增排序, /注意a前面有一空格。this_sort=column_name+ a/排序方式设置为按该列递增排序。dwo.color=rgb(255,0,0)/将点击的列变为红色。elsethis_sort=column_n

36、ame+ d/排序方式设置为按该列递减排序。dwo.color=rgb(0,0,255) /将点击的列变为蓝色。end ifthis.setsort(this_sort)/设置排序表达式this.sort()/进行排序last_sort=this_sort/将当前排序方式保存起来以备下次使用。end if8.4.2 DoubleClicked(1)触发条件数据窗口中双击鼠标左键时就触发该事件。在触发该事件之前,先触发了单击事件。(2)事件所带参数同clicked事件所带参数。(3)事件的返回值该事件只有一个返回值0,表示继续操作。(4)典型示例双击数据窗口的记录时,显示双击的行号、列名、X坐标

37、、Y坐标。string is_columnnameif dwo.type=column thenis_columnname=end ifmessagebox(用户双击数据窗口控件,所在行号:+string(row)&+r所在列是:+is_columnname+r所在X坐标是:+string(xpos)&+r所在Y坐标是:+string(ypos)8.4.3 ItemChanged(1)触发条件当修改了数据窗口中的某个数据项的值,然后按Tab键移出,鼠标单击数据窗口外的部分或是用户按了Enter时,将会触发该事件。一般在该事件中做一些检查性工作,它是检验层中的最后

38、一层,只有数据通过了所有的其它层的检验后才会发生这个事件。(2)事件所带参数该事件带有的三个参数如下:row:是一个integer类型的变量,表示修改的数据项所在的行号。dwo:是一个DWObject类型的变量,表示对拥有修改项的列对象的引用。data:是一个string类型的变量,表示修改后的数据。(3)事件的返回值该事件有三个返回值如下:0:表示接受用户输入的数据。这是系统默认的返回值。1:表示拒绝用户输入的数据,并且不允许改变输入焦点。这时会触发ItemError事件。2:表示拒绝用户输入的数据,但允许用户改变输入焦点。这时不会触发ItemError事件,并且该项的值还是原来的值。8.4

39、.3 ItemChanged(4)典型示例当前数据窗口中有一字段sex1表示性别,要求该字段输入的值只能是M或F,否则不许改变输入焦点。if =sex1 thenif not match(data,MF) thenreturn 1end ifend if8.4.4 RowFocusChanged (1)触发条件数据窗口的当前行发生变化,就会触发该事件。(2)事件所带参数该事件只有一个参数currentrow,它是一个long类型的变量,表示当前行的行号。(3)事件的返回值 该事件只有一个返回值0,表示继续操作。 8.4.3 ItemChanged(4)典型示例当数据窗口的当前行

40、号发生变化时,就显示当前行行号及总行数。this.selectrow(0,false)this.selectrow(currentrow,true)messagebox(提示:,当前的行号是+string(currentrow)+&r数据窗口中共有+string(this.rowcount()+行)8.4.5 RetrieveStart(1)触发条件数据窗口开始执行SQL SELECT语句时,就会触发该事件。(2)事件所带参数 该事件没有参数。 (3)事件的返回值该事件有三个返回值如下:0:表示继续操作。1:表示不执行检索操作。2:表示执行检索操作,但不删除原来数据窗口中的行和缓冲区中

41、的数据。若返回的是该值,则新检索的数据会添加到原来数据窗口数据的后面,这样做一般会造成数据的重复。8.4.5 RetrieveStart(4)典型示例只检索数据窗口中的前200条记录。long nnnn=this.rowcount()choose case nncase 200return 1case is 200return 0end choose8.4.6 RetrieveEnd (1)触发条件数据窗口从数据库中检索完数据之后,就会触发该事件。(2)事件所带参数该事件只有一个参数rowcount,表示检索出来的总行数。(3)事件的返回值该事件只有一个返回值0,表示继续操作。(4)典型示例数

42、据检索完毕后,弹出对话框,显示检索出来的记录数。messagebox(提示:,数据已检索完毕,+&r共有+string(rowcount)+条记录)8.4.7 RetrieveRow (1)触发条件每行数据从数据库检索到数据窗口时,就会触发该事件。(2)事件所带参数该事件只有一个参数row,表示刚被检索出来的行号。(3)事件的返回值该事件有两个返回值:0:表示继续操作。1:表示终止检索数据。(4)典型示例当检索到字段“name”的值是“wang”时,就停止检索;否则继续检索。string name1name1=this.getitemstring(row,name)choose cas

43、e name1case wangreturn 1case elsereturn 0end choose8.4.8 UpdateStart (1)触发条件在调用update()函数后,并且在这个函数被提交到数据库之前,就会触发该事件。(2)事件所带参数该事件没有参数。(3)事件的返回值该事件有两个返回值:0:表示继续操作。1:表示不要执行update操作。(4)典型示例在更新数据之前,先检验字段“name”的值是否有空白的,若有则不存盘;只有所有记录的“name”字段都不为空白才将数据存盘。8.4.8 UpdateStartstring name1,sign=Tlong nn,row1nn=this.rowcount()for row1=1 to nnname1=this.getitemstring(row1,name)if name1= or isnull(name1) thensign=Fexitend ifnextif sign=F thenmessagebox(提示:,名字字段有空白,不能存盘。)return 1elsereturn 0end if8.4.9 UpdateEnd (1)触发条件对数据库的所有更新操作全部执行完毕后,就会触发该事件。(2)事件所带参数该事件有三个参数如下:rowsinserted

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论