文档库 最新最全的文档下载
当前位置:文档库 › PB与PE

PB与PE

PB与PE
PB与PE

PB与PE

PB

PB=Price/Book(市净率)。就是每股市场价格/每股净资产的比率。亦即是风险溢价值,

表示你现在愿意用比现净资产值高的价格买进股票,当然啦!在熊市中,你经常都可以买到低于1的PB值。

在国际股票市场上,PB价值一般在2倍左右比较合理。

还有一个PE,PE=Price/Earnings(市盈率)。就是当前每股市场价除每股盈利的比率。

市盈率是衡量股价高低和企业盈利能力的一个重要指标。

由于市盈率把股价和企业盈利能力结合起来,其水平高低更真实地反映了股票价格的高低。

例如,股价同为50元的两只股票,其每股收益分别为5元和1元,则其市盈率分别是10倍和50倍,

也就是说具当前的实际价格水平相差5倍。若企业盈利能力不变,

这说明投资者以同样50元价格购买的两种股票,要分别在10年和50年以后才能从企业盈利中收回投资。

但是,由于企业的盈利能力是会不断改变的,投资者购买股票更看重企业的未来。

因此,一些发展前景很好的公司即使当前的市盈率较高,投资者也愿意去购买。

预期的利润增长率高的公司,其股票的市盈率也会比较高。

例如,对两家上年每股盈利同为1元的公司来讲,如果A公司今后每年保持20%的利润增长率,B公司每年只能保持10%的增长率,那么到第十年时A公司的每股盈利将达到6.2元,B公司只有2.6元,因此A公司当前的市盈率必然应当高于B公司。投资者若以同样价格购买这家公司股票,对A公司的投资能更早地收回。

BVP=Book Value Per share(每股的净资产值)。亦即是这间上市公司宣布破产时的现值。

PE就是PRICE EARNING RATIO,中文译为本益比。

PE的算法简单,我们只需要把一只股票的现价除以它的每股净利就可得到它的本益比PE。

(PE = PRICE / EARNING PER SHARE)

举个例子:

MIECO的股本是210million。1999年它的净盈利是21million。净盈利就是after tax profit。所以它的每股净利EARNING PER SHARE(EPS)就是0.10。

EPS = EARNING / NO. OF SHARES

EPS = 21 / 210

EPS = 0.10

23/2/2001它的股价是0.86零吉。

PRICE = 0.86

PE的算法就是:

PE = PRICE / EPS

PE = 0.86 / 0.10

PE = 8.6

所以它的本益比PE就是8.6。

PE是随着股价而变动的,股价上升PE就会随着上升,股价下跌PE就会随着下跌。

假设MIECO的股价上升到2.00零吉,它的PE就是:2.00/0.10=20。

假设MIECO的股价下跌到0.50零吉,它的PE就是:0.50/0.10=5。

如果我们想买股,PE是越低越好。PE低就代表股价便宜。

如果我们想卖股,PE是越高越好。PE高就代表股价昂贵。

有的时候股价纹风不动,PE也会变动的。例如:

MIECO的股价停留在0.86零吉,而它的2000年最新业绩却公布了。

假设它的EPS下降了一半,只剩0.05零吉。那么它的PE就会变成17.2。

PE = PRICE / EPS

PE = 0.86 / 0.05

PE = 17.2

假设它的EPS上升了一倍,达到0.20零吉。那么它的PE就会变成4.3。

PE = PRICE / EPS

PE = 0.86 / 0.20

PE = 4.3

所以我们要常常注意公司的业绩,尤其是公司公布业绩的时刻。有时我们需要自己算算PE,不能依赖报章的数据为根据,因为报章通常迟了几个月才更新它的数据。有时我们也要自己预测公司的PE。

例如MAYBANK刚刚公布它的半年业绩,它的最新EPS是半年0.30零吉。所以我们就可预测它的全年EPS将是0.60零吉。(0.30×2=0.60)

现在MAYBANK的股价大约为14.40零吉,所以它的PE应该是24。

PE = PRICE / EPS

PE = 14.40 / 0.60

PE = 24

那么多少的PE才是合理的呢?

依我个人的看法,只要它比定期存款的PE低就是合理的了。

定期存款也有它的PE吗?当然有。

那么现在定期存款的PE是多少?

今天定期存款的利息是4.50巴仙。1.00零吉的存款一年只能赚0.045零吉。

所以PRICE=1.00,EPS=0.045。

PE = PRICE / EPS

PE = 1.00 / 0.045

PE = 22.2

所以今天定期存款的PE就是22.2。

那么知道了合理的PE对我们就有所帮助吗?

当然。例如在1998年初,综合指数大约是700点,当时的定期存款利息却高达12.5巴仙。每1.00零吉的存款一年就能赚0.125零吉。它的PE就是8。(1.00/0.125=8)

