複製鏈接
請複製以下鏈接發送給好友

PB&ROE

鎖定
PowerBuilder(Power Builder,PB)是著名的數據庫應用開發工具生產廠商PowerSoft公司推出的產品(PowerSoft現已被數據庫廠商Sybase所收購),它完全按照客户機/服務器體系結構研製設計,在客户機/服務器結構中,它使用在客户機中,作為數據庫應用程序的開發工具而存在。
中文名
PB&ROE
外文名
PowerBuilder
簡    稱
PB&ROE
廠    商
PowerSoft公司

PB&ROE相關簡介

由於PowerBuilder採用了面向對象和可視化技術,提供可視化的應用開發環境,使得我們利用PowerBuilder,可以方便快捷地開發出利用後台服務器中的數據和數據庫管理系統的數據庫應用程序。  在當前,網絡技術迅速發展,隨之發展的還有OLE,OCX,跨平台等技術,而在PowerBuilder的最新版中提供了對這些技術的全面支持。在數據庫開發工具領域,PowerBuilder是其中非常優秀的一個,利用它我們可以開發出功能強大的數據庫應用程序。PowerBuilder提供了對目前流行的大多數關係數據庫管理系統的支持,由於在PowerBuilder的應用程序中對數據庫訪問的部分一般採用國際化標準數據庫查詢語言SQL,使得用PowerBuilder開發的應用程序可以不做修改或者只做少量的修改就可以在不同的後台數據庫管理系統上使用。也就是説用PowerBuilder開發的應用程序是獨立於服務器上的數據庫。

PB&ROE特點介紹

PowerBuilder提供了對目前流行的大多數關係數據庫管理系統的支持,由於在PowerBuilder的應用程序中對數據庫訪問的部分一般採用國際化標準數據庫查詢語言SQL,使得用PowerBuilder開發的應用程序可以不做修改或者只做少量的修改就可以在不同的後台數據庫管理系統上使用。也就是説用PowerBuilder開發的應用程序是獨立於服務器上的數據庫管理系統的。和大多數的WINDOWS應用程序一樣,PowerBuilder也是事件驅動工作方式。在這種工作方式中,程序的運行沒有固定的流程,程序中的代碼也是為各種可能發生的事件編寫的,當程序開始運行之後,它就可以接受來自系統,用户或者其它應用程序觸發的事件,然後執行相應的事件代碼。事件驅動的工作方式與面向對象技術是緊密相關的,在PowerBuilder應用程序中,接受發生的事件的往往就是程序界面中的各種可視化對象。
PowerBuilder是一種面向對象的開發工具,各種WINDOWS應用程序中常見的窗口、菜單、控件等在PowerBuilder中都是一個個的對象。在PowerBuilder中我們還可以創建自己的用户對象。特別要指出的是PowerBuilder提供了對面向對象方法中的各種技術的全面支持,我們可以利用面向對象方法中的對象的封裝性、繼承性、多態性等特點使得我們開發的應用程序具有極大的可重用性和可擴展性,而這一點正是軟件工程中對應用程序所提出的重要目標。
在當前,由於網絡技術的發展,許多種不同的操作系統平台在INTERNET網上同時被使用,這對開發的應用程序的跨平台性提出了更高的要求,而PowerBuilder就提供了良好的跨平台性,比如在PowerBuilder中,利用WINDOWS平台開發的各種對象可以方便地應用到UNIX平台中,因為PowerBuilder支持對象的跨平台性。這樣使得把應用程序從一個平台移到另一個平台變得並不複雜。為了給用户提供各個方面的支持,PowerBuilder具有自己的編程語言POWERSCRIPT,這個語言除了提供基本的流程控制語句,還提供了幾百個函數來操縱各種對象和提供諸如DDE,OLE等方面的支持。此外我們還可以定義自己的函數,處理特定的事件。學習PowerBuilder時相當一部分的時間就是用來了解和熟悉PowerBuilder提供的各種函數。
PowerBuilder一個很大的特點就是提出了數據窗口對象的概念。數據窗口對象也是PowerBuilder中的一種對象類型,與其它對象不同的是數據窗口對象是專門為了訪問後台的數據庫服務的,在數據窗口對象中我們定義了數據的來源和數據的顯示風格,這樣在應用程序中我們就可以把精力完全放在程序的??為我們在數據窗口對象中已經定義好了數據的來源。如果需要使用數據庫中不同的數據也只要對數據窗口對象進行修改就可以了。特別要指出的是PowerBuilder在數據窗口對象中提供了豐富的數據顯示方式,可以滿足各種不同的需要。
在PowerBuilder較新的版本中提供了基礎類庫PFC,它為應用程序的開發提供了許多可重用的預定義類和對象,利用基本類庫PFC可以快速開發出高質量重用性好的應用程序。真正發揮面向對象編程的巨大威力。最後要指出的是PowerBuilder有三個不同的版本,分別為DESKTOP型,PROFESSIONAL型,和ENTERPRISE型,DESKTOP型是為個人使用的桌面型應用程序,在這裏可以利用PowerBuilder內置的數據庫管理系統SYBASE SQL ANYWHERE來創建和使用本地數據庫,為個人的應用服務;PROFESSIONAL型的PowerBuilder最重要的一點就是提供了對MICROSOFT ODBC(數據庫標準連接接口)的支持,在PROFESSIONAL版本中我們就可以使用PowerBuilder的繼承,多態等絕大多數特性;在ENTERPRISE版本中最重要的一點就是提供了對開發大型的數據庫應用程序的全面的支持,提供了開發大型應用程序的許多輔助的工具,比如C++ CLASS BUILDER等。

PB&ROE編程技巧

PB&ROE數據的轉儲和調入功能的實現

一個數據處理系統的安全性部分是整個系統的關鍵部分,對於一些需要長期保存的歷史數據來説更是必不可少。對於現代的大型數據庫管理系統來説,數據的安全性獨立交給DBA來專門管理,一般的系統較少涉及數據的備份工作。為了減少計算機專業人員的負擔,一個好的MIS系統應該提供數據的轉儲和調入功能,這樣對數據庫管理系統不太瞭解的用户也可以進行數據安全方面的處理。PowerBuilder中SaveAs()、ImportFile()兩函數可以實現這方面的操作,dwcontrol.SaveAs()提供了多種數據的存儲格式,如dBase的DBF格式、以TAB作為分隔符的文本TXT格式、Excel格式、SQLInsert格式、CSV格式。dwcontrol.ImportFile()將數據從各種格式的文本文件中調入數據窗口控制裏。

PB&ROE簡潔美觀的數據報表的創建

一個系統裏的報表應該具有一致的風格,報表至少應該具有如下幾種項目:報表的標題、報表的日期和時間、報表的頁序、報表涉及的對象和條件。PowerBuilder提供了各種類型的數據窗口,報表中主要用到如下幾種類型: Free風格,該數據窗口的數據排列,用户可以任意調整,有最大的自由性。Grid風格,以表格的方式顯示數據,外觀比較工整,美觀明瞭。Graph風格,以圖形方式顯示數據,有直方格、圓餅圖、曲線圖、三維立體柱圖。Group風格的數據窗口提供了一種對數據進行分組的簡便途徑,它生成了一個具有分組屬性的Tabular風格的數據窗口對象。

PB&ROEMdi窗體技術的應用

隨着Windows系統的出現,圖形交互界面得到了用户的喜愛,已成為一種潮流,其中Mdi窗體技術更是吸引人。Mdi窗體,即是多文檔交互式窗體,亦叫無模式窗體。這種窗體包括一個Mdi主窗口及多個Mdi子窗口,子窗口只能在框架之內出現和移動,可以同時打開多個Mdi子窗口,但同一時刻只能有一個窗口處於被激活狀態,當主窗口關閉時,同時關閉所有子窗口。

PB&ROESQL語句的使用

在用PowerBuilder編程時經常要使用SQL語句對數據庫進行操作,而SQL語言語句在使用中格式要求比較嚴格。此外,在使用SQL語句之前,要用Connect與數據庫相連,並且每一條SQL語句必須以“;”結尾。

PB&ROEDatawindow數據窗口

數據窗口的處理機制首先是根據所需的顯示方式將數據源表中的域設計好,在運行時將所要的數據從數據庫服務器上下載到客户機上處理,然後將更改後的數據進行提交(Commit)或回滾(Rollback)。這種處理機制大大降低了數據的傳輸量,減輕了網絡的負擔,也提高了數據的處理速度。充分利用數據窗口的特點,可達到事半功倍的效果,但是如果有些問題不加註意就會出現意想不到的錯誤。 (1). AcceptText()函數
AcceptText()函數的功能是將數據窗口當前編輯的數據轉移到數據窗口的緩衝區中。程序通常在關閉窗口及其他情況下判斷是否改變了當前數據。如果已改變數據,應提示用户保存。這就杜絕了用户在偶然的情況下丟失更改數據的現象。一般用ModifiedCount和DeletedCount函數判斷數據是否改變。
PB在處理數據窗口時,對應開闢了四個數據緩衝區,分別為Primary Buffer、Deleted Buffer、Filter Buffer、SortBuffer,其中Deleted Buffer存放被刪除的記錄,Filter Buffer存放被過濾的記錄,Sort Buffer存放排序的記錄,Primary Buffer存放其他記錄。函數ModifiedCount從Primary and Filter Buffers中取數據進行判斷,DeletedCount則從Deleted Buffer中取數據進行判斷。
PB在接受用户輸入時設置了一個浮動編輯框,用户輸入或更改的內容並不直接進入Primary Buffer,而是在用户輸入完後進入下一個域時,PB首先對它進行有效性檢測,通過後轉入Primary Buffer。如果只改變一項數據就關閉窗口則相關數據並沒有進入Primary Buffer,系統判斷ModifiedCount()為0,所以不會提示保存數據。用AcceptText()函數就可以將浮動編輯框中的數據轉入緩衝區中,在相應的程序段前加上Accepttext(),問題就解決了。
(2).messagebox()函數
messagebox()是Powerscript中用得最多的函數之一,常用於向用户顯示出錯、警告及其它信息,並且在開發過程中常用它顯示程序狀態和重要變量的取值,它在程序運行過程中,在屏幕上顯示一個窗口,只有用户在響應該窗口後,程序才能繼續運行下去,因此,這個函數在程序的開發調試過程中非常有用,可以用來判斷程序在哪個地方出錯。

PB&ROE數據的突出顯示

程序運行中,用户希望顯示的數據具有明顯的區分,數據窗口應該能使用户很快找到他們想要的信息,以顏色區分既滿足用户的習慣,又不佔系統資源,實現起來也很簡單。以學生管理為例,要求成績低於60分的以紅色顯示,其他不變。方法是:在數據窗口中對應成績的列(例如‘/cj’)上雙擊鼠標左鍵或單擊鼠標右鍵,彈出Column Object對話框,選取Expressions頁,在Color後的框中輸入:if(cj<60,rgb(255,0,0),rgb(192,192,192))此句表示當成績小於60則顯紅色,否則灰色顯示。
IF語句只可能有兩種選擇,如果要更多的條件判斷則必須用CASE語句,例如成績大於等於90用藍色,小於60用紅色,其他用綠色則應該用以下語句:Case(cj WHEN IS >=90 THEN RGB(0,0,255) WHEN IS < 60 THEN RGB(255,0,0) ELSE RGB(0,255,0))。
圖形是最好的説明語言,為了更好體現數據的直觀性,可以採用條件位圖的方法。之所以稱為條件位圖,是因為它隨數據的性質而決定是否顯示,用可以在上述的成績管理數據窗口的前面加上一個圖片。雙擊位圖,彈出Picture Object對話框,選Expressions頁,在Visible編輯框寫入if(xb=”0”,1,0),此句的意義為當性別為0(女)時蝴蝶出現,否則蝴蝶消失,程序運行起來相當直觀,充分利用列的屬性使用户的界面更加友善、漂亮。

PB&ROE數據的保護

有很多情況需要對數據進行保護(即只能顯示而不允許修改),學生查詢成績時就是這種情況。進行數據保護的方法有很多,第一種是雙擊要保護的列,彈出Column Object,選取Edit頁,將Display Only框選中;第二種將要保護的列的TabOrder置0,則此列得不到焦點,當然就無從修改;第三種是從根本作起,選取Rows菜單,再選取Update Properties,彈出Specify Update Properties對話框,將Allow Updates設為空,這樣即使用户更改了也無法更新數據庫,使更改毫無意義。

PB&ROE數據窗口的多表更新

在處理數據時,經常需要將幾個表中的數據放入一個數據窗口中進行處理。一般情況下多表數據源的數據窗口只能用於數據的檢索,而不能更新。想要更新數據則採用的方法為:創建數據窗口(將各個表的主鍵包括進去),修改Taborder使數據能被更改,然後對應各個表創建相應的隱含數據窗口,隱含數據窗口的數據項和主數據窗口中對應表的數據項應完全一致。存盤時將主數據窗口中的數據拷貝到相應的隱含數據窗口中去,逐個保存各隱含數據窗口中的數據即可。由此看來,第二種方法更容易理解和接受,實現起來也很簡單。

PB&ROEPowerBuilder 入門

PB&ROE創建新的數據庫

為了使您儘快瞭解PowerBuilder的基本工作原理和編程環境,我們以一個完整的數據庫應用程序的開發為例,通過對其開發過程的詳細介紹,讓您對PowerBuilder有一個基本的認識,為以後的深入學習打基礎。
數據庫應用程序的操作對象是數據庫裏的數據,應用程序的目的就是給用户提供一個良好的界面,使得用户能夠方便有效地使用數據庫中的數據,可見數據庫是應用程序工作的基礎,所以我們就先了解數據庫的創建。
PowerBuilder作為一種數據庫應用程序的開發工具,一般訪問的是後台服務器上的大型數據庫。但是PowerBuilder自身也帶有本地的數據庫管理系統SYBASE SQL ANYWHERE,利用它我們可以創建本地的數據庫,由於利用ODBC接口來實現應用程序和遠程數據庫或本地數據庫的連接在操作上並沒有太大的區別,下面我們利用PowerBuilder自帶的數據庫管理系統SYBASE SQL ANYWHERE來創建本地數據庫。
雙擊屏幕上的PowerBuilder 5.0圖標,就可以啓動PowerBuilder,圖2-1顯示的就是PowerBuilder的初始界面,可以看出,PowerBuilder的界面同其它WINDOWS 應用程序的界面是類似的,也是由菜單、工具條、工作區和狀態條等部件組成。PowerBuilder工具條上的一個個圖標被稱為畫板按鈕,按下這些按鈕可以打開相應的畫板。利用這些畫板我們可以創建各種對象,應用到PowerBuilder開發的應用程序中去。如果你對某個畫板按鈕的功能不太清楚,將鼠標放在這個按鈕上不動,系統會在畫板按鈕的旁邊顯示一條簡短的語句,説明此畫板按鈕的功能,另外也可以從按鈕上的圖標來識別它的功能。
圖 2-1 圖 2-1

PB&ROE2.1.1 創建新的數據庫

創建一個新的數據庫的過程如下:
1) 單擊工具條上的DATABASE畫板按鈕,利用它來創建新的數據庫,單擊後屏幕上彈出一個標題為SELECT TABLES的對話框(圖2-2),讓我們選擇表,這些表是系統當前所連接的數據庫中的表,因為我們現在是要創建新的數據庫,所以單擊對話框的CANCEL按鈕關閉這個對話框,接着屏幕上顯示的是一個完整的數據庫畫板窗口,窗口的標題顯示的是系統當前所連接的數據庫的名字。
圖 2-2 圖 2-2
2) 單擊FILE菜單,選擇其中的CREATE DATABASE菜單項,屏幕上彈出了CREATE LOCAL DATABASE對話框,利用這個對話框我們就可以創建本地數據庫。首先單擊BROWSE按鈕彈出一個對話框,用於選擇數據庫存放的目錄和數據庫的名字,這裏不妨設定D:\DATABASE目錄為數據庫的存放路徑。我們要創建的是一個通訊錄管理程序,所以在對話框的文件名一欄中給它起名為TELEBOOK,然後單擊保存按鈕關閉BROWSE命令所彈出的對話框。注意到現在的對話框的DATABASE NAME一欄中顯示的就是我們剛剛設置的數據庫的完整路徑(圖2-3)。對話框中還有很重要的USER ID、PASSWORD等項,它們是用來設置訪問此數據庫所需要的賬號、口令等信息,以防止對數據庫的非法訪問,維護數據庫的安全性。
3)單擊OK按鈕,PowerBuilder的本地數據庫管理系統就會自動生成SQL語句,在指定的目錄D:\DATABASE下生成一個名為TELEBOOK的本地數據庫,並以文件名TELEBOOK.DB保存在磁盤上。觀察一下數據庫窗口的標題,可以發現系統已經自動把新創建的TELEBOOK數據庫作為系統當前所連接的數據庫(圖2-4)。
圖 2-3 圖 2-3
圖 2-3
圖 2-4 圖 2-4
圖 2-4

PB&ROE2.1.2 向數據庫中添加表

數據庫是一個容器,其中存放的是一個個的表。接下來我們就來為剛建的TELEBOOK數據庫創建表,創建表的過程如下:
1) 單擊工具條上的CREATE TABLE畫板按鈕,就彈出了標題為CREATE TABLE的對話框(圖2-5),利用這個窗口我們就可以生成定義一張表所需要的各項信息
圖 2-5 圖 2-5
2) 一個表是由很多的字段組成的,接下來開始定義表的各個字段了。注意COLUMN NAME一項,它是用來輸入表的字段的名字。這裏輸入第一個字段的名字為NUMBER,代表一個人在通訊錄中的編號。單擊DATA TYPE一欄的下拉箭頭,從中選擇當前字段的數據類型,不妨把NUMBER字段設置為INTEGER整型。這時WIDTH和DEC兩項是灰色的,這表示對於整型字段,數據寬度和小數點後的數據寬度兩項是不可操作的。單擊NULL一欄的下拉列表框,彈出YES 和NO兩項,是用來選擇當前的字段是否可以取空值,也就是在以後的實際記錄中這一個字段是否可以不往裏面輸入數據,因為通訊錄中的每一條記錄都必須有一個編號,所以在NULL項中選擇NO,表示這個字段不能取空值。注意到對話框的下部還有很多項用來設置當前字段的擴展信息,要指出的是,對於具體的某個字段,只要對確實需要定義和修改的屬性進行修改,其它的屬性採用系統所給定的缺省值就可以了。此外有些屬性我們等到表建立好以後再重新定義。注意擴展屬性中的HEADER項,系統已經設置了缺省值NUMBER,這裏把它修改為“編號”,同樣地把LABEL項中的缺省值修改為“編號”,上面定義的這兩項是設置這個表將來通過數據窗口等途徑顯示出來時的字段題頭和標籤。這樣就定義好了NUMBER字段的一些基本屬性(圖2-6)。
3) 單擊窗口上部中NUMBER字段的最後一項DEFAULT激活它,然後按TAB鍵,窗口中又出現一行讓我們定義表的第二個字段的有關屬性,這裏定義第二個字段的字段名為NAME,代表記錄中一個人的名字,數據類型選擇為CHAR字符型。最大寬度WIDTH不妨設置為20,顯然這個字段也應該是非空的,然後把這個字段的題頭和標籤都設定為“名字”。
圖( 2-6 ) 圖( 2-6 )
圖( 2-6 )
4) 用類似的方法接着定義第三個字段的名字為HOME-ADDRESS,代表家庭地址。它的數據類型為CHAR型,寬度為50,因為在通訊錄中可能暫時不知道某個人的家庭地址,所以這個字段可以是空的,即NULL欄選擇為YES,字段的題頭和標籤都定義為“家庭地址”。接着定義第四個字段的名字為POSTCODE,代表郵政編碼,它的數據類型設為NUMERIC,即數值型,寬度為6,DEC一欄為數值的小數點後的位數,這裏設為0,NULL設項為YES,題頭和標籤設置為“郵政編碼”,第五個字段的名字定義為WORK-ADDRESS,代表工作單位的地址,數據類型也為CHAR型,寬度為50,NULL項為YES,題頭和標籤設置為“工作單位”,第六個字段的名字設定為TELEPHONE,代表電話號碼,數據類型設置為CHAR 型,數據寬度為15,NULL項為YES,題頭和標籤定為“電話號碼”,最後一個字段給它起名為STATUS,代表一個人的目前狀況,這個字段的值可能會因為人的不同,有時很長,有時很短,有時甚至可以為空值,所以定義它的數據類型為VARCHAR型,即變寬字符型,它的最大長度設置為256,NULL項為YES,題頭和標籤設為“目前狀況”,這樣我們就完成了對一個表的基本結構的設置工作(圖2-7)。
圖 2-7 圖 2-7
圖 2-7
5)下一步把表起個名字保存起來,單擊工具條上的SAVE CHANGES按鈕,系統彈出一個對話框讓我們輸入表的名字,在TABLE NAME一欄中給它起名為MYTELEBOOK,單擊OK按鈕關閉對話框。注意到這時窗口的標題已經從UNTITLED變成了MYTELEBOOK,表示名為MYTELEBOOK的表已經成功地創建了。

PB&ROE2.1.3 定義表的關鍵字

對於一個表來説,一般總需要定義關鍵字,關鍵字所在字段的值對於表中不同的記錄一定是不相同的,關鍵字是維護數據庫的完整性和正確性的重要手段。
定義表MYTELEBOOK的關鍵字的過程如下:
1) 單擊工具條上的PROPERTIES按鈕,系統彈出一個對話框用來選擇和設置表的各種屬性,在對話框中單擊PRIMARY KEY標籤,來為表定義關鍵字,單擊對話框下部所顯示的表的NUMBER字段,可以發現NUMBER字段出現在對話框上部的KEY COLUMNS一欄中(圖2-9),表示字段NUMBER已經成為關鍵字的組成部分,這裏僅選擇NUMBER字段作為表的關鍵字,單擊OK按鈕關閉對話框,MYTELEBOOK的關鍵字已經成功地設置為NUMBER字段。
圖 2-9 圖 2-9
圖 2-9
2) 單擊工具條上的CLOSE按鈕,系統彈出一個對話框詢問是否保存對錶的修改,選擇“是”後對話框和CREATE TABLE窗口都被關閉,一個標題為MYTELEBOOK的表出現在DATABASE窗口中,注意到有一個上面畫有鑰匙圖形的小圖標指向NUMBER字段,表明NUMBER是當前這個表的關鍵字段。

PB&ROE2.1.4 定義字段的擴展屬性

接下來我們根據需要來定義表MYTELEBOOK中的一些字段的某些擴展屬性。定義NUMBER字段擴展屬性的過程如下:
1) 鼠標放在NUMBER字段上,單擊鼠標右鍵,然後單擊彈出的菜單的PROPERTIES菜單項,屏幕上彈出一個用來定義字段的擴展屬性的對話框,對於NUMBER字段,我們想要設置的擴展屬性是VALIDATION屬性,也就是設置NUMBER字段的有效性檢查規則,有效性檢查規則的作用是,如果輸入記錄的NUMBER字段的值通不過這個有效性規則檢查時,就拒絕把這條記錄放進表中。
2) 單擊VALIDATION標籤,VALIDATION RULE一欄用來選擇一條有效性規則,因為目前還沒有可用的規則,所以這一欄目前是空的。單擊NEW按鈕,屏幕上彈出一個對話框用來創建一條新規則,在NAME框中輸入新規則的名字為NUMBER-VALID,單擊@NUMBER按鈕,可以發現“@NUMBER”出現在RULE DEFINITION文本框中,它代表字段NUMBER的值,我們接着在這個文本框中輸入文本“>0 and @NUMBER<1000”(圖2-10)。
圖 2-10 圖 2-10
圖 2-10
3) 單擊OK按鈕關閉創建規則對話框,可以發現字段屬性定義對話框的VALIDATION RULE一欄中已經有了我們剛剛定義的規則NUMBER-VALID,選中這條規則,單擊APPLY按鈕後這條規則就成為NUMBER字段的有效性檢查規則。單擊OK按鈕關閉對話框。NUMBER字段的有效性檢查規則就建立好了。可以用鼠標右鍵單擊NUMBER字段,選擇DEFINITION菜單,觀察彈出的對話框中的VALIDATION一欄,可以看到其中出現的就是剛剛定義的規則(圖2-11)。
圖 2-11 圖 2-11
圖 2-11
定義POSTCODE字段擴展屬性的過程如下:
1) 用鼠標右鍵單擊POSTCODE字段,單擊PROPERTIES菜單後打開定義POSTCODE字段擴展屬性的對話框。單擊DISPLAY標籤就可以為POSTCODE字段定義顯示樣式,也就是通過數據窗口等方式進行操作時數據的顯示風格,
2) 單擊NEW按鈕開始定義一個新的顯示風格,在彈出的對話框中給這個顯示樣式起名為POSTCODE-DISPLAY,在格式FORMAT 一欄中輸入“000000”,格式中的“0”是有特殊含義的,它表示不可缺少的一個數字,如果沒有輸入這個數字的話,就會以“0”來補充,因為郵政編碼是固定的六位數,所以這裏定義顯示格式為六個零,這樣就可以規範化地顯示數據。TEST VALUE 欄用來對顯示格式進行測試,例如輸入28後單擊TEST按鈕,可以發現顯示出來的測試值為“000028”,系統自動補充了四個零(圖2-12)
圖 2-12 圖 2-12
圖 2-12
3) 單擊OK按鈕關閉創建顯示風格對話框。可以發現這時定義擴展屬性對話框中的DISPLAY FORMAT一欄中多了一個我們剛剛定義的顯示風格POSTCODE-DISPLAY,選中它,單擊APPLY按鈕把它應用到POSTCODE字段上,最後單擊OK按鈕關閉對話框,就完成了POSTCODE字段顯示風格的設置。
編輯樣式就是用户編輯數據時數據的顯示格式,對輸入時有特殊格式要求的數據定義編輯樣式是一種好的習慣。定義TELEPHONE字段的擴展屬性的過程如下:
1 ) 右鍵單擊TELEPHONE字段後選擇PROPERTIES菜單,在彈出的對話框中選擇EDIT STYLE標籤,
2) 單擊NEW按鈕開始定義編輯樣式,在彈出的對話框的NAME欄中輸入編輯樣式的名字為TELEPHONE-EDIT,STYLE欄中選擇樣式為EDITMASK,即編輯屏蔽風格,利用這種樣式中的特殊字符可以決定在編輯的時候以什麼樣的格式顯示什麼樣的字符,以及什麼樣的輸入可以被接受。電話號碼的樣式一般都是前面是區號,然後是一條短橫線,然後是具體的本地號碼,所以在MASK一欄中輸入如下字符串作為編輯格式“(####)-########”,格式中的括弧和短橫線都會事先顯示在要輸入記錄的相應字段中,事實上觀察對話框的TEST一欄就可以發現已經顯示了括弧和橫線。格式中的“#”代表一個數字,在括弧中有四個“#”,表示最多可以輸入四個數字作為區號。類似地,格式最後的八個“#”表示本地號碼最多可以有八位。作為試驗,在TEST欄的括弧中輸入這樣的一個南京地區的電話號碼是可以的
(3) 單擊OK按鈕關閉創建編輯風格對話框,可以看出在原來的設定擴展屬性對話框中多了我們剛剛創建的編輯樣式TELEPHONE-EDIT,選中它後單擊APPLY按鈕把它應用到TELEPHONE字段上,最後單擊OK按鈕關閉對話框,就完成了TELEPHONE字段編輯樣式的設置。

PB&ROE2.1.5 向表中添加記錄

通過上面的操作我們已經成功地創建了數據庫TELEBOOK和數據庫中的一張表MYTELEBOOK,並且定義了表的字段的基本屬性和一些字段的擴展屬性。這時候的表還只是一個有了結構的空表,接下來要做的事情是往這個剛創建的表中加入一些數據,也就是記錄,以後應用程序操作的對象一般都是表中的數據。
往一個表中加入數據有兩種基本的方法,先介紹第一種方法,添加記錄的過程如下:
1) 單擊工具條上的DATA MANIPULATION(GRID)畫板按鈕,系統彈出了DATA MANIPULATION窗口,注意到在窗口的上部顯示的就是記錄的格式,但每個字段不是用字段本身的名字,而是用字段擴展屬性中的HEADER項,也就是題頭來代表這個字段,這樣做的好處是記錄格式看起來比較直觀清楚。通過DATA MANIPULATION窗口就可以輸入數據到表中。
2) 單擊工具條上的INSER ROW按鈕,窗口上出現一個空行用來輸入一條記錄,回憶前面我們定義了NUMBER字段的有效性檢查規則,要求數據必須在1和1000之間,試着在編號欄中輸入2000,然後用鼠標單擊其它的字段,這時系統會彈出一個對話框告訴我們剛才輸入到編號欄中的數據沒有通過有效性檢查單擊確定後系統把輸入焦點仍舊放在編號欄中讓我們重新輸入一個有效的數據。
3) 輸入編號為1,然後用TAB切換到姓名字段,輸入姓名為“馮飛”,家庭地址輸入為“南京市鳳凰西街220號”,郵政編碼輸入為“210019”,工作單位輸入為“南京市新街口百貨商場”,7984684,目前狀況輸入為“目前在複習英語,準備參加托福考試”,這樣我們就輸入了一條完整的記錄到表中。
4)再次單擊工具條上的INSERT ROW按鈕,窗口上又出現一條空記錄用來輸入數據,用類似的方法依次輸入記錄的各個字段的值依次這樣我們就完成了三條記錄的錄入工作,要注意的是此時輸入的記錄並沒有真正存放到磁盤上去,而是暫時放在緩衝區中,單擊工具條上的SAVE CHANGES按鈕,這樣就把剛才輸入的記錄真正存放到了磁盤上相應的表中
接下來介紹另外的一種數據輸入方法,輸入數據的過程如下:
1) 單擊工具條上的DB ADMINISTRATION畫板按鈕,彈出一個標題為DATABASE ADMINISTRATION的可編輯窗口,在這個窗口中可以輸入SQL語句來往表中添加記錄,不妨在其中輸入一條標準的SQL語句為“INSERT INTO MYTELEBOOK VALUES
(2) 單擊工具欄上的EXECUTE按鈕,系統沒有給出任何的反應,這表示INSERT語句已經提交給數據庫管理系統並被成功地執行,如果輸入的SQL語句有錯的話,比如我們把上面INSERT語句括號中應該是整數的NUMBER項用一個字符串代替,然後單擊工具條上的EXECUTE按鈕,系統會彈出對話框提醒我們剛才輸入的SQL語句有錯,應該修改後再重新提交關閉DATABASE ADMINISTRATION窗口,單擊工具條上的DATA MANIPULATION(GRID)畫板按鈕,彈出的窗口中的有一條記錄就是剛才用SQL語句輸入的記錄
到目前為止,我們成功地創建了一個數據庫和它的一個表,表中有四條記錄,當然你可以用本節介紹的方法往表中添加更多的記錄。接下來將創建POWRBUILDER應用程序不可缺少的組成部分 —— 應用對象。

PB&ROE2.2 創建應用對象

應用對象是PowerBuilder應用程序的基礎,通過它可以設置有關應用程序的全局信息,例如應用程序的名字,程序使用的圖標,程序中文本的字體,應用程序所在的對象庫等各種信息。在以後將詳細介紹如何設置應用程序的這類信息。要記住的很重要的一點是應用對象是PowerBuilder應用程序執行時的入口點。下面我們就開始創建一個新的應用對象。
1)單擊工具條上的APPLICATION畫板按鈕,系統彈出一個標題為APPLICATION的窗口,每次啓動PowerBuilder後系統都會自動打開前一次的應用對象。下面我們將要創建一個新的應用對象。
2) 打開FILE菜單,單擊其中的NEW菜單項,屏幕上彈出一個名為SELECT NEW APPLICATION LIBRARY的對話框,用於設置把應用對象保存到哪個庫文件中。應用程序對象庫實際上是一個特殊格式的文件,用於存放應用程序所用到的各種對象。應用程序本身作為一個對象自然要放到對象庫中。這裏我們創建一個新的對象庫,首先設置對象庫的存放路徑為D:\DATABASE,在文件名一欄中輸入對象庫的名字為TELEPHONE-BOOK,然後單擊保存按鈕。
3)系統又彈出一個名為SAVE APPLICATION的對話框,用於給應用對象自身起一個名字,為方便記憶,同樣給它起名為TELEPHONE-BOOK,對話框下部的註解欄用於輸入有關這個應用對象的一些信息,以後重新打開這個應用對象時可以有一個大概的瞭解。
4)單擊OK按鈕,系統就創建了一個名為TELEPHONE-BOOK的應用對象和它所在的名為TELEPHONE-BOOK.PBL的對象庫。系統彈出一個對話框詢問是否需要由PowerBuilder為我們生成一個應用程序的模板(圖2-20),所謂應用程序的模板就是應用程序基本框架,這個框架中含有一些應用程序可能用到的基本對象,利用這個框架可以更好更快地開發應用程序。當然也可以不用這個模板而直接編寫應用程序,這裏選擇“否”不讓系統生成應用程序的基本框架,而是由我們自己一步步創建應用程序,以使你PowerBuilder應用程序的開發過程有一個更深刻的瞭解。
圖2-20 圖2-20
5)單擊工具條上的LIBRARY畫板按鈕,可以發現創建的應用對象TELEPHONE-BOOK出現在我們剛剛創建的對象庫TELEPHONE-BOOK.PBL中。

