欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    【教学课件】第4章创建数据窗口.ppt

    • 资源ID:5658774       资源大小:410.50KB        全文页数:96页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【教学课件】第4章创建数据窗口.ppt

    第4章 创建数据窗口,本篇主要内容,4.1 创建数据窗口4.2 数据源的选择4.3 编辑数据窗口4.4 连接数据窗口4.5 数据窗口编程4.6 一个典型示例,数据窗口是PowerBuilder 9.0中连接服务器与客户端的桥梁,同时是用来浏览、插入、删除和查询数据等操作的舞台。使用时只要让数据窗口知道做什么而不需要对数据库进行直接操作,大大降低了用户的使用难度。数据窗口对象主要由两部分组成:数据信息和显示风格。注意:数据窗口并不是一个窗口,数据窗口对象是PowerBuilder中的一个独立对象,对数据窗口对象的访问必须依靠数据窗口控件来进行。数据窗口控件是窗口中的一个控件,它和窗口上的其它控件一样,有属性、函数和事件等。对数据窗口控件的访问必须依靠窗口来进行。因此,不能不依靠窗口而单独打开一个数据窗口控件。,4.1 创建数据窗口,步骤:创建数据窗口对象并为数据窗口选择数据源选择数据窗口的显示风格对设置的数据窗口进行确定或修改等操作。,数据窗口的显示风格:,Composite组合表方式,可集中多个datawindowCrosstab交叉表方式Freeform自由风格Graph图形和图象方式Grid以带线的表格方式Group记录分组显示Label以标签方式显示N-up有多个标签组成的显示方式Ole2.0将Ole对象作为数据源Richtext超文本方式Tabular风格,创建数据窗口举例,(1)选择【File|New】菜单,打开New对话框,选择DataWindow标签页,出现选择数据窗口对象显示风格对话框。(2)选择要创建的数据窗口对象的显示风格。显示风格决定数据窗口对象以什么样格式显示数据。(3)如选择Tabular(表格)风格,点击OK按钮,出现选择数据源对话框。(4)点击Next按钮,在弹出的对话框中选择数据窗口所关联的表及表中的列。该对话框根据不同的显示风格有不同的形式。,创建数据窗口举例,(5)点击Next按钮,会弹出Select Color and Border Settings对话框。在对话框中设置其它属性,如数据窗口对象背景色、数据窗口对象内文本的颜色及边框类型等。(6)设置完成后,点击Next按钮,弹出数据窗口对象的基本属性、特征对话框。对话框中显示了数据窗口对象的基本属性、特征,用户满意,点击Finish完成;若不满意点击Back按钮,返回上一步重新修改。一旦点击Finish按钮,数据源和显示风格就不能再改变。(7)设计完成后,选择菜单【File|Save】,打开保存数据窗口对话框。在对话框中选择库文件,输入数据窗口的名称、注释,点击OK按钮,就完成了数据窗口的创建。,4.1.1 Freeform 4.1.2 Grid4.1.3 Graph4.1.4 Composite4.1.5 Crosstab4.1.6 Group4.1.7 Label4.1.8 N-up4.1.9 Ole2.04.1.10 Richtext4.1.11 Tabular,4.2 数据源的选择,数据源决定数据窗口对象从哪里以及如何得到数据,系统共定义了五种数据源。分别是:Quick Select(快速选取),大多采用这种数据源,它一般用于创建一个简单的Select语句;SQL Select(标准选取),用于创建任何Select语句;Query(查询),使用以前创建过的Query对象作为数据窗口对象的数据源;External(外部),使用数据库以外的其它数据源;Stored Procedure(存储过程),一般在服务器上创建复杂的查询,然后把数据回传给数据窗口对象。,4.2.1 使用Quick Select选择数据源4.2.2 使用SQL选择数据源4.2.3 使用Query选择数据源4.2.4 使用External选择数据源4.2.5 使用Stored Procedure选择数据源,4.3 编辑数据窗口,4.3.1 数据窗口的几个区域Header标题区Detail细节区Summary汇总区Footer页脚区4.3.2 向数据窗口中添加界面元素InsertControltext Picture Line Oval Rectangle Round Rectangle ColumnComputed Field,4.3.3 设置数据字段属性,属性对话框:“General”:”alignment”、”Border”“edit”:”style type”、”Format”、”Case”、”limit”、”accelerator”、”Auto Selection”、”Display Only”、”Password”“format”:,4.3.4 设置数据窗口打印参数,在数据窗口对象中的Print Specifications标签页中设置打印属性。(1)Document Name:输入文档文件的路径和名字,该文件用于打印时保存打印结果。(2)Left Margin(左边距)、Right Margin(右边距)、Top Margin(上边距)、Bottom Margin(下边距):按指定的测量单位指定页边距。(3)Paper Orientation:指定纸张的方位是横向或纵向或保留上次的方位。(4)Paper Size:指定纸张大小。(5)Paper Source:指定纸张来源是手动的还是自动的。(6)Prompt Before Printing复选框:决定是否在打印数据窗口之前给予提示信息。(7)Display Buttons-Print和Display Buttons-Print Preview复选框:分别用来设定是否显示Print和Preview按钮。,4.4 连接数据窗口,打开要添加数据窗口控件的窗口,选择菜单【Insert|Control|DataWindow】,在窗口的适当位置点击鼠标左键,这时出现一个空白框,这个空白框就是数据窗口控件。,4.4.2 数据窗口对象属性,(1)Name编辑框中的内容表示数据窗口控件名称,编写脚本时使用该名称。(2)DataObject:设置与数据窗口控件关联的数据窗口对象名称。(2)Title文本框:定义标题栏中标题内容。(3)TitleBar复选框:选中表示数据窗口控件显示标题栏,否则不显示。(4)Tag(5)Visible(6)ControlMenu复选框:选中表示在标题栏上显示控制按钮,否则不显示。(7)MaxBox、MinBox:选中这两个复选框分别表示给标题栏添加最大化按钮和最小化按钮。,4.4.2 数据窗口对象属性,(8)HScrollBar VscrollBar:选择这两个复选框分别表示给数据窗口控件添加水平和垂直滚动条。(9)LiveScroll(10)HSplitScroll(11)Resizable(12)Border复选框和Border Style下拉列表框:用来设置控件的边界形状。(13)Icon(14)Other标签页:设置控件的位置、大小及鼠标在控件中的形状。,4.4.3 预览数据窗口,Design Preview,4.5 数据穿口编程,程序运行时,要操纵数据窗口对象中的数据,就要在程序中连接数据库,让数据窗口对象与数据库之间建立连接。必须首先创建应用程序与数据库之间的连接,应用程序与数据库之间的连接是通过事务对象完成的。4.5.1 事务对象 事务对象是一个传递应用程序与数据库之间信息的一个变量,它驻留在内存中,存储着用于连接数据库及从数据库得到反馈的所有信息,它定义了数据库与应用程序连接的参数。一个应用程序开始创建时,系统就自动定义一个名为SQLCA的默认全局变量。,事务对象的属性,事务对象共有15个属性,可以分为两类,一类有10个,用来描述连接数据库的信息,如所连接的数据库的名称;AutoCommit:这是一个布尔型属性。它指定是否将数据库设置成自动提交所有事物。当它为TRUE时,由系统自动提交所有事务,当为FALSE时,用户必须自己在程序中设置事务管理,并在需要的时候对数据库进行提交事务。它的默认值是FALSE。DataBase:这是一个字符串类型的属性。它指定要连接的数据库名称。DBMS:这是一个字符串类型的属性。它指定应用程序所使用的数据库管理系统的名称,如ODBC。DBPass:这是一个字符串类型的属性。它描述的是用户连接数据库的密码。,事务对象的属性,Lock:这是一个字符串类型的属性。它是数据库的保护级别,一般不必给出。LogID:这是一个字符串类型的属性。它用于指定登录数据库服务器所需的用户名或用户的ID。LogPass:ServerName:UserID:这是一个字符串类型的属性。它指定了连接数据库的用户名或用户的ID。,事务对象的属性,另一类有5个,用来接受有关数据库或最近执行SQL语句的情况或状态,如数据库操作是否成功。SQLCode:这是一个长整型(Long)的属性。它用来指定最近一次数据库操作成功与否的代码,共有三个返回值:0表示操作成功;100表示操作成功,但没有返回数据;-1表示操作失败。用户可以从SQLDBCode或SQLErrTex中得到具体详细的错误信息。SQLDBCode:这是一个长整型的属性。它包含了数据库错误代码,不同的数据库,错误代码不同,但大部分数据库厂商都用0表示操作成功,100表示成功但没有检索到数据,负数表示没有成功。SQLErrText:这是一个字符串类型的属性。它包含了数据库操作的错误信息。SQLRows:SQLReturnData:,4.5.2 为数据窗口设置事务对象,下面是一个连接ODBC数据库所用的代码:/Profile ExerciseSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=Connectstring=DSN=exercise这段脚本用来设置事务对象的属性,一般把它写在应用程序的Open事件中还可以使用ProfileString()函数从系统中读取事务对象,并将获得的值赋给事务对象。用户在定义数据库描述文件的同时已生成连接事务的代码,在数据库属性中选择。,4.5.3 用数据窗口连接数据库,(1)connect:数据库连接该语句表示与数据库连接。它的语句结构是:connect using 事务对象名;连接数据库成功则SQLCode的值为1,如果该值为0,则连接数据库没有成功。若是使用sqlca,可以使用两种格式:connect;connect using sqlca;上面两条语句作用一样,也就是说使用系统默认的sqlca,语句中可以指明,也可以不指明,默认指sqlca。,4.5.3 用数据窗口连接数据库,(2)disconnet:断开与数据库的连接该语句表示断开与数据库的连接,它的语法结构是:disconnect using 事务对象名;使用方法同(1)connect。,4.5.3 用数据窗口连接数据库,(3)settransobject():事务对象与数据窗口控件关联通过connect语句,将一个事务对象与数据库连接起来了,但为了能使一个具体的数据窗口访问数据库,还必须把数据窗口控件和事务对象关联起来。关联语句中一定要使用数据窗口控件名,而不是数据窗口对象名。使用下面语句将数据窗口控件和事务对象关联。语句格式如下:DWControlname.settransobject(TransactionObjectName)如让dw_1数据窗口控件与sqlca事务对象关联,语句写为dw_1.settransobject(sqlca)。该语句一般写在数据窗口控件所在窗口的Open事件中。,4.5.3 用数据窗口连接数据库,(4)retrieve()数据对象名称.retrieve(检索条件)例如:dw_1.settransobject(sqlca)dw_1.retrieve()数据库连接示例:图4-59在数据窗口中显示数据的步骤:1)设置事物对象参数2)连接数据库3)发送事务请求4)检索数据,可将数据显示在数据窗口中,4.5.4 缓冲区,缓冲区是数据窗口中的一个重要概念,只数据窗口工作过程中不可缺少的因素。PowerBuilder中的缓冲区:1)Primary Buffer(主要缓冲区)2)Delete Buffer(删除缓冲区)3)Filter Buffer(过滤缓冲区)4)Original Buffer(原始缓冲区),4.5.5 常用操作数据窗口函数和方法,(一)Retrieve()函数(检索数据)(1)函数不带参数格式:dwcontrolname.retrieve()如数据窗口控件dw_1检索数据,可用dw_1.retrieve()语句。这种情况的使用简单,用于没有设定任何参数的数据窗口对象。(2)函数带有n个参数,格式是dwcontrolname.retrieve(参数1,参数2,参数n),如数据窗口控件dw_1检索数据,可用dw_1.retrieve(参数1,参数2,参数n)。,(一)Retrieve()函数,注意:这里参数的个数、类型、与数据窗口对象中定义的变量个数、类型要相对应,若这里给定的参数个数少于数据窗口对象中定义的变量个数,程序运行时就会出现错误;若这里的参数个数多于数据窗口对象中定义的变量个数,程序运行时就会自动去掉后面多余的参数。检索函数多用于settransobject(sqlca)语句后面。(3)函数的返回值函数返回一个整型值,表示从数据库中检索到的行数;若没有匹配的结果,则返回值是0;若检索中出现了错误,返回值是-1。,(一)Retrieve()函数,(4)执行函数时触发的事件DBError:检索失败时发生。RetrieveRow:每行数据检索出来以后发生。RetrieveStart:检索开始时发生。RetrieveEnd:检索完成后发生。(5)典型应用dw_1.settransobject(sqlca)dw_1.retrieve()将数据窗口与事务对象关联,并检索数据窗口中数据。,(二)Update()函数(更新数据),(二)Update()函数(更新数据)Update函数用于把当前数据窗口中从上次执行update或retrieve函数以来进行的所有修改保存到数据库中。(1)常用语法形式如下:DWcontrolname.Update()如更新数据窗口控件dw_1,脚本写为:dw_1.update()(2)函数返回值若返回值是1表示成功,返回值是-1表示失败。(3)执行函数时触发的事件DBError SQLPreviewUpdateStart UpdateEnd,(4)典型应用if dw_1.update()=1 thencommit;Else messagebox(“错误”,”无法保存更改!”)rollback;end if数据窗口中数据更新正确则提交事务(保存数据),否则取消事务(不保存数据)。,(二)Update()函数(更新数据),(3)insertrow()函数(插入记录),录入数据,添加新记录,就要用到insertrow函数。要想将插入的记录保存到数据库中,还应执行更新命令。(1)语法形式:DWcontrolname.insertrow(m)其中m表示插入行的前一行行号,它是一个long型变量。若它的值是0,表示在数据窗口的最后插入一条记录。(2)函数的返回值函数的返回值是long型,表示插入行的行号;插入失败返回值是-1。该函数只能插入一条记录,但不能自动滚动到插入行,也不能自动把插入行设置为当前行。,(3)insertrow()函数(插入记录),(3)典型应用long nnnn=dw_1.insertrow(0)dw_1.scrolltorow(nn)在数据窗口控件dw_1的最后插入一条空白记录,并使屏幕滚动,使刚插入的记录显示在屏幕范围内。,(4)deletetrow()函数(删除记录),(1)语法形式:DWcontrolname.deleterow(m)其中m表示要删除的行号,它是一个long型变量。若它的值是0,表示删除当前行。(2)函数的返回值1表示删除成功,-1表示删除失败。(3)典型应用long nn,row1nn=dw_1.rowcount()for row1=1 to nndw_1.deletrow(1)next,删除数据窗口控件dw_1中现有的所有记录,记录虽然删除,但数据库中数据并没改变,我们改变的只是缓冲区中的内容,要将删除结果保存,需要编写更新脚本。,(5)scrolltorow()函数(滚动行),在缓冲区的尾部插入新记录,新插入的记录可能在数据窗口中看不到,这时就可以使用该函数将新插入的行滚动到视窗内。(1)语法形式:DWcontrolname.scrolltorow(rownumber)其中rownumber表示要滚动到的行号,是一个long型,若rownum为0,则会滚动到数据窗口的第一行,若rownum的值大于数据窗口的总行数,则会滚动到最后一行。滚动到的行就是数据窗口的当前行。(2)函数的返回值1表示操作成功,-1表示操作失败。,(5)scrolltorow()函数(滚动行),(3)典型应用dw_1.scrolltorow(dw_1.rowcount()滚动到数据窗口的最后一行。(4)触发事件执行该函数时,会触发以下事件:ItemChanged、ItemFocusChanged、RowFocusChanged、ItemError。,(6)selectrow()函数(选择行),要加亮显示或取消加亮显示行,就要用到该函数。(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中点击的行加亮显示。(Row表示当前行号),(7)getrow()函数(获取当前行),此函数用来获取当前行的行号。(1)语法形式:DWcontrolname.getrow()该函数没有参数。(2)函数的返回值函数的返回值是long类型,表示当前行的行号;若数据窗口中没有当前行,则返回值是0;若发生错误,则返回值是-1。(3)典型应用(该脚本写在数据窗口的clicked事件中)dw_1.setrow(row)messagebox(“当前选择的行号是:”,dw_1.getrow()点击数据窗口控件dw_1中的某行,就显示点击行的行号。,(8)setrow()函数(设置当前行),该函数用来接受一个行号并且使它成为当前行。(1)语法形式:DWcontrolname.setrow(rownumber)其中rownumber是一个long类型的变量,表示要指定为当前行的行号。(2)函数的返回值操作成功返回1,操作失败返回-1。(3)典型应用dw_1.setrow(dw_1.getrow()-1)使输入焦点上移一行。(4)触发事件执行该函数时,会触发以下事件:ItemFocusChanged、RowFocusChanged、ItemError、ItemChanged。,(9)getcolumn()函数(获取当前列),(1)语法形式:DWcontrolname.getcolumn()该函数没有参数,函数得到数据窗口中的当前列。(2)函数的返回值返回值是当前的列号,若返回值是0表示没有任何列被选中,-1表示失败。(3)典型应用:该函数应用较少。dw_1.setcolumn(dw_1.getcolumn()+1)使输入焦点下移一列。,(10)setcolumn()函数(设置当前列),要设置某列为数据窗口当前列,可用setcolumn函数。比如数据窗口输入数据之后,列焦点没有移开,则该列值就无法取出,这时可用该函数将焦点从当前列移到其它列,就可取出该列值了。(1)语法形式:DWcontrolname.setcolumn(columnnumber)其中columnnumber是一个字符串,表示要设置为当前列的列,列的表示可以用列名,也可以用列号,使用列号时,要在列号的前面加上符号“#”。(2)函数的返回值操作成功返回1,操作失败返回-1。,(10)setcolumn()函数(设置当前列),(3)典型应用假定窗口中有两个按钮,分别是“新加记录”、“存盘”,其中“新加记录”按钮上有语句dw_1.insertrow(0),“存盘”按钮上的脚本如下:long nn,row1string name1nn=dw_1.rowcount()dw_1.setcolumn(1)name1=dw_1.getitemstring(nn,“name”),(10)setcolumn()函数(设置当前列),if name1=“”or isnull(name1)thenmessagebox(“提示:”,“名字字段不能为空。”)returnelseif dw_1.update()=1 thencommit;elserollback;end ifend if,(11)DeleteRow()(12)ScrolltoRow()(13)DeleteRow(),(14)GetItem()函数,处理数据时,经常要从数据窗口中读出数据,然后再进行处理。(1)常用语法形式:DWcontrolname.getitemstring(rownum,column)DWcontrolname.getitemnumber(rownum,column)DWcontrolname.getitemdate(rownum,column)DWcontrolname.getitemdatetime(rownum,column)DWcontrolname.getitemdecimal(rownum,column)如从数据窗口dw_1中取出第二行第一列“name”字段值,这里假设“name”字段是字符型,则用以下脚本:dw_1.getitemstring(2,“name”)或用dw_1.getitemstring(2,1)。,(14)GetItem()函数,getitemstring表示从数据窗口中取出字符型数据;rownum表示所取数据在数据窗口中的行号;column表示所取字段,可用字段名或表示列号的整数表示,若用字段名表示,要将字段名用引号引起来;若用表示列号的整数,用数字1、2、表示。Getitemnumber:所取字段的类型是不带小数的数值型。Getitemdate:所取字段的类型是日期型。Getitemdatetime:所取字段的类型是日期时间型。Getitemdecimal:所取字段的类型是带小数的数值型。,(14)GetItem()函数,(2)典型应用string name1name1=dw_1.getitemstring(2,“name”)messagebox(“第二条记录的名字是:”,name1)从dw_1的第二行中取出“name”字段,然后以对话框的方式显示出来。,(14)setfilter()函数,对数据窗口中的数据进行过滤,但又不想重新从数据库中检索数据,这时就要用到setfilter()和filter()两个函数。(1)语法形式:dwcontolname.setfilter(filterexpression)dwcontolname.filter()filterexpression是一个字符串,表示过滤条件表达式,它是一个逻辑表达式,其中各关系表达式之间用逻辑运算符and、or、not连接。在过滤表达式中可以使用列名或列号,列号使用方法同上面的setsort()函数。(2)函数的返回值1表示成功,-1表示失败。,(14)setfilter()函数,(3)典型应用例1:过滤条件中包含数值型常量。dw_1.setfilter(“math_score=70 and math_score90”)dw_1.filter()数据窗口控件dw_1的过滤结果:显示“math_score”字段的值介于70和90之间的记录(包含70,不包含90)。,(15)setsort()函数,运行程序数据窗口按原排序显示数据,有时希望根据不同情况对不同字段进行再排序,这时就要用到setsort()和sort()函数。(1)语法形式:dwcontolname.setsort(sortexpression)dwcontolname.sort()sortexpression是一个字符串,表示排序条件表达式,包括要排序的列名或列号以及排序方式,具体形式是一个列名后加上一个空格,然后是字符A或D,表示升序或降序,若对多列同时排序,它们之间用逗号隔开。,(15)setsort()函数,说明:排序字段若用列号,表示为#1,#2,#n,注意这里的列号前面要加上#符号,与前面的getitemstring有区别。(2)函数返回值这两个函数的返回值一样,1表示成功,-1表示失败。(3)典型应用例1:dw_1.setsort(“name A”)dw_1.sort()将数据窗口控件dw_1中的数据按“name”字段递增排序。若“name”字段的列号是1,上述第一行脚本可写为:dw_1.setsort(“#1 A”)。,4.5.6 数据窗口事件,(一)Clicked 事件(1)触发条件当用户在数据窗口中单击鼠标左键时就触发该事件。(2)事件所带参数该事件带有的四个参数如下:xpos:是一个integer类型的变量,表示单击时所在位置的X坐标。ypos:是一个integer类型的变量,表示单击时所在位置的Y坐标。row:是一个integer类型的变量,表示单击时的行号。dwo:是一个DWObject类型的变量,表示对单击的列对象的引用。(3)事件的返回值事件的返回值是long类型,0是系统的默认值,表示继续操作;1表示不能改变输入焦点。,Clicked 事件,(4)典型示例点击数据窗口的某列,数据按该列递增排序,同时该列变为红色再次单击该列时,数据按该列递减排序,同时该列变为蓝色。首先在窗口中定义一个实例变量string last_sort,该变量用于存放上次的排序方式。string column_name,this_sort/定义两个变量,分别存放当前点击的列标题及当/前的排序方式。if dwo.type=text then/若点击的是列标题column_name=dwo.name/取出的值是列名+“_t”column_name=left(column_name,len(column_name)-2)/取出列名if last_sortcolumn_name+a then/若以前的排序方式不是按该列递增排序,,Clicked 事件,/注意a前面有一空格。this_sort=column_name+a/排序方式设置为按该列递增排序。dwo.color=rgb(255,0,0)/将点击的列变为红色。elsethis_sort=column_name+d/排序方式设置为按该列递减排序。dwo.color=rgb(0,0,255)/将点击的列变为蓝色。end ifthis.setsort(this_sort)/设置排序表达式this.sort()/进行排序last_sort=this_sort/将当前排序方式保存起来以备下次使用。end if,DoubleClicked 事件,(1)触发条件数据窗口中双击鼠标左键时就触发该事件。在触发该事件之前,先触发了单击事件。(2)事件所带参数同clicked事件所带参数。(3)事件的返回值该事件只有一个返回值0,表示继续操作。(4)典型示例双击数据窗口的记录时,显示双击的行号、列名、X坐标、Y坐标。,DoubleClicked 事件,(4)典型示例string is_columnnameif dwo.type=column thenis_columnname=dwo.nameend ifmessagebox(用户双击数据窗口控件,所在行号:+string(row)&+r所在列是:+is_columnname+r所在X坐标是:+string(xpos)&+r所在Y坐标是:+string(ypos),ItemChanged 事件,(1)触发条件 当修改了数据窗口中的某个数据项的值,然后按Tab键移出,鼠标单击数据窗口外的部分或是用户按了Enter时,将会触发该事件。一般在该事件中做一些检查性工作,它是检验层中的最后一层,只有数据通过了所有的其它层的检验后才会发生这个事件。(2)事件所带参数该事件带有的三个参数如下:row:是一个integer类型的变量,表示修改的数据项所在的行号。,ItemChanged 事件,dwo:是一个DWObject类型的变量,表示对拥有修改 项的列对象的引用。data:是一个string类型的变量,表示修改后的数据。(3)事件的返回值该事件有三个返回值如下:0:表示接受用户输入的数据。这是系统默认的返回值。1:表示拒绝用户输入的数据,并且不允许改变输入焦点。这时会触发ItemError事件。2:表示拒绝用户输入的数据,但允许用户改变输入焦点。这时不会触发ItemError事件,并且该项的值还是原来的值。,ItemChanged 事件,(4)典型示例当前数据窗口中有一字段sex1表示性别,要求该字段输入的值只能是M或F,否则不许改变输入焦点。if dwo.name=sex1 thenif not match(data,MF)thenreturn 1end ifend if,ItemError 事件,(1)触发条件当系统认为字段值不符合规则时,就会触发该事件。(2)事件所带参数该事件带有三个参数:row:是一个long类型的变量,表示修改的行号。dwo:是一个DWObject类型的变量,表示修改的列对象。data:是一个字符串类型变量,表示修改后的数据。(3)事件的返回值该事件有四个返回值:0:表示拒绝用户输入的数据并且弹出一个对话框显示系统提供的错误信息。这是系统的默认值。,ItemError 事件,1:表示拒绝用户输入的数据,但不弹出一个对话框显示系统提供的错误信息。2:表示接受用户输入的数据。3:表示拒绝用户输入的数据,但允许用户改变输入焦点。(4)典型示例事先在数据库表列的Extended Attributes属性视窗的Validation Rules标签页中,定义有效性规则name_rule,其规则内容是match(VAR,A-Za-z+$)。然后在数据库相应表中,选择“name”字段的属性,将该字段的Validation属性设置为name_rule规则。这样以后按该表生成的数据窗口中的“name”字段输入的必须是英文字母,否则不能通过有效性检验。messagebox(“提示:”,“第”+string(row)+“条记录没有通过有效性检验。”),RetrieveStart 事件,(1)触发条件数据窗口开始执行SQL SELECT语句时,就会触发该事件(2)事件所带参数该事件没有参数。(3)事件的返回值该事件有三个返回值如下:0:表示继续操作。1:表示不执行检索操作。2:表示执行检索操作,但不删除原来数据窗口中的行和缓冲区中的数据。若返回的是该值,则新检索的数据会添加到原来数据窗口数据的后面,这样做一般会造成数据的重复。,RetrieveStart 事件,(4)典型示例只检索数据窗口中的前200条记录。long nnnn=this.rowcount()choose case nncase 200return 1case is 200return 0end choose,RetrieveEnd 事件,(1)触发条件数据窗口从数据库中检索完数据之后,就会触发该事件。(2)事件所带参数该事件只有一个参数rowcount,表示检索出来的总行数。(3)事件的返回值该事件只有一个返回值0,表示继续操作。(4)典型示例数据检索完毕后,弹出对话框,显示检索出来的记录数。messagebox(提示:,数据已检索完毕,+&r共有+string(rowcount)+条记录),RetrieveRow 事件,(1)触发条件每行数据从数据库检索到数据窗口时,就会触发该事件。(2)事件所带参数该事件只有一个参数row,表示刚被检索出来的行号。(3)事件的返回值该事件有两个返回值:0:表示继续操作。1:表示终止检索数据。,RetrieveRow 事件,(4)典型示例当检索到字段“name”的值是“wang”时,就停止检索;否则继续检索。string name1name1=this.getitemstring(row,name)choose case name1case wangreturn 1case elsereturn 0end choose,UpdateStart 事件,(1)触发条件在调用update()函数后,并且在这个函数被提交到数据库之前,就会触发该事件。(2)事件所带参数 该事件没有参数。(3)事件的返回值 该事件有两个返回值:0:表示继续操作。1:表示不要执行update操作。(4)典型示例在更新数据之前,先检验字段“name”的值是否有空白的,若有则不存盘;只有所有记录的“name”字段都不为空白才将数据存盘。,UpdateStart 事件_典型示例,string name1,sign=Tlong nn,row1nn=this.rowcount()for row1=1 to nnname1=this.getitemstring(row1,name)if name1=or isnull(name1)thensign=Fexitend ifnext,UpdateStart 事件_典型示例,if sign=F thenmessagebox(提示:,名字字段有空白,不能存盘。)return 1elsereturn 0end if,UpdateEnd 事件,(1)触发条件对数据库的所有更新操作全部执行完毕后,就会触发该事件。(2)事件所带参数该事件有三个参数如下:rowsinserted:是一个long类型的变量,表示更新操作中向数据库中插入的行数。rowsupdated:是一个long类型的变量,表示更新操作中修改数据库中记录的行数。rowsdeleted:是一个long类型的变量,表示更新操作中删除数据库中记录的行数。,UpdateEnd 事件,(3)事件的返回值该事件只有一个返回值0,表示继续操作。(4)典型示例若数据更新成功,就显示相关信息,包括插入的行数、修改的行数、删除的行数。messagebox(数据已成功更新。,插入的行数:+string(rowsinserted)&+r修改的行数:+string(rowsupdated)&+r删除的行数:+string(rowsdeleted),4.5.7 如何标识数据窗口中数据数据窗口中数据定位可以使用字段名和记录名来惟一确定和标识。数据窗口中数据定位方法:数据窗口名称.object.字段名行号4.5.8 打印数据窗口,4.6 一个典型示例,4.6.1 创建一个工作空间对象4.6.2 创建主窗体4.6.3 创建数据库4.6.4 创建数据窗口4.6.5 编写代码 4.6.6 运行程序,

    注意事项

    本文(【教学课件】第4章创建数据窗口.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开