| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> pb >> datawindow >> 文章正文
利用PowerBuilder开发格式生成器            【字体:
利用PowerBuilder开发格式生成器
作者:-    文章来源:-    点击数:    更新时间:2006-4-14

  DataWindow(以下简称DW)是PowerBuilder的核心功能,使程序员可以图形化生成SQL,减少编程工作量,并减少程序对系统资源的占用,扩展了报表的特性。我们知道,面向数据库的应用都是以数据为中心的,数据以一定的格式被封装起来进行存取,而DW正是显示与操作数据的窗口。我们可以简单地将DW视为一种数据格式,一旦生成一个数据格式(不管是由用户还是由程序员),则既可以通过这种数据格式打印报表(此时该数据格式就是一份报表格式),也可以通过该种数据格式录入数据(此时该数据格式就是一个编辑窗口)。本文所述格式生成器, 其本质就是一个汉化的DataWindow生成器,相当于把PowerBuilder中的DataWindow Painter 功能分离出来,使用户在不了解PB4.0的情况下,也能自己独立地产生一份满意的报表(或者数据录入格式),并且如果用户对于某一个数据格式不满意,可以通过格式生成器自己进行修改。DW语法可以通过SyntaxFromSql得到。对于开发人员而言,可以在打开library painter后选中某一个DW在主菜单中点Entry-->Export,生成一个扩展名为.srd的文件,该文件为文本文件,可以通过编辑方式浏览。

1.给用户提供一个图形化的界面选择数据源
    以WATCOM数据库为例,systable表中creator字段为0表示为系统表。程序A和程序B中lb -table为listbox控件,显示数据库中所有表名,lb-column显示表中对应列。systemtable为窗口级的布尔变量,表明是否选择系统表(设计思路仿pb4.0中DataWindow Painter中SQL的生成方法)。
程序A 函数f-table-list
STRING table-name
DECLARE curtable CURSOR FOR
SELECT table-name
FROM systable
WHERE creator<>0;
DECLARE cursystem-table CURSOR FOR
SELECT table-name FROM systable;
lb-table.reset()
lb-table.setredraw(FALSE)
lb-column.reset()
OPEN curtable;
OPEN cursystem-table;
DO
IF systemtable THEN
FETCH cursystem-table INTO:table-name;
ELSE
FETCH curtable INTO:table-name;
END IF
IF sqlca.sqlcode=0 THEN
lb-table.additem(table-name)
ELSE
EXIT
ENDIF
LOOP while TRUE
CLOSE curtable;
CLOSE cursystem-table;
lb-table.setredraw(TRUE)
程序B 函数f-column-list():
STRING cname,coltype
DECLARE curcolumn CURSOR FOR
SELECT cname,coltype FROM syscolumns WHERE
tname = :tablename;
lb-column.setredraw(false)
lb-column.reset()
OPEN curcolumn;
DO
FETCH curcolumn INTO:cname,:coltype;
IF sqlca.sqlcode=0 THEN
lb-column.additem(cname)
ELSE
EXIT
END IF
LOOP WHILE TRUE
CLOSE curcolumn;
lb-column.setredraw(TRUE)

2.生成一个新的DW
dw-print.create(sqlca.SYNTAXfromSQL(&
selectstring,&
"Style(Report=Yes Type="+form+")"+&
"Text(Font.Face="楷体"Border=6"+&
"Background.mode=1 Background.color=12632256)"+&
"Column(Border=2 Font.Face="楷体""+&
"Background.mode=1"+&
"Background.color=12632256",errorbuffer),errorbuffer)"
(1)将DW Object的ReadOnly属性和ShowDefinition置为YES,则DW为只读状态且显示每一个数据列的内部定义名称。因为用户是在编辑数据格式而非输入数据,将数据列的内部定义名称显示出来是为了便于用户了解所处理的对象

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • PB编程技巧实例

  • 制作中国式报表(二)

  • 制作中国式报表(一)

  • PB中隐藏下拉数据窗的检索参…

  • 在PB中巧用下拉数据窗口

  • PowerBuilder中数据窗口使用…

  • DataWindow的数据缓冲区

  • 用DataWindow实现对多表的修…

  • 不安装Oracle数据库的连接方…

  • 如何恢复SybaseSQLAnywhere的…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |