熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PB編程 >> 正文

PowerBuilder的數據窗口[1]

2013-11-23 17:28:38  來源: PB編程 

  PowerBuilder是Powersoft公司(已被Sybase收購)推出的基於客戶機/服務器體系結構的強有力的開發工具自問世以來深受開發人員的好評Datawindow是PB中獲取專利技術的控件它對數據的處理方法相當簡潔數據窗口能處理各種顯示格式進行報表打印對復雜的嵌套報表同樣處理自如

  數據窗口的處理機制首先是根據所需的顯示方式將數據源表中的域設計好在運行時將所要的數據從數據庫服務器上下載到客戶機上處理然後將更改後的數據進行提交(Commit)或回滾(Rollback)這種處理機制大大降低了數據的傳輸量減輕了網絡的負擔也提高了數據的處理速度充分利用數據窗口的特點可達到事半功倍的效果但是如果有些問題不加注意就會出現意想不到的錯誤

  幾個函數

  AcceptText()

  AcceptText()函數的功能是將數據窗口當前編輯的數據轉移到數據窗口的緩沖區中程序通常在關閉窗口及其他情況下判斷是否改變了當前數據如果已改變數據應提示用戶保存這就杜絕了用戶在偶然的情況下丟失更改數據的現象一般用ModifiedCount和DeletedCount函數判斷數據是否改變

  PB在處理數據窗口時對應開辟了四個數據緩沖區分別為PrimaryBufferDeletedBufferFilterBufferSortBuffer其中DeletedBuffer存放被刪除的記錄FilterBuffer存放被過濾的記錄SortBuffer存放排序的記錄PrimaryBuffer存放其他記錄函數ModifiedCount從PrimaryandFilterBuffers中取數據進行判斷DeletedCount則從DeletedBuffer中取數據進行判斷

  PB在接受用戶輸入時設置了一個浮動編輯框用戶輸入或更改的內容並不直接進入PrimaryBuffer而是在用戶輸入完後進入下一個域時PB首先對它進行有效性檢測通過後轉入PrimaryBuffer如果只改變一項數據就關閉窗口則相關數據並沒有進入PrimaryBuffer系統判斷ModifiedCount()為所以不會提示保存數據用AcceptText()函數就可以將浮動編輯框中的數據轉入緩沖區中在相應的程序段前加上Accepttext()問題就解決了

  FindRequired()

  在實際應用中經常需要限制表中一些域的屬性例如銀行客戶表中賬號就不能為Null在提交數據前檢查是否將必須輸入的數據都賦值是一個很好的編程習慣FindRequired函數可以解決此問題它通過對數據窗口中數據的檢查將數據窗口中域的屬性為Required而並未賦值的域(包括相應的行列)找出來

  為了利用此函數在構造數據窗口時就要注意將表中具有NOTNULL屬性的數據列設為Required(方法為在數據窗口相應域上按鼠標右鍵或雙擊左鍵彈出ColumnObject框選Edit頁將Required前的框選中按Ok鈕即可)在相應事件中插入下列程序

  longror=//行數賦

  integercolnbr=//列數賦

  stringcolname//用來存儲列名

  mle_requiredText=

  //窗口中的多行編輯控件

  用來存儲找到域的行列號

  DOWHILErow<>

  colnbr++//繼續找下一列

  IFdw_FindRequired(Primary!rowcolnbrcolnameFALSE)

  <THENEXIT

  //若程序出錯則返回

  IFrow<>THEN

  mle_requiredText=mle_requiredText+String(row)+

  ~t&+colname+~r~n//保存查出的行列號

  ENDIF

  //當ROW返回為則意味再沒有查出跳出

[]  []  


From:http://tw.wingwit.com/Article/program/PB/201311/24651.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.