当时KLCI的平均PE却是14.08。所以两者比较起来,股票就比定期存款昂贵了。我们只要知道股票是昂贵的,我们就知道该怎样做了。

那么今天KLCI的平均PE是多少呢?我们怎样获得这数据?

根据KLSE出版的月刊INVESTORS DIGEST,截至2000年12月KLCI的平均PE是16.46。所以跟定期存款的PE比较起来,现在的股票是便宜的了。

根据以上所述,1998年2月KLCI的PE是14,2000年12月KLCI的PE是16,那一个时候的股价才算便宜?

乍看起来14的PE是比16的PE来得便宜。其实不然,因为和当时的定期存款的PE比较起来,2000年12月的股价比较便宜。所以PE的用法一定要灵活,不能死板。

BJGROUP的股价是0.33零吉,EON的股价是8.00零吉。请问那一个的股价比较便宜?

如果单单看价钱当然是BJGROUP比较便宜。

但是如果用PE来衡量,EON的股价却远比BJGROUP来得便宜。

BJGROUP是亏钱的公司,根本就没有PE。(没有EPS就不能计算PE)

EON的EPS是2.10零吉,股价8.00零吉,所以它的PE就是3.8。

跟KLCI的平均PE(16)比较起来EON的PE(4)是太便宜的了。

结论就是

本益比PE是用来衡量股票的价值。

pb数据窗口常用代码

一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法格式: dw_control.SetTrans(TransactionObject) dw_control.SetTransObject(TransactionObject) 其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。 这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充一个事务对象,PB 就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。 这两个函数都是成功时返回1,发生错误时返回-1。 二、检索数据 用于检索数据的函数只有一个,就是Retrieve()函数。 语法格式: dw_control.Retrieve() 如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺序一致。 此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。 三、更新数据 当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。 语法格式: dw_control.Update() 这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子: Int li_return

pb操作文档表格源码

PB中打开了一个word文档怎么把图片插入到word文档里面去 myword.Selection.InlineShapes.AddPicture('C:\1.jpg',False,True) 加入的表格 ole_1.ActiveDocument.Tables.Add(ole_1.Selection.Range, ll_rownum, ll_colnum,wdW ord9TableBehavior,wdAutoFitFixed)

dw2word,dw2xls PB 数据窗口数据导出到word,excel, excel 可以自定义修改excel文档的列宽对齐方式,字体样式等 // dwsave2word 调用ole global type gf_exportdata2word from function_object end type forward prototypes global subroutine gf_exportdata2word (datawindow ad_datawindow) end prototypes global subroutine gf_exportdata2word (datawindow ad_datawindow);string ls_filepath ls_filepath=gf_getfilesavename() OleObject OleObjectWord OleObjectWord=Create OleObject // 连接word if OleObjectWord.ConnectToNewObject("Word.application") <> 0 then Messagebox("提示","ole连接错误!") return end if OleObjectWord.visible=false //word文档在操作数据过程中是否可见 Long col_colnum,col_rownum Constant Long wdTableBehavior=1 Constant Long wdAutoFitFixed=0 Constant Long wdCell=12 String str_value // 得到数据窗口数据的列数和行数(行数应该是数据行数+1) col_colnum=Long(ad_datawindow.object.datawindow.column.count) col_rownum=ad_datawindow.rowcount() + 1 // 先在word文档中画好表格 SetPointer(HourGlass!) OleObjectWord.Documents.Add OleObjectWord.ActiveDocument.Tables.Add(OleObjectWord.Selection.Range ,& +col_rownum,col_colnum,wdTableBehavior,wdAutoFitFixed) string ls_colname integer i,j,k,l for i=1 to col_colnum //得到标题头的名称 ls_colname=ad_datawindow.Describe('#'+string(i)+".name") + "_t" str_value=ad_datawindow.DEscribe(ls_colname+".text")

PB教程

POWERBUILDER教程 第一章概述 1.1特点 1.事件驱动 在事件驱动方式中,程序的运行没有固定的流程,程序的代码也是为各种可能发生的事件编写,当程序开始运行后,它可以接受来自系统、用户或其他应用程序触发的事件,然后执行事件代码。 建立窗口、控件和其他应用部件时都含有一组预定义的事件。例如:clicked(单击),用户也可以定义自己的事件。 2.面向对象 Windows应用程序中常见的窗口、菜单、控件在powerbuilder中都是一个个对象。同时,也可以创建自己的用户对象。每个对象都有自身的特征和行为(属性、事件和函数)。 Powerbuilder提供了基础类库PFC,它为应用程序开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发高质量、重用好的应用程序。 3.Powerscript语言 Powerbuilder中,所有的处理逻辑都是用powerscript语言编写,powerscript是PowerBuilder是专用语言。 4.强大的数据库窗口对象 数据窗口对象是PowerBuilder中的一种对象类型,是专门为访问后台的数据库服务的,在数据窗口对象中可以定义数据的来源和数据的显示风格,这样在应用程序就可以把精力完全放在程序的流程控制上,而不用关心具体数据的来源。如果需要使用数据库中不同的数据,也只要对数据窗口对象进行修改就可以。 5.其他特点 支持internet、支持分布式应用、支持多平台、支持大多数关系型数据库(Sybase、MS SQL

SERVER、ORACLE等等以及ODBC等其他数据源)等等1.2安装 略 注:升级至7.011 1.3开发环境IDE 1 菜单栏 图标说明 New Inherit Open Select application Library list To-do-list Browser Library Db profile Dababase Edit Run Debug

pb中数据窗口函数总结

pb中数据窗口函数总结 一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法格式: dw_control.SetTrans(TransactionObject) dw_control.SetTransObject(TransactionObject) 其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。 这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。 这两个函数都是成功时返回1,发生错误时返回-1。 二、检索数据 用于检索数据的函数只有一个,就是Retrieve()函数。 语法格式: dw_control.Retrieve() 如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺序一致。 此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。 三、更新数据 当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。 语法格式: dw_control.Update() 这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子: Int li_return li_return = dw_1.Update() IF li_return = 1 THEN

PB开发(1)

第三部分用PowerBuilder开发数据库应用系统 第一章 P owerBuilder简介 ●介绍PB的特点; ●应用程序的组成,开发步骤; ●PB开发环境 ●一个应用程序实例 一、 PB的特点 1.什么是PB? ●PB是一个图形界面的,面向对象的数据库应用系统开发工具; ●能够开发功能强大的,运行在多个平台的,能够操作多个数据库的应用系统; ●可以开发客户/服务器、分布式、Internet应用系统。 (1) 客户/服务器结构:(双层) ●这种结构的核心是当前端用户(客户工作站)需要后台服务器的服务时, 仅发出请求;而服务器接收请求后,执行相应的功能,并把满足条件的 那部分数据反馈给前台客户端; ●数据库服务器上的DBMS集中负责管理数据库服务器上的数据和资源,它 向客户端提供一个开放的使用环境,客户端的用户通过数据库接口和 SQL语言访问数据库;也就是说,它只要能通过网络协议和数据库接口 程序连接到服务器,就可以对数据库进行访问; ●在此结构中,应用程序和应用逻辑可以根据需要划分在服务器或客户工 作站; (2) 多层客户/服务器结构:(分布式结构) ●有三个逻辑层,客户层是面向用户服务的,把数据和应用呈现给用户的 逻辑,在客户端实现,中间层是面向商业规则的,在应用服务器上实现, 服务器层是面向数据服务的,在数据库服务器上实现; ●强调组件开发,相对独立的组建模块安排在服务器上,供所有的客户端 应用程序访问; (3) Internet应用系统 ●处理分三层,类似于多层客户/服务器结构; ●商务和表现服务驻留在Web服务器上,而客户使用简单的浏览器,这种 结构可支持任何配有浏览器的客户机。 2.提供强有力的开发环境 ●用它来建立用户容易使用的各种应用程序; ●开发人员还可以通过PB修改他们的数据库; ●PB为应用的开发提供了全面的综合性的支持,概括如下: (1) 事件驱动的应用程序 ●PB的应用程序是事件驱动的,即用户通过各种动作控制应用程序的流 程; ●用户可以通过编写脚本来说明当事件触发时,要完成的处理过程;

Pb常用概念与术语及script编程规范

Pb常用概念与术语及script编程规范 1.dbms 数据库管理系统的缩写,它是可以提供数据库管理功能的软件2.Profile 保存在pb初始化文件中的命名的参数的集合,它定义一个指向数据库的连接 3.Data Source 数据源,pb有五种数据源:QUICK SELECT,SQL SELECT,QUERY,EXTERNAL和STRORE PROCEDURE 4.ODBC 开放数据库连接的缩写,是微软提供的访问数据库的接口标准. 通过ODBC接口,PB可以连接到大部分DBMS 5.MTS MTS是微软事物服务器的缩写,它是基于一个组件的事物处理系统,支持开放.发行和管理基于组件的应用 https://www.wendangku.net/doc/e016410436.html,PONENT 组件是在JAGUAR中或MTS中的一个包含业务逻辑的可重用模块.用户对象可以作为组件发行到中间层的JAGUAR或MTS服务器中. 7.LIBRARY 库,存储PB对象的文件,它的扩展名是.PBL 8.PAINTER

