pb动态数据窗口_第1页
pb动态数据窗口_第2页
pb动态数据窗口_第3页
pb动态数据窗口_第4页
全文预览已结束

下载本文档

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

文档简介

PB-动态数据窗口 创建动态数据窗口 若要动态创建数据窗口,需要使用函数 Create,该函数的语法如下: dw_1.Create(syntax,errorbuffer) 其中,dw_1 是数据窗口控件的名称,该数据窗口控件要和新创建的数据窗口对 象相关联。syntax 是用来描述创建数据窗口对象的确切语法的字符串。 errorburrer 是可选项,用来保存创建数据窗口对象过程中发生的错误信息。 如果不指定该参数,就会在发生错误时显示一个错误信息的提示窗口。如果创 建成功该函数返回 1,否则返回-1,如果参数为 null 则函数返回 null。 由于 Create 函数成功创建数据窗口对象后,要改变 dw_1 数据窗口控件所关联 的数据窗口对象,因此,需要重新为数据窗口设置事务对象(使用函数 SetTransObject 或者 SetTrans)。 获取创建数据窗口的语法有多种方法,可以对相关的 SQL 语句使用 SyntaxFromSQL 函数,也可以使用对已经创建好的数据窗口对象使用 LibraryExport 函数。因为创建数据窗口的语法比较复杂,即使使用了 LibraryExport 输出已有数据窗口对象的语法,操作起来也相当费劲。所以, 更为通用的是前面一种方法。这种方法配合一定的编程技巧,让用户指定要创 建 的数据窗口对象的 SQL 语句,使用户有更多的自由和选择。使用这种方法,肯 定用到函数 SyntaxFromSQL,它的语法是: transaction.SyntaxFromSQL(SQLselect,presetation,err) 其中,transaction 是事务对象的名称,该事务对象必须正确地设置了相关参 数,并且和数据库建立了联结。SQLselect 是用来创建数据窗口的 SQL 语句, 为 String 类型。presentation 是要创建的数据窗口对象的显示风格,为 String 类型。简单的格式是: Style(Type=presentationstyle) 其中 Style 和 Type 都是保留字,presentationstyle 的取值有 Tabular,Grid,Form,Graph,Group,Label 和 Nup,其中 Tabular 是缺省类 型。err 是用来保存函数执行时出错信息的 string 类型的变量。 *关于函数 SyntaxFromSQL 的参数 presentation 可以有更复杂的语法。其格式 是: “Style ( Type=value property=value . ) DataWindow ( property=value . ) Column ( property=value . ) Group groupby_colnum1 Fby_colnum2 . property . ) Text property=value . ) Title ( titlestring )“ 使用这样的格式,可以详细定义要创建的数据窗口对象的外观。 在很多情况下都需要一个数据窗口控件和不同的数据窗口对象关联。可以通 过修改数据窗口控件的 dataobject 属性来实现。在修改了这一特性之后,数据 窗口控件就不再具有与它相关的事务处理对象了,应该再重新为数据窗口设置 事务对象。*如果为数据窗口设置了行焦点标志,在修改了 dataobject 属性后 应该重新设置行焦点标志。 获得数据窗口的 SQL 语句 有时需要修改数据窗口对应的 SQL 语句,以便构造查询应用。这时,首先就要 读取数据窗口当前的 SQL 语句,然后再对 where 子句进行修改。可以有多种方 法获取 SQL 语句。最常用的是使用函数 GetSQLSelect,它的语法如下: dw_1.GetSQLSelect() 其中,dw_1 是数据窗口控件的名称,可以是子数据窗口或 datastore 等。函数 执行正确则返回对应的 SQL 语句,否则返回空字符串(“)。 另外,还可以使用 Describe 函数描述数据窗口对象的相关属性来获得。在使用 该函数时,如果数据宙口联结到数据库则返回真正的 SQL 语句,否则返回数据 窗口的 PBselect 语句。PBselect 语句是数据窗口的专用语法,和 SQL 语句有 很大的区别,但也是从 SQL 语句转化而来的。数据窗口对象有三个属性用来保 存 SQL 语句,它们是的 table.select、table.SQLselect、table.select.attribute。这些属性获得的 SQL 语法稍微有区别。下面是获取一个数据窗口 SQL 语法的不同的语句: string ls_sql ls_sql = dw_1.GetSQLSelect() ls_sql = dw_1.Describe(“datawindow.table.select“) ls_sql = dw_1.describe(“datawindow.table.SQLselect“) ls_sql = dw_1.describe(“datawindow.table.select.attribute“) 修改数据窗口的 SQL 语句 使用上面介绍的方法获得 SQL 后,可以进行修改加工,然后重新应用于数据窗 口对象。使用这种方法可以创建功能比较强大的查询程序。 和提取语法一样,也有两种修改 SQL 的方法:使用函数 Modify 或者 SetSQLSelect。不管使用哪种方法,修改完 SQL 语句后都要重新设置事务对象。 比较常用的是后一种函数,它的语法是: dw_1.SetSQLSelect(statement) 其中,dw_1 是要重新设置 SQL 语句的数据窗口控件名称,可以是子数据窗口或 者 datastore。statement 是一个包含合法 SQL 语句的字符串。该函数正确执行 返回 1,否则返回-1。另外,对于新的 SQL 语句有很多需要注意的地方: (1)字段的类型和个数必须和原 SQL 语句相同; (2)原来的 SQL 语句中定义了检索变量时,就不能重新设置 SQL 语句。 如果原来的数据窗口可以修改数据库中的数据表,那么重新设置时, PowerBuilder 把和原来主键位置相同的字段仍然作为新的主键。如果碰到了下 面的两种情况,则将使数据窗口无法更新: a)from 于句中包含多个数据表名; b)数据窗口可以更新的是数据库的计算列。 使用相应的 Modify 函数和相应的语法也可以修改数据窗口的 SQL。例如: dw_1.modify(“datawindow.table.select=“select name,sex,from address where sex=男“) 也可以直接使用语法来修改数据窗口的 SQL 语句。例如,上面的语句可以改写 成: dw_1.datawindow.table.select=“select name,sex,from address where sex=男“ 然而这种方法无法验证 SQL 语句是否正确,不如使用 Modify 函数,但是上面这 种方法的执行速度比较快,如果能够确保准确无误,这种方法还是可以考虑的。 可以看出它的语法和上面的相同。 这里的技巧是,如果在运行时需要对数据窗口的 SQL 语句进行修改,创建没有 where 子句的数据窗口比较好些。因为 where 子句可以在动态修改时添加, sort 可以在运行时使用 setsort 函数实现。这样,程序运行时处理数据窗口的 SQL 语句就比较方便。 下面介绍一个在程序运行时动态修改数据窗口的 SQL 语句的实例。在该例子中, 使用数据窗口控件函数 ModIfy 可以修改数据窗口对象中的控件的属性。脚本如 下: String ls_SQL,ls_where,ls_select ls_SQL = dw_1.Describe(“DataWindow.table.select“) /获取数据窗口当前 的 SQL 语句 If Pos(ls_SQL,“where“) 0 Then /如果有 where 子句(有可能是运行时添 加的) ls_select = Left(ls_SQL,pos(ls_SQL,“where“) - 1) /取 where 前面的内容 Else ls_select = ls_SQL /如果没有 where 子句则直接赋值 End If ls_where = “ where xm like 郭% order by xm“ /where 子句。可以设计 界面让用户构造 ls_SQL = ls_select + ls_where /添加 where 子句 If dw_1.SetSQLSelect(ls_SQL) = 1 Then dw_1.Retrieve() End If 在上面的例子中,where 条件都是固定的。也可以设计界面,让用户指定条件 来查询数据。该脚本可以编写成一个函数,将 where 子句作为参数,将是否成 功设置 SQL 作为返回值,在用户每次指定查询条件进行检索时调用该函数。 其他 *GetFileOpenName(title,pathname,filename,extension,filter) 功能:Displays the systems Open File dialog and allows the user to select a file or enter a filename.(打开选择文件对话框) -具体请见 PB 帮助 *LibraryDirectory ( libraryname, objecttype ) 功能:Obtains a list of the objects in a PowerBuilder library.(获得 PBL 中的对象) -具体请见 PB 帮助 *long dwcontrol.ImportString ( stri

温馨提示

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

评论

0/150

提交评论