关于PB开发B/S结构的系统的例子

sunsatan 2002-06-03 10:04:20
水可以给我一份用PB做的关于开发B/S结构系统的例子,实在一点经验也没有,难死了,如果能够提供我可以在多给一些分。(目前只能在弄一个帖子给分)
sunsatan@163.com
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
海洋‘s 2002-06-05
  • 打赏
  • 举报
回复
目前还没有做过,等待学习...
weinfo 2002-06-05
  • 打赏
  • 举报
回复
帖一把。
jackygan 2002-06-03
  • 打赏
  • 举报
回复
我主页上也有关于这方面的例子,有时间可以去看看:
http://pbcorner.yeah.net/ PB程序员一角
jackygan 2002-06-03
  • 打赏
  • 举报
回复
以下一这篇文章不知道是否适你:
  Powersoft的Web.PB技朮可以將分布式PowerBuilder的客戶端應用分布到Web服務器上﹐由Web服務器調用PowerBuilder應用。用戶可以用Web□PB技朮實現完全瘦客戶機的PB Web應用。

  1.Web應用的執行過程

  瀏覽器訪問Web服務器﹐向Web服務器提出請求﹐服務器給瀏覽器返回HTML文檔。如果HTML頁面中嵌入了通過〈A〉元素鏈接到Web□PB的超級鏈接﹐或HTML頁面中嵌入了通過〈FORM〉元素對Web□PB的調用﹐則Web服務器調用Web□PB建立與PowerBuilder服務器應用的連接﹐向PowerBuilder服務器應用提出請求﹐PowerBuilder服務器應用處理請求。如有數據庫訪問的請求﹐則PowerBuilder服務器應用訪問數據庫服務器。PowerBuilder服務器應用將處理結果以HTML文檔格式返回到Web服務器。Web服務器將PowerBuilder服務器應用的處理結果以HTML文檔格式發布給瀏覽器。

  2.應用實例

  本人已將利用Web.PB技朮開發的學校管理查詢系統應用于實際應用中。下面通過簡單的例子說明如何利用Web.PB技朮實現瘦客戶機的Web應用。

  2.1. 運行環境

  服務器為HP NetServer 5/133 LC﹐內裝Windows NT 4.0﹑SQL Server 6.5﹑IIS 4□0和PowerBuilder 6.0。

  2.2. 配置

  拷貝Web□PB文件﹐將PBISA60□DLL拷入\scripts虛擬目錄下﹐拷貝PBWEB□INI文件到WINNT目錄下。用記事本編輯\Winnt\System32\Drivers\Etc\目錄下的Hosts和Services文件﹐在Hosts文件中填加一行﹕202.194.168.88 server─sls﹐在Services文件中填加一行﹕pb─sls─server 10099/tcp。

  2.3. 創建PowerBuilder服務器應用

  2.3.1. 創建服務器應用及應用對象

  啟動PowerBuilder﹐點取PowerBar上Application畫筆﹐進入Application工作區。從Application工作區上的PainterBar點取New﹐創建一個新的PowerBuilder應用sls.pbl。按下“保存”按鈕﹐彈出“Save Application”對話框﹐定義Application對象“sls”﹐按下“OK”按鈕。彈出“Application”對話框﹐選擇對話框中“NO”按鈕﹐應用sls.pbl創建完成。修改該應用對象的Library屬性﹐在Application工作區中點擊PainterBar上的Property工具﹐彈出“Application”對話框﹐選擇“Libraries”。定義應用的可搜索路徑﹐填加“c:\program Files\Powersoft\PB6\IT\webpb.pbl”﹐按下“OK”按鈕﹐服務器應用及應用對象創建完畢。

  2.3.2. 創建PowerBuilder服務器應用的用戶界面

  點取PowerBar上Windows畫筆﹐彈出“Select Window”窗口﹐點取“New”按鈕﹐進入新創建的窗口的工作區。在該窗口上放置兩個命令按鈕cb─1﹑cb─2和一個靜態文本st─1﹐在兩個命令按鈕cb─1﹑cb─2上的文本分別改為“啟動服務器應用”﹑“關閉服務器應用”。

  定義窗口上transport類型實例變量mytransport﹐用于監聽Web.PB的調用請求﹕

  transport mytransport

  為cb─1的Clicked事件編程如下﹕