画笔,创建和编辑PB对象的编辑器,或是管理数据或库的工具9.APPLICATION OBJECT 应用对象是一个应用系统的入口点,它定义乐系统的一些应用级行为 10.SCRIPT 脚本是响应特定事件的一段语句的集合.在PB中编写脚本执行POWERSCRIPT语言 11.PRIMARY KEY 主健,唯一标识表中每一条记录的一个或多个列. https://www.wendangku.net/doc/e016410436.html,EROBJECT 用户对象,用户自定义的用于完成某项处理的.可重复使用的对象 13.FOREIGN KEY 外部键,是一种约束,要求构成外部键的一个或多个列的值必须对应主健表中的一个值 14.EVENT 事件,一个发生在对象或控制中的动作,可以触发一段脚本程序的执行. 15.FUNCTION 函数,执行特定处理的例程,在面对对象编程中,也称方法. 16.POLYMORPHISM 多态,同一个对象中的两个或多个名字相同,参数列表不同的

用PB开发报表系统

用PB开发报表系统 在建设某公司内部信息网的过程中,涉及到大量的DBF文件直接转换为HTML文件的应用,其他的文件格式(Excel,Access,以及大型数据库的查询)也有这方面的要求,由此用PB实现了基于ODBC查询的PSR文件生成工具。 此生成器的原理是: 1、通过取出表的结构, 2、生成查询的SQL语法, 3、SyntaxFromSQL()函数生成datawindow语法, 4、create()函数生成数据窗 5、将生成的数据窗进行修饰,包括增加对象、删除对象、修饰对象、布置对象等操作,进行数据窗的美化工作。 6、将生成的数据窗用SaveAs()函数另寸为PSR 文件。 7、在HTML页中使用插件方式或直接连接方式显示该PSR文件。 在实现过程中,使用了数据窗函数Modify()的各种语法来实现对数据窗的修饰,如加入线条,加入文本、改变格式、颜色等。可修饰的内容如下图: 该工具主要有以下特点: 1、自动化 对某些部门而言,需要处理的数据是动态变化的,如某销售公司,每天处理十几报表,报表的形式基本稳定,因此只需将更新后的数据拷贝到指定的位置,或在形成SQL语法时加入一定的条件,即可实现自动化的报表处理。处理时,将需要的报表循环,自动设置ODBC连接参数(用写注册表的方法),自动连接好数据库,打开报表对应的数据窗,检索记录,然后另存为预定的PSR文件即可。 2、实用性 该工具特别针对查询而设计,可扩展到任何用ODBC连接的数据源,只要该数据源支持标准SQL查询即可。特别对于OA中或信息发布中需要将一些沿用已久FOX系统下的DBF文件发布而言,所做工作只要在一次定义后,按几个按钮即可完成。特别是在NOTES中只要将PSR 文件作为附件直接插入到文档中,在客户端定义好Plugin,即可实现WEB 发布。 【技术要点参考】 1、创建数据窗子对象 通过数据窗的Modify()函数实现,语法: dw_report.modify('create text(name=uc_text_001 x="10" y="20" width="300" ....')

PB编程规范

编程规范(PB) 1简介 1.1简介 这个文档描述了用于编写稳定、可靠的PowerBuilder应用程序的一些标准、约定和准则。他们基于合理的,经过证实的一些使代码容易理解、维护和增强的软件工程的原则。另外,遵循这些标准,你作为一个PowerBuilder程序员的生产力将有一个显著的提高。一些经验证明,花时间在项目的开始写出高质量的代码,可以使在后来的开发过程中容易修改它,从而事半功倍。最后,遵循这一系列编码规范,可以使一个开发团队更好地保持一致性,最终必将极大地提高团队的生产力。 1.2最初的准则和最终的准则 当你无法找到一些你需要的原则或准则时,或者它们很明显地不适用,或者其它的一些情况下,请使用常识,按照一些基本的原理去作。这个原则凌驾于其他原则。 2命名规范 2.1一般性约定 1.使用英文或汉语拼音的全称去准确地描述各种对象、变量例如,ls_UserName (用户名) ,ldc_GrandTotal(总计)等等。尽管x1,y1这样的名称很容易拼写,因为它们很短,但是他们不可能明确地提示名称的含义,将导致代码难以理解、维护和改进。 2.使用大小写混合的方式命名 3.以合适的方式使用缩写例如ll_RownNmber,简写为ll_RowNum是可以理解的,但是li_ReturnCode简写为li_rc就不一定被别人看懂,所以应该以尽量保守的态度使用缩写,