PB&ROE2.3 創建第一個窗口

窗口在WINDOWS應用程序中是一個極為重要的概念,它提供了應用程序同用户之間交互的非常直觀的界面,目前許多的WINDOWS下的開發工具都提供了可視化開發窗口對象的方法,使得開發一個窗口對象變得非常容易,PowerBuilder也不例外,下面就開始創建這裏的應用程序中要用到的兩個窗口。
首先來創建第一個窗口對象,創建一個窗口的一般步驟如下:
單擊工具條上的WINDOW畫板按鈕,系統彈出一個題為SELECT WINDOW的對話框,用來選擇當前對象庫中已存在的窗口對象
單擊對話框的NEW按鈕來創建一個新的窗口對象。單擊後屏幕上彈出一個題為WINDOW的窗口,接下來就可以往這個窗口中添加需要的控件了。
單擊PAINTERBAR工具條上的控件畫板按鈕,系統彈出一個方框,其中包含有各種各樣的可用控件(圖2-23),選中其中的一個,在窗口上單擊,就可以把選中的控件放到窗口中。這裏首先從方框中選擇STATICTEXT控件,然後在窗口中單擊,就會發現一個靜態文本框空間就出現在窗口中,再次單擊工具條上的控件畫板按鈕把第二個靜態文本框控件放到窗口中,用類似的方法把一個SINGLE LINE EDIT控件,也就是單行編輯框放到窗口中,最後再把一個COMMAND BUTTON控件,也就是命令按鈕放到窗口中。
圖 2-23 圖 2-23
圖 2-23
為了使窗口更美觀一點,可以對已放入窗口中的控件調整位置和改變一些特性,單擊第一個靜態文本框選中它,然後放到合適的地方,在上面單擊右鍵,在彈出的菜單中選擇PROPERTIES菜單項,系統彈出一個對話框用來設置這個控件的屬性(圖2-24),NAME欄顯示的是控件的名字,這個名字是用在以後編寫的腳本中,系統已經設置了一個缺省的名字,這裏不作修改,接下來的TEXT一欄是用來設置顯示在靜態文本框中的文本,這裏把它改為“個人通訊錄管理系統”,設好後單擊OK按鈕,用類似的方法把調整另外一個靜態編輯框的位置,並把上面的文字改為“請輸入你的使用口令:”,然後激活單行編輯框,調整好它的位置後把鼠標放在它的右邊框上等鼠標變成水平雙箭頭形狀的時候單擊並拖動鼠標,把編輯框拉長一些;最後調整命令按鈕的位置並把上面的標題修改為“OK”。用鼠標右鍵單擊窗口中沒有控件的空白區域,然後在彈出的菜單中選擇PROPERTIES菜單項,在彈出的對話框中把TITLE一欄改為“個人通訊錄”,然後單擊“OK”按鈕關閉對話框。
圖 2-24 圖 2-24
圖 2-24
單擊工具條上的PREVIEW按鈕可以預覽設計好的窗口(圖2-25),窗口的標題就是我們剛在窗口的TITLE屬性中輸入的值。關閉預覽窗口,這樣我們就定義好了第一個窗口對象,需要給它起一個名字,單擊FILE菜單的SAVE菜單項,彈出一個題為SAVE WINDOW的對話框,在WINDOWS一欄中給窗口起一個名字為 TELEPHONE-WINDOW1, 這個明字將用於以後的程序中,輸好後單擊OK按鈕,可以發現窗口的標題已變成剛輸入的名字,到此為止第一個窗口就設計好了。
圖 2-25 圖 2-25
圖 2-25

PB&ROE2.4 創建數據窗口對象