transport mytransport

mytransport=CREATE transport

mytransport.driver=〞winsock〞

mytransport.location=〞202.194.168.88〞

mytransport.application=〞10099〞

mytransport.Listen()

IF (mytransport.ErrCode<>0) THEN

   MessageBox(〞錯誤信息〞﹐〞服務器應用不能啟動監聽~r~n〞+〞錯誤號為﹕〞+string(mytransport.ErrCode)+〞~r~n〞+〞錯誤信息為﹕〞+mytransport.ErrText)

  Close(this.getparent())

   return

  ELSE

  St─1.text=〞服務器正在運行〞

  END IF

  為cb─2的Clicked事件編程如下﹕

  Close(Parent)

  上述工作完成后﹐選取選單項File下的Save選單項﹐彈出“Save Window”對話框﹐定義窗口名為w─sls─server﹐然后點擊“OK”按鈕﹐保存窗口。這個窗口對象將是應用服務器中第一個打開的窗口。為應用對象sls的open事件編寫如下程序﹕

  open(w─sls─server)

  2.3.3. 創建PowerBuilder服務器應用中的用戶對象

  進入PowerBuilder工作區﹐點取PowerBar上User Object畫筆﹐彈出“Select User Object”對話框。選擇“New”按鈕﹐彈出“New User Object”對話框。選擇Class類Custom用戶對象﹐單擊“OK”按鈕﹐進入到用戶對象工作區。選取選單項File下的Save選單項﹐彈出“Save User Object”對話框﹐輸入“u─sls”﹐然后點擊“OK”按鈕﹐保存該用戶對象。

  為用戶對象u─sls的constructor事件編寫處理程序﹕

  transaction mytransaction

  mytransaction=CREATE transaction

  mytransaction.dbms=〞odbc〞

  mytransaction.dbparm=〞ConnectString=′DSN=Powersoft Demo DB V6;〞&+〞UID=dba;PWD=sql′ 〞

  CONNECT USING mytransaction;   

  Sqlca.dbms=〞odbc〞

  Sqlca.dbparm=〞ConnectString=′DSN=Powersoft Webpb;UID=dba;PWD=sql′〞

  CONNECT USING sqlca;

  IF sqlca.sqlcode<>0 THEN

     MessageBox(〞Sqlca Error:〞+String(sqlca.sqldbcode),

       sqlca.SqlErrText)

  END IF

  為該用戶對象的destructor事件編寫處理程序﹕

  transaction mytransaction

  DISCONNECT USING mytransaction;

  DISCONNECT USING SQLCA;

  DESTROY mytransaction

  這樣﹐當Web.PB調用PowerBuilder服務器應用中用戶對象時先建立了和數據庫的連接。當調用完成時關閉連接。

  在用戶對象u─sls的工作區中﹐選取選單項Declare下的Instance Variables選單項﹐定義用戶對象上的實例變量﹐輸入﹕

  u─html─form my─html─form

  u─session my─session

  u─transaction my─transaction

  integer ii─count

  datastore mydatastore

  按下“OK”按鈕﹐返回用戶對象工作區。

  創建用戶對象函數在查詢時所需的數據窗口對象dw─rsda(假定已創建了Powersoft Demo DB V6庫rsda(bh,xm,xb,bm,…)表)﹐進入PowerBuilder工作區。點取PowerBar上Data Window畫筆﹐彈出“Select DataWindow”對話框。點擊“New”按鈕﹐彈出“New DataWindow”對話框﹐在“DataSource”選擇框中選擇Quick Select﹐“Presentation Style”選擇框中選擇Grid。點擊“OK”按鈕﹐彈出“Quick Select”對話框﹐選取表rsda和表中相應的列(bh,xm,xb,bm)。按下“OK”按鈕﹐進入數據窗口工作區﹐存此數據窗口為“dw─rsda”。

  打開已創建好的用戶對象u─sls。在用戶對象工作區點取選單項Declare下的“User Object Functions”選單項﹐彈出“Select Function in User Object”對話框。單擊“New”按鈕﹐彈出“New Function”對話框。在此對話框中定義函數的參數及返回值。定義函數名為﹕f─rsda﹐函數返回值為﹕string。點擊“OK”按鈕﹐進入函數編程工作區﹐編寫程序如下﹕

  string return─html

  long ll─dw─row

  transaction mytransaction

  datastore datastore─rsda

  datastore─rsda=CREATE datastore

  datastore─rsda.dataobject=〞dw─rsda〞

  datastore─rsda.settransobject(mytransaction)

  ll─dw─row=datastore─rsda.retrieve()

  IF LL─dw─row>=1 THEN

  Return─html=return─html+

  datastore─rsda.object.datawindow.data.htmltable

  ELSE

  Return─html=〞沒有檢索到數據〞

  END IF

  RETURN return─html

  這個函數的主要作用是調用數據窗口dw─rsda進行數據查詢﹐將查詢結果以HTML的語法格式返回。Web服務器將得到這個返回參數﹐并發布給調用函數的瀏覽器客戶。

  2.4. 用Web.PB Wizard創建訪問Web.PB的HTML文件

  在PowerBuilder環境下﹐點取PowerBar上的Web.PB Wizard畫筆。輸入或瀏覽選擇Web.PB要訪問的PowerBuilder服務器應用名后﹐點擊“Next”按鈕。在彈出的窗口中選擇所需的用戶對象u─sls﹐然后點擊“Next”﹐在彈出的窗口中選擇所需的用戶對象函數f─rsda。然后點擊“Next”﹐在彈出的窗口中分別作如下的選擇﹕在Select the program interface框中選擇“Internet Server API(ISAPI)”﹐在Enter the URL path for CGI program框中輸入“/scripts”﹐在Select the HTML style框中選擇“Anchor”。然后點擊“Next”按鈕﹐在彈出的窗口中分別作如下的選擇﹕在位置框中輸入“C:\winnt\pbweb.ini”﹐在Enter Server Alias Section框中輸入“Internet”﹐在Driver框中選擇“Winsock”﹐在Application框中輸入“10099”﹐在Location框中輸入“202□194□168□88”。然后點擊“Next”按鈕﹐在彈出的窗口中﹐在HERF text框中輸入“人事檔案查詢”﹐在Specity location and name of HTML file框中輸入“c:\intepub\wwwroot\rsdaweb.htm”。然后點擊“Next”按鈕﹐在彈出的窗口中點擊“Finish”。到此為止﹐能夠訪問PowerBuilder服務器應用中用戶對象u─sls上函數f─rsda的HTML頁面已經完成。

  2.5. 啟動服務器應用

  在PowerBuilder環境下﹐按下PowerBar上的Run畫筆﹐應用打開w─sls─server窗口﹐點取“啟動服務器應用”按鈕。在靜態文本框中顯示“服務器正在運行”﹐使服務器應用能夠監聽Web.PB的調用。

  2.6. 啟動瀏覽器瀏覽

  打開IE4.0﹐在Location框中輸入﹕http://202.194.168.88/rsdaweb.htm﹐然后再在“人事檔案查詢”上單擊﹐則在頁面中按照PowerBuilder的Data Window格式顯示出rsda表中的記錄。

  摘自《賽迪網》 孫連三/文




yuanbo824 2002-06-03
  • 打赏
  • 举报
回复
介不介意也发给我一份,谢谢
yuanbo824@sina.com

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