在更多的时候使用全称,或者建立常用缩写的对照表。 4.避免太长的名称,尽量限制在15个字母以内长名称虽然很容易懂,但特别长将导致拼写时经常出错。 5.不要在第一个字母和最后一个字母使用下划线 6.保持命名的一致性。相关的东西应给以相关的名字,以说明他们的关系和差异 2.2具体约定 2.2.1对象命名规范 <前缀>_名称 注:名称为英文,新建对象必须加注释(菜单对象可例外)。一般情况下,菜单对象的名称与其所属窗口的名称一致。 例子: w_master , m_master , d_cig_cd u_tvs is the TreeView visual user object u_dw is the DataWindow visual user object n_cst_dwsrv is the custom class user object for DataWindow services n_tr is the transaction standard class user object and is in the extension level 2.2.2变量范围命名规范 <范围><数据类型>_变量名 范围:

PB 基本语句 循环语句

PB 基本语句循环语句 PB 基本语句 一、赋值语句 赋值语句用于给变量、对象属性赋值,这是应用程序中使用最频繁的语句,其语法格式为:variablename = expression 其中:⑴variablename是变量名或对象属性; ⑵expression是表达式,其数据类型应该与variablename的数据类型兼容。 下面是赋值语句的几个简单示例: Address = "北京" TaxRate = .05 Age = 30 mle.text="北京欢迎你" PowerScript的赋值语句不支持多重赋值,也就是说,一条赋值语句只对一个变量赋值,不能同时对多个变量赋值。 下面的语句:A=B=0 在有些编程语言中同时把A和B均赋值0,但PowerScript中,该语句等价于: A=(B=0) 其意义为,检查B等于0是否成立,成立时将TRUE赋给变量A,否则把FALSE赋给变量A。如果A不是Boolean类型的变量,则上述语句将引起编译错误。 二、条件语句 IF语句有两种形式,下面我们按照从简单到复杂的次序逐一介绍。 1. 单行IF ... THEN语句 单行IF ... THEN语句的格式为: IF逻辑表达式THEN语句1 [ELSE语句2] 单行IF ... THEN语句书写时整条语句写在一行上,当逻辑表达式的结果为True时执行语句1,否则执行语句2(如果有该子句的话)。 例如:IF sle_State.text="BJ" THEN MessageBox("欢迎","北京") 2.多行IF ... THEN语句 多行IF ... THEN语句的语法格式为: IF 逻辑表达式1 THEN 语句1 [ ELSEIF 逻辑表达式2 THEN 语句2 . . . ] [ ELSE 语句n] END IF 本语句的执行过程为:计算逻辑表达式1,如果其结果为True,则执行语句1,然后离开整个IF语句;否则计算逻辑表达式2,如果其结果为True,则执行语句2,然后离开整个IF语句;... 如果逻辑表达式的结果都是False,且存在ELSE子句,则执行语句3。 例1:从单行编辑框中输入考分,按“输入”按钮再根据考分显示及格或不及格。 Integer s s = integer(sle_1.text) //sle_1 text单行编辑框文本 If s < 60 then St_1.text = “不及格”// St_1.text静态编辑框文本

PB中的时间日期函数

常用的PB时间函数汇总收藏 Day() 功能得到日期型数据中的号数(1到31之间的整数值)。 语法Day ( date ) 参数date:要得到号数的日期值返回值 Integer。函数执行成功时返回号数(1到31之间的整数值)。如果date参数的值为NULL,则Day()函数返回NULL。 -------------------------------------------------------------------------------- DayName() 功能得到指定日期是一周中的星期几(例如,Sunday, Monday...)。 语法DayName ( date ) 参数date:date类型值或变量返回值String。函数执行成功时返回指定日期的星期表示(例如,Sunday, Monday...)。如果date参数的值为NULL,则DayName()函数返回NULL。 -------------------------------------------------------------------------------- DayNumber() 功能得到日期型数据是一星期中的第几天(用1到7之间的整数表示,星期天为1,星期一为2,...)。 语法DayNumber ( date ) 参数date:date类型值或变量返回值Integer。函数执行成功时返回指定日期是一星期中的第几天(用1~7表示,星期天为1,星期一为2,...)。如果date 参数的值为NULL,则DayNumber()函数返回NULL。 -------------------------------------------------------------------------------- DaysAfter() 功能得到两个日期间的天数。 语法DaysAfter ( date1, date2 ) 参数date1:date类型,指定起始日期date2:date类型,指定终止日期返回值Long。函数执行成功时得到两个日期之间的天数。如果date2的日期在date1的前面,那么DaysAfter()函数返回负值。如果任何参数的值为NULL,则DaysAfter()函数返回NULL。 -------------------------------------------------------------------------------- Hour() 功能得到时间值中的小时,采用24小时制。 语法Hour ( time ) 参数time:time类型的值返回值Integer。函数执行成功时得到time参数中的小时(00到23之间)。如果time参数的值为NULL,则Hour()函数返回NULL。---------------------------------------------------------------------

PB得到首拼音码函数无错码

