转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
Powersoft资料库在系统开发中的应         

Powersoft资料库在系统开发中的应

作者:闵涛 文章来源:闵涛的学习笔记 点击数:702 更新时间:2009/4/24 21:43:16
P>在PowerBuilder开发环境中,存在一个Powersoft资料库,它由五张表组成,记录了用户在开发过程中,创建或修改一张表属性的情况,如定义或修改表中各列的标签和列标题,有效性规则、显示格式 和编辑风格等。巧妙地使用这些表格,可减轻系统开发的工作量,提高开发效率,系统在运行过程中也易于维护。

这五张表及分别存贮的信息如下:PBCatCol每列的名称、标题、标签及位置信息 ;PBCatEdt列的编辑风格及定义;PBCatFmt列的显示风格及定义;PBCatVld列的有效性规则及定义。下面介绍的是利用PBCatCol和PBCatEdt表,用户无须建立代码表,可实现由代码值求显示值的功能。

在PBCatCol表中涉及的主要列及其含义如下: pbc_tnam:表名称 , pbc_cnam:表中某列的名称,pbc_edit:该列所对应的编辑风格;在PBCatEdl表中涉及的主要列及其含义如下: pbe_name:编辑风格名称,pbe_edit: 编辑风格可能的值包括代码、显示值或下拉式数据窗口的显示字段名、值字段名等,pbe_type:编辑风格的种类,如87表示下拉列表,88表示下拉式数据窗口等,pbe_seqn每个编辑风格的值的序号。不同的编辑风格在表中有不同的存贮格式。对下拉列表,第一个记录为开始的标志,而后各行依次存放下拉列表的各代码值、显示值;而下拉数据窗口,通常有三个记录,三个记录中的Pbe_edit列的值分别为数据窗口对象名称、代码字段名,显示值字段名。根据上述特性就可实现对任一给定表,已知某一列的代码值,求出其显示值。

该功能由一个函数完成,输入参数为:表名、列名、代码值、存储显示值的字符串变量。返回值为整型,等于0未转换,大于0转换成功。实现方法:首先利用表名、列名在PBCatCol表中找到该记录,取出pbc_edit列的值,它表示该列定义的编辑风格的名称,如果为空表示未定义编辑风格,无须进行转换;否则,到PBCatEdl表中查找该编辑风格,按Pbe_seqn顺序找到第一个记录,从该记录中取出pbe_type列值,以判断编辑风格的类型。如果该值等于”87”, 表示编辑风格为下拉列表,转换方法:从PBCatEdl表中按Pbe_seqn列的序号依次取出Pbe_edit列的值,Pbe_edit列按照先显示值后代码值的顺序依次存诸下拉列表的每个条目,一旦找到代码值即可确定显示值;等于”88”,表示编辑风格为下拉数据窗口,转换方法:从PBCatEdl表中按Pbe_seqn列的序号依次取出三个记录中的Pbe_edit列的值,它们分别为提供数据源的数据窗口对象名称、用于存储的列名称,用来显示的列名称,而后对该 荽翱诙韵蠼胁檎壹纯傻玫胶痛娲⒌拇胫刀杂Φ南允局怠?

   附程序清单(Powerbuilder 6.0运行通过)
//返加值等于False:未转换,True:转换成功
//fielddisp变量为reference类型的字符串变量, 用于返加显示值。
string s1,s2,vpbe_type,val1,val2
long ll_found
boolean findflag
datastore ds,ds1 findflag=False
//取出指定表、列的编辑风格
SELECT "pbcatcol"."pbc_edit" INTO :s1 FROM "pbcatcol" WHERE
( "pbcatcol"."pbc_tnam" = :tabname ) AND
( "pbcatcol"."pbc_cnam" = :fieldname ) ;
IF s1="" THEN
RETURN findflag //未指定编辑风格
END IF
//取出编辑风格数据
DECLARE t1 CURSOR FOR SELECT "pbcatedt"."pbe_edit" , "pbcatedt"."pbe_type" FROM "pbcatedt" WHERE "pbcatedt"."pbe_name" =: s1 ORDER BY "pbcatedt"."pbe_seqn";
OPEN t1;
FETCH t1 INTO :s2 ,:vpbe_type;
CHOOSE CASE vpbe_type CASE "88"
//建立数据存储,用于表示下拉式数据窗口对应的数据窗口对象
ds=CREATE datastore
ds.dataobject=s2 ds.SetTransObject(sqlca)
ds.Retrieve()
//存取显示值、存储值的列名
FETCH t1 INTO :val1 ,:vpbe_type; FETCH t1 INTO :val2 ,:vpbe_type; CLOSE t1; //在数据窗口对象中进行查找
s2=val1+"="+""+fieldvar +""
ll_found = ds.Find(s2,1,ds.RowCount())
IF(ll_found>0 ) THEN
//取出给定代码值的显示内容
fielddisp=ds.GetItemString(ll_found,val2)
findflag=true END IF DESTROY ds CASE "87" FETCH t1 INTO :s2 ,:vpbe_type;
//从下拉列表取数据
DO WHILE (sqlca.sqlcode = 0 AND NOT Findflag)
fielddisp=s2
//当前显示内容
FETCH t1 INTO :s2,:vpbe_type;
//当前显示内容对应的代码
IF(sqlca.sqlcode <> 0) THEN
EXIT
END IF
IF s2=fieldvar THEN
//等于给定代码值
findflag=true CONTINUE END IF FETCH t1 INTO :s2,:vpbe_type ;
LOOP
END CHOOSE
CLOSE t1;
RETURN findflag


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台