在創建第二個窗口對象之前,我們需要先來創建兩個數據窗口對象。數據窗口對象是PowerBuilder的一大特色,它為我們操作數據庫中的數據提供了一種直觀有效的手段,利用它可以方便地聯結數據庫,以自己喜歡的方式顯示數據庫中的數據以及修改數據庫。下面就開始創建第一個數據窗口對象。
單擊工具條上的DATAWINDOW畫板按鈕,系統彈出一個名為SELECT DATAWINDOW的對話框,用以選擇已存在的數據窗口對象或者創建新的數據窗口對象。
這裏來創建一個新的數據窗口,單擊NEW按鈕,在彈出的NEW DATAWINDOW對話框中有DATA SOURCE 和PRESENTATION STYLE兩個組合框,分別用來選擇要創建的數據窗口的數據來源和顯示樣式,關於這些選項的含義在以後的內容中再詳細介紹,這裏選擇數據源為QUICK SELECT,即簡單查詢型,數據顯示樣式選擇GRID,即網格型。
單擊OK按鈕,系統彈出一個名為QUICK SELECT對話框用於對數據源進行配置,在TABLES欄中選中先前創建的表MYTELEBOOK,這時在COLUMNS欄中顯示出MYTELEBOOK表中的所有的字段,讓我們從這些字段中選擇其中的一些,這樣做是考慮到用户在大多數時候可能只對表中的某些字段感興趣,沒必要在提供給用户的界面上顯示出記錄的所有的字段。目前創建的這個數據窗口是用來瀏覽通訊錄的大致情況,所以只選中NUMBER,NAME TELEPHONE三個字段,選好後在對話框的下部顯示出這三個字段,在每一個字段的下面又有三個選項,單擊NUMBER字段下的SORT選項框,在彈出的下拉框中選擇ASCENDING選項,這表示以後在數據窗口中顯示數據的時候按編號字段從小到大的順序顯示記錄, 以便於查看。其它的選項我們不作改動。
單擊OK按鈕,這樣就為數據窗口設好了數據源,系統彈出的標題為DATAWINDOW的窗口中顯示出的三個字段就是剛才選中的字段,可以看出DATAWINDOW窗口被劃分成了四個帶狀區域,這四個區域的大小和內容都是可以設計的,在HEADER區域中系統已經自動放好的就是我們為每個字段設定的題頭,HEADER中的內容以後將顯示在數據窗口中。單擊左邊工具條上的PREVIEW預覽按鈕,窗口中顯示出預覽的結果,數據庫中的數據也自動按編號字段從小到大的順序顯示在網格中。
接着為設計好的數據窗口對象起一個名字,雙擊DATAWINDOW窗口的左上角,彈出一個對話框詢問是否保存設計結果,選擇“是”後出現SAVE DATAWINDOW對話框,在DATAWINDOWS一欄中給設計好的數據窗口起名為TELE-DATAWINDOW1,確定在APPLICATION LIBRARIES選中的是TELEPHONE-BOOK 1.PBL ,然後單擊OK按鈕,就完成了第一個數據窗口對象的創建。
再次單擊POWERBAR工具條上的DATAWINDOW畫板按鈕,來創建第二個數據窗口對象,這個數據窗口用來顯示在第一個數據窗口中選中的某個記錄的詳細信息。類似地,在彈出的對話框中選擇NEW按鈕,在NEW DATAWINDOW對話框中數據源選為SQL SELECT,即標準的SQL查詢方式,數據顯示方式這次設置為FREEFORM,即自由表格形式,它的特點是數據窗口中顯示的每條記錄的字段縱向排列,看起來比較清楚,選好後單擊OK按鈕,接下來彈出的對話框中同樣選中MYTELEBOOK表後單擊OPEN按鈕,窗口中顯示出表的所有字段,這次選中它的所有字段,可以發現在窗口下部的工作區中顯示出自動生成的SQL語句,單擊下部的SORT標籤,單擊並拖動NUMBER字段到右邊的方框中,旁邊出現的複選框表示已經把NUMBER字段按上升排序。單擊DESIGN菜單,選中其中的RETRIEVIAL ARGUMENTS菜單項,彈出的對話框用來定義SQL 語句的搜索參數(圖2-31),在NAME欄中給參數起名為NUMBER-SEARCH,TYPE就選擇為NUMBER類型,然後單擊OK按鈕,就定義好了搜索參數。單擊窗口下部的WHERE標籤,單擊COLUMN欄後選擇NUMBER字段,OPERATOR欄就選擇“=”號,VALUE欄中輸入冒號加剛才定義的搜索參數NUMBER-SEARCH,然後單擊PAINTERBAR工具條上的SELECT畫板按鈕,就定義好了數據窗口的數據源的具體格式。
單擊左邊PAINTER BAR工具條上的PREVIEW按鈕,彈出一個對話框用來輸入剛才定義的搜索參數的值,這裏不妨輸入1,確定後窗口中就顯示出表TELEBOOK中的NUMBER的值為1的記錄。選擇PAINTERBAR工具條上的EXIT按鈕,彈出的對話框詢問是否保存數據窗口,單擊“是”後,在彈出的對話框中給數據窗口起名為“TELE-DATAWINDOW2”,確定在APPLICATION LIBRARIES選中的是TELEPHONE-BOOK 1. PBL對象庫,然後單擊OK按鈕,就完成了第二個數據窗口對象的創建。

PB&ROE2.5 創建第二個窗口對象

在創建了兩個數據窗口對象後我們來創建第二個窗口,把數據窗口對象應用到窗口中去。
單擊POWERBAR工具條上的WINDOW畫板按鈕,在對話框中選擇NEW按鈕來定義一個新的窗口。
單擊PAINTERBAR工具條上的控件畫板按鈕,在彈出的方框中選擇DATAWINDOW控件,再在窗口中單擊把它放到窗口中,這裏要提醒一點的是這裏的DATAWINDOW控件與前面定義的數據窗口對象是兩個不同的概念,這裏的DATAWINDOW控件相當於一個容器,是用來存放數據窗口對象的。這裏的數據窗口控件的作用是顯示出數據庫中所有記錄的主要信息,所以可能在一個窗口中顯示不,在彈出的菜單中選擇PROPERTIES菜單項,在彈出 的對話框中選中VSCROLL BAR複選框,就為數據窗口控件在以後顯示數據的時候提供了一個垂直滾動條,以便可以利用滾動條看到數據窗口中的所有的記錄。
用和放入第一個數據窗口控件類似的方法在窗口中放入第二個數據窗口控件,然後再在窗口中放入四個COMMANDBUTTON控件,
鼠標右鍵單擊激活窗口中的第一個DATAWINDOW控件,在彈出的菜單中選擇PROPERTIES菜單項,彈出DATAWINDOW對話框,系統已經自動為這個控件起名為DW-1,這裏就用這個名字,單擊BROWSE按鈕開始為控件定義它所聯結的數據窗口對象,在彈出的SELECT DATAWINDOW對話框中選擇數據窗口為TELE-DATAWINDOW1,然後單擊OK按鈕,可以發現在DATAWINDOW對話框的DATAWINDOW OBJECT NAME一欄中出現了剛選中的數據窗口對象。
單擊OK按鈕,第一個數據窗口控件中顯示的就是它所聯結的數據窗口對象的結構。
用類似的方法為第二個數據窗口控件聯結剛才定義的數據窗口對象TELE-DATAWINDOW2,聯結好之後把四個命令按鈕控件上的文字分別改為“插入”,“刪除”,“更新”和“關閉”,而它們的名字則分別修改為“CB-INSERT”,“CB-DELETE”,“CB-UPDATE”,“CB-COLSE”。
接下來調整窗口的大小和窗口上的每個控件的位置和大小,要注意的是要使得數據窗口控件中的數據窗口對象的每一個字段都能在控件中看得到。調整好之後可以單擊PAINTERBAR工具條上的PREVIEW按鈕預覽一下窗口的樣子。設計好窗口以後單擊PAINTERBAR工具條上的SAVE按鈕,彈出SAVE WINDOW對話框用來給窗口起一個名字,給它起名為TELEPHONE-WINDOW2,確定對話框下部的對象庫是TELEBOOK .PBL 後單擊OK 關閉對話框。這樣就定義好了第二個窗口對象。

PB&ROE2.6 建立應用程序