//得到首拼音码函数 //把这段代码加入到函数地f_get_py(string as_InputString) char lc_FirstLetter[23] string ls_ch string ls_SecondSecTable string ls_ReturnStr integer li_SecPosValue[23] integer i , j integer li_SectorCode integer li_PositionCode integer li_SecPosCode integer li_offset //Set initial value li_SecPosValue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3 730,3858,4027,4086,4390,4558,4684,4925,5249 } lc_FirstLetter[] = { "A ", "B ", "C ", "D ", "E ", "F ", "G ", "H ", "J ", "K ", "L ", "M ", "N ", "O ", "P ", "Q ", "R ", "S ", "T ", "W ", "X ", "Y ", "Z "} ls_SecondSecTable= "CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZL SGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXD TTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCS CJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHYLYGXFPTYJYY ZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBN PTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQY RBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYG HQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWYWSBHTRXXGLHQ HFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNY TDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZN MLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCD HJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZ WYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHS Y[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBS QKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGB WHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZPMGFCSGLSXYMJSHXPJ XWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ [YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJ PCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[ YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWB MYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZ NZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTS XGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKD GJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWG JJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCP

InfoMaker报表及在PB程式中的应用

InfoMaker报表及在PB程式中的应用 InfoMaker是Sybase推出的一款非常优秀的免费的(存疑)报表设计及浏览工具,在安装PB时或其它Sybase软件时可作为选择性安装,并不单独销售。使用InfoMaker开发出来的报表可以直接在PB中使用,因此如果能够在PB程序中调用InfoMaker让用户自行设计数据窗口,将大大减轻了开发人员开发数据窗口的工作量,并且让用户拥有自己设计的程序界面(增进用户的参与感)。 其实InfoMaker的可执行程序是允许带参数的,以InfoMaker9.0的可执行程序im90.exe为例(以下全部以InfoMaker9.0来讲解,其它版本类似),"/P”指明报表类型,可取report、form、pipeline、query值,”/L "指明库文件," /O "指明对象名称。例:执行im90.exe /P report /L c:/test.pbl /O d_test_grid,将使用InfoMarker打开c:/test.pbl中的d_test_grid报表。 在知道InfoMaker命令行参数的前提下,要在PB程序中调用它修改现有数据窗口,目标就是组合各种参数值。 【/P】选项是枚举值,如果是修改现有数据窗口,可以取值report。 【/L】选项是库文件,可以是pbl或pbd文件,如果数据窗口的dataobject 是一个数据窗口对象,可以通过调用GetLibraryList、LibraryDirectory等函数来获取该数据窗口对象所在库文件。为了不使用户覆盖你现有pbl或pbd中的对象,我建议你新建一个临时pbl,可以通过调用LibraryCreate 来创建,调用LibraryDelete 来销毁。

PB常用函数

PB常用函数日期时间类函数 日期时间类函数的功能如下: Date:把日期转换为Date类型。 Time:把时间转换为Time类型。 Day:日期值。 Month:月值。 Year:年值。 DayName:星期几。 DayNumber:一周中的第几天。 DaysAfer:两个日期之间所差的天数。 SecondsAfer:两个时间之间所差的秒数。 Hour:小时。 Minute:分钟。 Second:秒。 Now:系统当前时间。 Today:系统日期和时间。 RelativeDate:指定日期前后的天数值。 RelativeTime:指定时间的前后时间值。 数值计算类函数 数值计算类函数主要的作用就是对数据进行计算,功能如下:Abs:返回数据的绝对值。 Max:求输入的最大值。 Min:求输入的最小值。 Ceiling:返回整数,小数会自动向上进位。 Int:返回整数,小数会自动向下退位。 Round:对数据进行四舍五入操作。 Truncate:删除掉小数点后若干位。 Cos:求余弦值。 Sin:求正弦值。 Tan:求正切值。 Exp:以e为底,输入值为次方的乘方值。 Sqrt:求平方根。 Fact:求阶乘。 Log:求自然对数。 LogTen:求以10为底的对数。 Mod:求余数。 Pi:求与PI的乘积。 Rand:返回1与输入值之间的一个伪随机数。 字符串类函数 字符串类函数的功能如下。 Fill:建立一个指定长度的字符串。 Lower:转换为小写字母。

