




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PB培訓教程(提高篇)PB培訓教程(提高篇)1前言本教程的內容第一章PB的發展第二章數據窗口第三章調試及跟蹤第四章編碼規范第五章輔助工具本教程適合的人群對PB有基礎概念有一定的開發經驗樂于分享、學習、提高前言本教程的內容2第一章PB的發展本章內容PB6新特性PB7新特性PB8新特性PB9新特性PB10新特性第一章PB的發展本章內容3PB的發展-PB6新特性PB6新特性整體性能增強Internet增強分布式計算增強開發效率的增強擴展的多種語言支持交叉平臺支持PowerScript語言增強數據窗口增強數據庫連接增強OLE增強應用程序發行方面的增強其他增強參見《PowerBuilder6.0開發人員指南》PB的發展-PB6新特性PB6新特性4PB的發展-PB7新特性PB7新特性嶄新的用戶界面和開發方法組件開發和部署方面的新特性數據連接方面的新特性其他新穎的特性參見《PowerBuilder7參考手冊》PB的發展-PB7新特性PB7新特性5PB的發展-PB8新特性PB8新特性用戶界面Web功能數據窗口新特性EAServer的集成數據庫連接PowerScript新特性進一步提高的易用性和其他增強特性參見《PowerBuilder8參考手冊》PB的發展-PB8新特性PB8新特性6PB的發展-PB9新特性PB9新特性先進的4GLPLUS基礎多樣的適用性利用集成開發與設計獲得優異的成果不斷增加的強大功能參見《創造最佳的開發環境-SybasePowerBuilder9.0》PB的發展-PB9新特性PB9新特性7PB的發展-PB10新特性PB10新特性集成PowerDesignerXMLWebDataWindowDataWindow.NETUnicodesupport新的控件各式各樣的變化數據連接的改變參見PowerBuilder10新特性PB的發展-PB10新特性PB10新特性8第二章數據窗口本章內容常見問題函數和事件緩沖區狀態位并發控制數據拷貝小技巧第二章數據窗口本章內容9數據窗口-常見問題數據窗口-常見問題10數據窗口-函數和事件DataWindowAcceptTextDeleteRowClickedRowcountDoubleClikcedGetItemDateetcGetRowInsertRowConstructorResetRetrieveSetItemSortUpdate……EditChangedErrorItemChangedSQLPreview……數據窗口-函數和事件DataWindowAcceptText11數據窗口-緩沖區1存放填充窗口中DataWindow控件中數據的,調用DataWindow的Retrieve()函數和InsertRow()函數可以將數據填入這個緩沖區中
存儲的是從OriginalBuffer使用Filter()函數過濾到PrimaryBuffer中后剩余的記錄
保存的是用DeleteRow()函數從PrimaryBuffer中刪除的記錄存儲的是DataWindow最初執行retrieve()函數時得到的全部記錄DataWindow主緩沖區PrimaryBuffer過濾緩沖區FilterBuffer刪除緩沖區Deletebuffer原始緩沖區OriginalBufferFilterDeleteRowInsertRowRetrieveRetrieveDataWindow有四個緩沖區數據窗口-緩沖區1存放填充窗口中DataWindow控件中數12數據窗口-緩沖區2dw_1.object.xh[1]獲取數據窗口的主緩沖區的第一行的xh列的值dw_1.SetItem(1,’ghdw’,’浙江聯眾’)為數據窗口主緩沖區的第一行的ghdw列賦值dw_1.object.xh.filter[1]獲取數據窗口過濾緩沖區的第一行的xh列的值dw_1.object.data.primary.current訪問主緩沖區dw_1.object.data.primary.original訪問原始緩沖區dw_1.object.data.filter.current訪問過濾緩沖區dw_1.object.data.delete.current訪問刪除緩沖區緩沖區的訪問數據窗口-緩沖區2dw_1.object.xh[1]緩沖區的13數據窗口-緩沖區3函數描述Retrieve將數據從數據庫檢索到主緩沖區、原始值緩沖區Update訪問原始值緩沖區、主緩沖區和刪除緩沖區InsertRow在主緩沖區中插入一行數據DeleteRow從主緩沖區刪除一行數據,并將數據移動到刪除緩沖區Filter把數據從主緩沖區移到過濾緩沖區Reset把所有緩沖區中的全部數據行清除RowsMove把數據從一個緩沖區移到另一個緩沖區RowsCopy把數據從一個緩沖區復制到另一個緩沖區RowCount返回主緩沖區中的數據行的數目ModifiedCount返回數據窗口中(包括過濾緩沖區和主緩沖區)修改的數據行數FilteredCount返回過濾緩沖區中的數據行的數目DeletedCount返回刪除緩沖區中的數據行的數目Resetupdate清除數據窗口的主緩沖區、過濾緩沖區的更新標志,并清除刪除緩沖區函數使用與緩沖區的變化數據窗口-緩沖區3函數描述Retrieve將數據14Demo1Demo1演示DataWindow的四個緩存區DEMODemo1Demo1DEMO15數據窗口-狀態位1數據窗口的四種狀態位
NotModified
該行或行的值為查詢所得,沒有發生改變
DataModified
該行或列的值為查詢所得,發生了改變
New
該行或列為一插入的新行,數據沒有發生改變(數據為空或缺省值)
NewModified
該行或列為一插入的新行,數據發生改變,改變是通過用戶鍵盤輸入或調用了SetItem()函數
數據窗口-狀態位1數據窗口的四種狀態位16數據窗口-狀態位2獲取數據窗口的行的狀態 GetItemStatus(row,column,Dwbuffer) 返回值:枚舉類型dwItemStatus New! NewModified! NotModified! DataModified!
例:下面的代碼返回主緩沖區第一行的ghdw列的狀態 DwItemStatuesl_status l_status=dw_1.GetItemStatus(1,0,Primary!)
數據窗口-狀態位2獲取數據窗口的行的狀態17數據窗口-狀態位3設置數據窗口的狀態位 SetItemStatus(row,column,Dwbuffer,status)
例:下面的代碼設置主緩沖區第一行的ghdw列的狀態為NotModified!
dw_1.SetItemStatus(1,’ghdw’,Primary!,NotModified!)
注:并不是所有的狀態都可以設置成功!滿足下面規則數據窗口-狀態位3設置數據窗口的狀態位18Demo2Demo2演示DataWindow的四種狀態位DEMODemo2Demo2DEMO19數據窗口-并發控制1并發控制
指多用戶在同一時間對相同數據同時訪問的能力,一般的關系數據庫都具有并發控制的能力,PB中用DataWindow的設置來進行并發控制
并發控制區域數據窗口-并發控制1并發控制并發控制區域20數據窗口-并發控制2WhereClauseforUpdate/Delete
1>選項“KeyColumns”
比較更新前后Table的關鍵字是否發生了變化,即當前數據庫中關鍵字的實際值和最初查詢的值做比較,如果沒有改變,則可以更新,反之不能更新
因為關鍵字xh=1沒有發生變化,Where條件成立,更新成功!但沒有達到并發控制的目的!
示例:修改序號為1的入庫單的金額改為3000(原金額為2000)Updatewz_rkdSetje=3000wherexh=1;數據窗口-并發控制2WhereClauseforUpd21數據窗口-并發控制3WhereClauseforUpdate/Delete2>選項“KeyandUpdateableColumn”
比較更新前后Table的關鍵字和可修改(更新)的列值是否發生了變化,如果沒有一項發生改變,更新成功;反之,若數據庫中當前值中若任一項與數據窗口最初檢索出的值不一致,則更新失敗
示例:修改序號為1的入庫單的金額改為3000(原金額為2000,假設所有列都是可更新的)Updatewz_rkdSetje=3000
wherexh=1andfsdm=‘采購入庫’andghdw=‘浙江聯眾’andje=2000andbz=‘’;數據窗口-并發控制3WhereClauseforUpd22數據窗口-并發控制4WhereClauseforUpdate/Delete2>選項“KeyandUpdateableColumn”
上例中,假設在A用戶修改的同時,B用戶將可修改列之一je的值由2000變為了的2500,where條件不成立,因此更新失敗,并彈出出錯信息如下數據窗口-并發控制4WhereClauseforUpd23數據窗口-并發控制5WhereClauseforUpdate/Delete
3>選項“KeyandModifiedColumns”
比較更新前后Table的關鍵字和要修改(更新)的列值是否發生了變化,如果沒有改變,更新成功,反之更新失敗。對于本例,即判斷關鍵字xh和將要修改字段je是否發生變化 上例中可修改(更新)列之一je的值經修改存盤后,已由2000變成了當前的2500,where條件不成立,因此更新失敗,但是,如果改變了其他字段的值,比如ghdw,此更新能夠成功示例:修改序號為1的入庫單的金額改為3000(原金額為2000)Updatewz_rkdSetje=3000wherexh=1andje=2000;數據窗口-并發控制5WhereClauseforUpd24數據窗口-并發控制6并發控制總結KeyColumns該選項在控制數據完整性方面最弱,它所允許的并發操作是最多的,所禁止的并發操作發生的可能性非常小,只有當主鍵被更改后才起并發控制作用,當一條記錄的關鍵字改變了才進行控制,這顯然沒有多大意義。實際上這種方法一般只在單機版的應用程序中使用,而在C/S模式中是很少使用的KeyandUpdateableColumns該選項是PB的默認選項,控制最為嚴格,可以實現最安全的并發控制,充分保證數據的完整性,但它也會禁止我們做一些本當允許的并發修改,是并發能力最差的方法KeyandModifiedColumns該選項可以說是前兩者的折衷,在控制數據完整性和嚴格性方面比第一項強,比第二項弱,在允許的并發操作數量方面比第一項少,比第二項多數據窗口-并發控制6并發控制總結25數據窗口-并發控制7數據窗口Update其他屬性KeyModificationUseDeletethenInsert數據行先被刪除,然后,重新插入新的數據行注意:這個選項要求用戶選擇從數據庫檢索出所有的列UseUpdate直接修改數據行UnigueKeyColumn修改時唯一鍵IdentityColumns標識列,由DBMS自動產生的流水號列,如果選中該列,不能修改該列數據窗口-并發控制7數據窗口Update其他屬性26Demo3Demo3演示DataWindow的并發控制DEMODemo3Demo3DEMO27數據窗口-并發控制8數據窗口的Update函數與狀態位的關系
在實際中,經常需要在一個事務中同時更新主數據窗口和明細數據窗口,例如,同時更新入庫單和入庫單明細兩個數據窗口時,經常會寫下面的語句:Ifdw_rkd.Update(True,false)=1thenIfdw_rkdmx.Update(True,false)=1then
dw_rkd.ResetUpdate()dw_rkdmx.ResetUpdate()Commit;ElseRollback;EndIfEndIf數據窗口-并發控制8數據窗口的Update函數與狀態位的關系28數據窗口-并發控制9Update(Boolean,Boolean)的參數第一個參數Boolean,指定Update之前是否自動執行AcceptText函數,True表示自動執行(缺省值)第二個參數Boolean,指定更新數據庫之后是否自動復位更新標志,True表示自動復位更新標志若第二個參數設置成False,必須調用ResetUpdate()清除更新標志Resetupdate()函數清除數據窗口的主緩沖區、過濾緩沖區的更新標志,并清空刪除緩沖區數據窗口-并發控制9Update(Boolean,Bool29Demo4Demo4演示DataWindow的Update函數Demo4Demo430數據窗口-數據拷貝PB提供的幾種數據拷貝方法的比較方法優勢缺陷及限制Rowscopy單行/多行數據copy性能一般字段名稱、個數、順序要求完全相同(順序?)GetFullstatusSetFullstatus數據和狀態全部copy,性能較好無Dataobject.data單行和多行copy性能一般字段名稱、個數、順序要求完全相同ShareData不是copy,只是數據共享,性能最好,字段要求完全相同ImportString(Text)可以從文本字符串中導入性能一般字段名稱、個數、順序要求完全相同ImportString(XML)字段個數、順序可以不相同PB9.0及以上版本才提供雖然字段個數、順序可以不相同,但要求指定導入導出的XML模板必須相同內存消耗較大,且不釋放數據窗口-數據拷貝PB提供的幾種數據拷貝方法的比較方法優勢缺31Demo5Demo5演示DataWindow的幾種數據拷貝方式和性能DEMODemo5Demo5DEMO32數據窗口-小技巧1小技巧1可以通過數據窗口的SQLPreview事件查看數據窗口發送給數據庫的Sql語句,SQLPreview事件的參數的含義如下參數描述Request觸發該事件的函數類型(Retrieve、Update)SQLType發送給DBMS的SQL語句的類型(SELECT、INSERT、DELETE、UPDATE)SQLSyntaxSQL語句的語法Buffer產生SQL語句的記錄行所處的數據窗口緩沖區(Primary、Delete、filter)Row發生數據庫行為的記錄行行號數據窗口-小技巧1小技巧1參數描述Request33數據窗口-小技巧2小技巧2查看SQL語句中的數據(可以通過DBMS的DBParm參數設置來查看數據,DBParm中有一個DisableBind變量,該變量的含義是在SQLSyntax參數所返回的語法串中所有實際數據的位置上是否一“?”號代替)DisableBind狀態SQL語句DisableBind=0(默認)Selectxh,fsdm,ghdw,je,bzfromwz_rkdwherexh=?DisableBind=1Selectxh,fsdm,ghdw,je,bzfromwz_rkdwherexh=1數據窗口-小技巧2小技巧2DisableBind狀態SQL語34第三章調試及跟蹤本章內容異常處理DebugTraceView第三章調試及跟蹤本章內容35調試及跟蹤-異常處理1異常處理(Exception)為什么要進行異常處理?異常異常是指程序在運行過程中錯誤事件,比如除數為0、數組越界、空對象引用等等,這些事件的發生將會阻止應用程序的運行,為了提高程序的健壯性,在程序設計時,應該考慮到可能發生的異常事件,并在應用程序中做出相應的處理設計良好的異常處理可以讓應用程序有計劃從錯誤中恢復出來,繼續進行處理,擺脫因錯誤而導致的應用程序中斷調試及跟蹤-異常處理1異常處理(Exception)36調試及跟蹤-異常處理2沒有異常處理的程序,程序被強行退出進行異常處理后的程序,程序可以繼續運行調試及跟蹤-異常處理2沒有異常處理的程序,程序被強行退出37調試及跟蹤-異常處理3PB中的異常處理對象
ThrowableExceptionRuntimeErrorDivideByZeroErrorNullObjectErrorDWRuntimeErrorOLERuntimeErrorCORBASystem調試及跟蹤-異常處理3PB中的異常處理對象Throwable38調試及跟蹤-異常處理4PB中的異常處理語句Try//可能發生異常的語句Catch//異常類型1異常對象變量//處理異常情況的代碼Catch//異常類型2異常對象變量//處理異常情況的代碼//……Finally//執行公共處理部分(不管是否發生異常都會執行這段代碼)EndTry調試及跟蹤-異常處理4PB中的異常處理語句39Demo6Demo6演示捕獲異常DEMODemo6Demo6DEMO40調試及跟蹤-Debug調試工具DebugView簡介是一種第三方的調試工具,能在代碼中輸出變量的值到一個實時刷新的界面中,我們在編寫代碼時,在一些關鍵的地方輸出一個信息,特別是當程序已經編譯成EXE之后,可以通過該工具查看程序的運行情況如何使用只需使用一個API函數(OutputDebugStringA)像該工具中發送信息,在程序運行時打開該工具就可以了建議自己重新封裝OutputDebugStringA函數,因為該函數默認的只能傳入字符串變量,自己封裝之后,可以傳遞任何類型的變量,甚至是DataStore(編碼將DataStore的數據轉換成字符串),實際中使用最多的情況也是查看Datastore中的數據(在基礎類庫中已經進行了封裝,參見nvo_debug對象)調試及跟蹤-Debug調試工具DebugView41Demo7Demo7演示DebugView的使用DEMODemo7Demo7DEMO42調試及跟蹤-TraceView1Trace的主要目的通過對程序的性能跟蹤,分析程序各部分的消耗,以編寫高效的代碼調試及跟蹤-TraceView1Trace的主要目的43調試及跟蹤-TraceView2打開Trace工具的兩種方式方式一:開發環境中預先設置Trace開關Trace文件存放路徑調試及跟蹤-TraceView2打開Trace工具的兩種44調試及跟蹤-TraceView3打開Trace工具的兩種方式方式二:使用PB的函數打開TraceEnableActivityTraceBeginTraceEndTraceClose建議:使用第二種方式更有意義,因為可以跟蹤其中的某一段代碼,找出代碼中比較慢的原因調試及跟蹤-TraceView3打開Trace工具的兩種45調試及跟蹤-TraceView4跟蹤結果的幾種瀏覽方式方式一:ProfilingCloss從對象的角度查看方式二:ProfilingRoutineView從對象、方法的調用次數查看方式三:ProfilingTraceView從對象總體消耗查看調試及跟蹤-TraceView4跟蹤結果的幾種瀏覽方式46Demo8Demo8演示TraceViewDEMODemo8Demo8DEMO47第四章編碼規范本章內容控件命名規則代碼命名規范大小寫規范注釋規范縮進規范建議第四章編碼規范本章內容48編碼規范-控件命名規范參照PB默認設置例如:CommandButton cb_DataWindow dw_RadioButton rb_SingleLineEdit sle_StaticText st_TreeView tv_UserObject uo_……編碼規范-控件命名規范參照PB默認設置49編碼規范-代碼命名規范基本命名原則前綴_功能或作用描述與數據庫保持一致對象:w_d_ds_m_uo_函數:af_gf_wf_mf_uf_變量前綴全局變量 g gi_XiTongXH局部變量 l ls_XiTong實例變量 i is_CanShuMC共享變量 s si_ChuangKouXH編碼規范-代碼命名規范基本命名原則50編碼規范-大小寫規范SQL語句 UpperFirstSelect、Into、Where保留字 UpperFirst IfThen…Else…EndIf預定義類型 UpperFirstString、Long內置函數 UpperFirstMessageBox其他 除前綴外首字母大寫gi_XiTongXH、ls_XiTongMC編碼規范-大小寫規范SQL語句 UpperFirst51編碼規范-注釋規范源代碼文件的注釋在文件的頭部必須標明程序名稱,它所完成的主要功能。文件的作者,及完
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向2025年生鮮新零售行業供應鏈優化與冷鏈物流創新實踐研究報告001
- 基層醫療機構信息化建設中的基層衛生人才隊伍信息化能力提升報告
- 2025年醫院信息化建設電子病歷系統優化策略研究報告001
- 2025年醫院電子病歷系統優化與醫療信息化產業生態協同創新模式實踐報告
- 2025年醫院電子病歷系統功能優化及用戶體驗提升報告001
- 2025年醫藥市場前景展望:仿制藥一致性評價下的產業升級路徑
- 咖啡連鎖品牌2025年市場布局:咖啡店品牌戰略規劃與市場研究報告
- 醫療器械臨床試驗質量管理規范化2025年實施現狀報告
- 2025年醫藥企業研發外包(CRO)模式下的創新項目管理報告
- 數字孿生視角下2025年城市規劃與建設中的智慧城市交通流量管理優化與評估報告
- 內蒙古呼和浩特市2024-2025學年九年級上學期期末歷史試題(含答案)
- 申請協助執行申請書
- 2025年電纜保護拖鏈行業深度研究分析報告
- 5E教學模式研究現狀與提升策略
- 2024年糧油倉儲管理員理論知識競賽理論考試題庫500題(含答案)
- 2025年水穩材料購銷合同范本(適用于機場跑道建設)3篇
- Web應用的自動化測試研究
- 《急慢性扁桃體炎》課件
- 腦外傷病人應急演練
- T-FSS 81-2023 佛山標準 食品包裝用玻璃瓶罐
- 儲氣罐技術說明
評論
0/150
提交評論