到目前為止,本程序中用到的對象都定義好了,但程序還不能運行,因為我們還沒有為程序編寫代碼,這種代碼在PowerBuilder中被稱為腳本,PowerBuilder是一種基於面向對象的事件驅動機制開發工具,所以腳本也是針對對象的事件來編寫,接下來就為應用程序編寫腳本。 PowerBuilder應用程序的特點是從應用對象開始執行程序,所以我們首先要做的是為應用對象的打開事件編寫代碼,單擊POWERBAR工具條上的APPLICATION畫板按鈕打開應用對象,然後單擊PAINTERBAR工具條上的SCRIPT畫板按鈕,系統彈出SCRIPT對話框用來為應用對象編寫腳本,從SELECT EVENT下拉列表框中選擇OPEN事件,然後在工作區中輸入如下腳本:
SQLCA.DBMS=PROFILESTRING("PB.INI","DATABASE","DBMS","")
SQLCA.DBPRAM=PROFILESTRING("PB.INI","DATABSE","DBPRAM","")
OPEN(TELEPHONE-WINDOW1)
解釋這段腳本前要先介紹事務對象的概念,這裏的SQLCA就是一個系統自動提供的缺省事物對象變量,SQLCA是一個全局變量,可以用在所有的窗口對象中。事物對象的作用是為聯結數據庫提供有關的信息,以便可以從數據庫中獲取需要的數據。這段腳本所做的工作是在應用對象啓動後首先從POWERBUIDER中存放與數據庫有關信息的文件PB . INI中取得需要的值放入事物對象變量中,然後打開TELEPHONE-WINDOW1窗口,以便用户從登錄窗口輸入正確的密碼後可以進入到個人通訊錄管理系統。這裏就為應用對象編寫這三行代碼。
單擊POWERBAR工具條上的WINDOW畫板按鈕,選擇打開TELEPHONE-WINDOW1,我們開始為它編寫腳本,右鍵單擊窗口上的OK按鈕,首先在菜單中選擇PROPERTIES菜單項來修改OK控件的一個屬性,在彈出的對話框中有一個DEFAULT複選框,我們選中它(圖2-36),這樣在以後程序運行的時候按回車鍵的效果和單擊OK控件就一樣了,單擊OK關閉對話框,然後再次右鍵單擊窗口上的OK按鈕,在菜單中選擇SCRIPT菜單項開始為這個命令按鈕的單擊事件編寫腳本,觀察窗口的標題確定目前選擇的是命令按鈕的CLICK事件後在工作區中輸入以下的腳本:
if upper(trim(sle_1.text))="mypassword" then
open (telephone_window2)
close(telephone_window1)
else
sle_1.setfocus()
end if
這段腳本所做的工作是當用户在打開的登錄窗口中單擊OK按鈕的時候判斷單行編輯框中的字符串在去掉前後的空格符和整個轉換成大寫字符後是否為字符串“MYPASSWORD”,如果是的就打開我們在前面定義的第二個,也就是用來對個人通訊錄數據庫進行操作的窗口,然後再關閉登錄窗口, 如果輸入的字符串與設定的字符串“MYPASSWORD”不符的話就表示用户不能對通訊錄數據庫進行訪問,就把輸入焦點切換到編輯框讓用户重新輸入正確的口令,這裏我們把口令設成了“MYPASSWORD”,在實際應用中你可以換成一個自己的口令,這樣可以保證自己的數據庫的安全性。

PB&ROE市盈率PE

PE是簡潔有效的估值方法,其核心在於e 的確定。PE=p/e,即價格與每股收益的比值。從直觀上看,如果公司未來若干年每股收益為恆定值,那麼PE 值代表了公司保持恆定盈利水平的存在年限。這有點像實業投資中回收期的概念,只是忽略了資金的時間價值。而實際上保持恆定的e 幾乎是不可能的,e 的變動往往取決於宏觀經濟和企業的生存週期所決定的波動週期。所以在運用PE 值的時候,e 的確定顯得尤為重要,由此也衍生出具有不同含義的PE 值。E 有兩個方面,一個是歷史的e,另一個是預測的e。對於歷史的e 來説,可以用不同e 的時點值,可以用移動平均值,也可以用動態年度值,這取決於想要表達的內容。對於預測的e 來説,預測的準確性尤為重要,在實際市場中,e 的變動趨勢對股票投資往往具有決定性的影響。<br>

PB&ROE市淨率PB

(股價/每股淨資)

PB&ROE淨資產收益率ROE

PB &ROE適合於週期的極值判斷。對於股票投資來説,準確預測e 是非常重要的,e 的變動趨勢往往決定了股價是上行還是下行。但股價上升或下降到多少是合理的呢? PB&ROE 可以給出一個判斷極值的方法。比如,對於一個有良好歷史ROE 的公司,在業務前景尚可的情況下,PB 值低於1就有可能是被低估的。如果公司的盈利前景較穩定,沒有表現出明顯的增長性特徵,公司的PB 值顯著高於行業(公司歷史)的最高PB 值,股價觸頂的可能性就比較大。這裏提到的週期有三個概念:市場的波動週期、股價的變動週期和週期性行業的變動週期。這裏的PB 值也包括三種:整個市場的總體PB 值水平、單一股票的PB 值水平和週期性行業的PB 值變動。當然,PB 值有效應用的前提是合理評估資產價值。<br> 提高負債比率可以擴大公司創造利潤的資源的規模,擴大負債有提高ROE 的效果。所以在運用PB &ROE 估值的時候需考慮償債風險。

PB&ROE絕對估值法DCF

DCF 是一套很嚴謹的估值方法,是一種絕對定價方法,想得出準確的DCF值,需要對公司未來發展情況有清晰的瞭解。得出DCF 值的過程就是判斷公司未來發展的過程。所以DCF 估值的過程也很重要。就準確判斷企業的未來發展來説,判斷成熟穩定的公司相對容易一些,處於擴張期的企業未來發展的不確定性較大,準確判斷較為困難。再加上DCF 值本身對參數的變動很敏感,使DCF 值的可變性很大。但在得出DCF 值的過程中,會反映研究員對企業未來發展的判斷,並在此基礎上假設。有了DCF 的估值過程和結果,以後如果假設有變動,即可通過修改參數得到新的估值。

PB&ROE舉例

2005年8月,寶鋼股份跌破淨資產,8月25日,寶鋼集團宣佈斥資20億增持股票,並承諾自2005年10月14日開始的6個月內,如公司的股票價格低於每股4.53元,寶鋼集團將再投入累計不超過人民幣20億元的資金,通過交易所增持公司的股份,除非公司的股票價格不低於每股4.53元或上述資金用盡。據海通證券策略分析師吳一萍介紹,寶鋼大股東於2005年底到2006年初對寶鋼股份的增持,其增持價格對應的PB均在1倍左右。