Upper:转换为大写字母。 WordCap:首写字母大写,其他小写。 Space:由指定字符个数组成的空格字符串。 Left:从字符串左边开始指定字符串。 Right:从字符串右边开始指定字符串。 LeftTrim:删除字符串左边的空格。 RightTrim:删除字符串右边的空格。 Trim:删除左右两边的空格。 Len:返回字符串长度。 Match:判断是否有指定模式的字符。 Mid:取子字符串。 Replace:用指定字符替换另外一个字符串。 String:将数据转换为指定格式的字符串。 信息类函数 信息类函数可以获取数据窗口中的一些信息,函数的功能如下: CurrentRow:获取数据窗口的焦点的行数。 Page:获取当前记录的页数。 PageAcross:获取当前水平方向的页面。 PageCount:获取总页数。 RowHeight:获得记录的高度。 Describe:获取数据窗口对象的属性值。 IsRowModified:获取记录是否修改过,如果修改过返回True。 IsRowNew:获取是否新插入数据,如果插入返回True。 IsSelected:获取记录是否被选中,选中返True。 PageCountAcross:获取水平方向总页面。 RowCount:获取主缓冲区的总记录数。 统计类函数 统计类函数主要是用来对数据库中的数据进行统计操作,统计函数功能如下: Avg:计算字段的平均数,例如Avg(id)。 Max:计算字段的最大值,例如Max(id)。 Min:计算字段的最小值,例如Min(id)。 Median:计算字段的中间值。 Count:计算表或字段的记录数,例如Count(*)。 Frist:返回第一条记录。 Last:返回最后一条记录。 交叉表函数 只能在交叉列表风格的数据窗口中的细节区使用交叉表函数,交叉表的函数功能如下:CrosstabVag:计算字段数据的平均数。 CrosstabCount:计算字段数据的记录数。 CrosstabMax:计算字段数据的最大值。 CrosstabMin:计算字段数据的最小值。 数据类型转换与检查函数 数据类型转换与检查函数用于定义数据窗口的过滤条件、有效性检查和数据类型转换,数据类型转换与检查函数的功能如下:

pb编程

限制程序运行次数 //方法1: 1>声明Global External Functions function ulong CreateMutexA (ulong lpMutexAttributes, int bInitialOwner, ref string lpName) library "kernel32.dll" function ulong GetLastError () library "kernel32.dll" 2>Open事件中: ulong ll_mutex, ll_err string ls_mutex_name if handle (GetApplication (), false) <> 0 then ls_mutex_name = this.AppName + char (0) ll_mutex = CreateMutexA (0, 0, ls_mutex_name) ll_err = GetLastError () if ll_err = 183 then MessageBox ("提示信息", "程序已经运行了!") Halt close else open(w_test) end if else open(w_test) end if //方法2 //使用方法2需要把程序及主窗口的AppName和DisplayName等于下边声明变量ls_name 1>FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library "user32" 2>ulong l_handle, lu_class string ls_name ls_name = "querymode" // 此处ls_name为系统主窗口的标题Title l_handle = FindWindow A(lu_class, ls_name) if l_handle > 0 then MessageBox("提示信息", "应用程序" + This.AppName + "已经运行,不能多次启动!") Halt Close else open(w_test) // 此处为系统主窗口 end if 来源: https://www.wendangku.net/doc/e016410436.html,/bbs/view30-19695-1.htm 我是这样做的:先建一个表,把运行次数放到这个表中,然后当程序每运行一次就更新一次这个表就可以了。参考代码:

系统软件编制规范(PB)

目录 一引言 (1) 1 编写目的 (1) 2 背景..................................................................................................... 错误!未定义书签。二设计规范. (1) 1 系统规划 (1) 2 文件管理 (2) 2.1 目录管理 (2) 2.2 文件命名规范 (3) 2.3 文件备份机制 (3) 3 程序设计规范 (3) 3.1 界面风格 (4) 3.2 命名规范 (6) 3.3 快捷键的定义 (10) 3.4 编程规范 (10) 3.5 编程风格 (11) 系统软件编制规范

一引言 1编写目的 统一整个软件的界面风格,确定软件编制过程中“库文件”、“控件”、“变量”、“对象”、等的命名规范,增强软件开发过程中的规范性、使用 时的易维护性。 二设计规范 1系统规划 1.1计划制定 1.2计划实施

2文件管理 2.1目录管理 (1)目录 开发过程中程序、文件、文档、备份等按功能要求分别存放在D:\code\app目录下的不同子目录下,具体如下: 程序: D:\code\app\模块名 流程图和文档: D:\code\app\doc\模块名 可执行文件:D:\code\app\exe\模块名 备份文件:D:\code\app\bak\模块名 sql文件:D:\code\app\sql\模块名 图片文件: D:\code\app\bmp\模块名 (2)库文件(PBL) 程序开发过程中的各种对象按功能分别存放不同的PBL中,并附加说明。 (如:有系统管理、计划管理、生产管理、物流分析及控制、采购管 理、仓库管理、财务管理、通用查询、数据通信等模块,各模块主 文件命名规则是模块名的汉语拼音缩写,分别对应如下: 公共应用名称:tyfz 父类组件:inherit.pbl(与业务无关) 公共组件 pub.pbl(与业务有关) 应用一:xtgl 系统管理数据窗口:xtgl_dw.pbl 系统管理窗口:xtgl_w.pbl 系统管理函数及其它:xtgl_func.pbl 应用二:jhgl 计划管理数据窗口:jhgl_dw.pbl 计划管理窗口:jhgl_w.pbl 计划管理函数及其它:jhgl_func.pbl 应用三:scgl 生产管理数据窗口: scgl_dw.pbl 生产管理窗口: scgl_w.pbl 生产管理函数及其它: scgl_func.pbl

PB制作报表操作手册V1.0

PB制作手麻统计报表操作手册V1.0 1.原理跟制作文书单非常类似;但是有所区别,请谨记; 2.PB制作手麻统计报表,需要制作2个DATAWINDOW,也即是制作2个单子;其中一个的表现形式采用原有的FREEFORM,另外一个的表现形式为GRID,分别制作2张单子,使用自定义查询参数进行联结; 3.手麻统计报表的组成部分有4部分:详细会有截图进行阅览; a)左侧树形菜单列表; b)右侧上方查询条件; c)中间部分为固定交互按钮; d)主体下方为报表的实际数据展现区域; 4.具体的操作步骤如下: 设置数据库连接,跟文书单一样,不做解释; 制作查询条件DATAWINDOW,新建一个PBL,然后点击【NEW】新建一个

DATAWINDOW,在DATAWINDOW选项里面选择FREEFORM,点击确定,选择【SQL SELECT】,点击【NEXT】 点击【CHANCEL】,点击【design】下拉菜单里面的【CONVERT TO SYNTAX】,转入到https://www.wendangku.net/doc/e016410436.html,代码编辑模式,进行SQL代码的编写,见截图: 截图里面的的https://www.wendangku.net/doc/e016410436.html,模式下是SQL代码,AS后面的是查询条件,这个是根据用户要求来做查询条件,截图只是放入一个开始时间和结束时间;这个里面的 begintime,endtime作为查询条件,进而跟第二个DATAWINDOW里面的参数进行联结;点击【RETURN】按钮,返回到界面模式,修改参数的名字,字段属性需要进行一定的修改,点击一个字段,选择右侧属性选项卡里面的【EDIT】,在【styletype】下拉选择【EditMask】风格,在MASK里面调整时间格式为:yyyy/mm/dd即可,在下方勾选一个日历操作选项【Drop-Down Calendar】,每做一步点击保存,保存名字自己自定义,调整好属性后,点击【Retrieve】,进行界面效果预览,如下图所示

pb函数max

点后第n位的数值,如果函数执行失败或任何参数的值为NULL,Round()函数返回NULL。Sign() 功能确定n是整数、负数还是零。 语法Sign ( n ) 参数n:数值型变量或表达式,指定要测试符号的值返回值Integer。当n大于0时返回1;当n小于0时返回-1;当n等于0时返回0。如果参数n的值为NULL,Sign()函数返回NULL。Sin() 功能计算正弦,其中参数以弧度为单位。 语法Sin( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的正弦。如果参数n 的值为NULL,Sin()函数返回NULL。 Sqrt() 功能计算平方根。 语法Sqrt ( n ) 参数n:数值型变量或表达式,指定要计算平方根的数据返回值Double。函数执行成功时返回n的平方根。如果n是负数,则执行该函数时引发运行错误。如果参数n的值为NULL,Sqrt()函数返回NULL。 Tan() 功能计算正切,其中参数以弧度为单位。 语法Tan( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的正切。如果参数n 的值为NULL,Tan()函数返回NULL。 Truncate() 功能截断数值到指定的小数位。 语法Truncate ( x, n ) 参数x:要截断的数值型数据n:整数类型,指定从哪个小数位上截断x。有效值在0到18之间返回值Decimal。函数执行成功时返回将x截断到小数点后第n位的数值,如果函数执行失败或任何参数的值为NULL,Truncate()函数返回NULL。所谓截断就是舍弃指定位之后的数值。 Asc() 功能得到字符串第一个字符的ASCII码整数值。 语法Asc ( string ) 参数string:要得到第一个字符ASCII值的字符串返回值Integer。函数执行成功时返回string 参数第一个字符的ASCII值,如果string参数的值为NULL,则Asc()函数返回NULL。Char() 功能将字符串的第一个字符、Blob变量的第一个值、或一个整数转换成字符。 语法Char ( n ) 参数n:字符串、Blob变量或整数,也可以是包含上述类型数据的Any类型变量返回值Char。返回参数n的第一个字符。如果n参数的值为NULL,则Char()函数返回NULL。 Dec() 功能将字符串或Blob值转换成Decimal类型的值。 语法Dec ( stringorblob ) 参数stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Decimal类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的

相关文档