數(shù)據(jù)窗口常用函數(shù)_第1頁
數(shù)據(jù)窗口常用函數(shù)_第2頁
數(shù)據(jù)窗口常用函數(shù)_第3頁
數(shù)據(jù)窗口常用函數(shù)_第4頁
數(shù)據(jù)窗口常用函數(shù)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)窗口常用函數(shù)

數(shù)據(jù)窗口控件事務(wù)對象1.SetTransObject函數(shù)

調(diào)用格式:dwcontrol.SetTransObject(transaction)

其中:dwcontro為數(shù)據(jù)窗口控件的名稱;transaction為缺省的或用戶定義的事務(wù)對象。

返回值:1-成功;-1-失敗。SetTransObject函數(shù)為數(shù)據(jù)庫維持了一個開放性的連接,不需要反復(fù)連接和斷開數(shù)據(jù)庫,對數(shù)據(jù)窗口的更新進(jìn)行提交或滾回操縱。只有在用戶改變數(shù)據(jù)窗口對象或者用戶斷開與數(shù)據(jù)庫連接后,才要再次調(diào)用SetTransObject函數(shù)。

SetTransObject()函數(shù)的特點是,在使用之前要求建立事務(wù)對象與數(shù)據(jù)庫的連接,一直保持這一連接,直到代碼執(zhí)行DISCONNECT語句后才斷開與數(shù)據(jù)庫的連接。它在檢索和更新數(shù)據(jù)時所花的時間只是檢索和更新所需的時間,效率上明顯高于SetTrans()函數(shù)。例如,在完成了數(shù)據(jù)庫的連接之后,如果在某個窗口中有個數(shù)據(jù)窗口控件dw_1,可以在窗口打開的open事件中,添加如下代碼:dw_1.SetTransObject(SQLCA) 此后,就可以使用其它函數(shù)訪問數(shù)據(jù)庫了。數(shù)據(jù)窗口控件事務(wù)對象2.SetTrans函數(shù) 調(diào)用格式:dwcontrol.SetTrans(transaction) 參數(shù)及返回值與SetTransObject函數(shù)相同。不同點是SetTrans使用內(nèi)部事務(wù)對象,用戶不必先進(jìn)行數(shù)據(jù)庫的連接,而是每進(jìn)行一次數(shù)據(jù)庫操作,都會自動產(chǎn)生一個數(shù)據(jù)庫的連接,并在操作結(jié)束時自動斷開與數(shù)據(jù)庫的連接。每當(dāng)操作數(shù)據(jù)庫時,都會完成連接、操作、斷開數(shù)據(jù)庫這一系列步驟。

對絕大多數(shù)數(shù)據(jù)庫管理系統(tǒng)來說,CONNECT、DISCONNECT操作是件極為耗時的工作。如果應(yīng)用程序?qū)?shù)據(jù)庫操作頻繁,SetTrans需要花費的資源比較多,效率比較低。一般應(yīng)用在遠(yuǎn)端使用應(yīng)用程序或者對數(shù)據(jù)庫操作較少的場合。數(shù)據(jù)窗口控件的函數(shù)數(shù)據(jù)窗口控件提供了豐富的對象函數(shù),這些函數(shù)在增強數(shù)據(jù)窗口功能的同時,也方便了應(yīng)用程序的開發(fā),加快了開發(fā)進(jìn)度。

數(shù)據(jù)窗口函數(shù)編程注意事項:

1.窗口函數(shù)觸發(fā)數(shù)據(jù)窗口事件 窗口函數(shù)會觸發(fā)某些數(shù)據(jù)窗口事件,如果在這些數(shù)據(jù)窗口事件中調(diào)用能夠觸發(fā)該事件的數(shù)據(jù)窗口函數(shù),就會造成死循環(huán)。2.PowerBuilder的數(shù)據(jù)處理機制數(shù)據(jù)窗口在客戶機的本地內(nèi)存中開辟了四個緩沖區(qū):主緩沖區(qū)、刪除緩沖區(qū)、過濾緩沖區(qū)、原始緩沖區(qū),從數(shù)據(jù)庫中檢索到數(shù)據(jù)后,數(shù)據(jù)窗口根據(jù)不同情況把數(shù)據(jù)放置到不同的緩沖區(qū)。四個緩沖區(qū)各司其職,協(xié)作完成數(shù)據(jù)的增刪改,最后把結(jié)果提交給數(shù)據(jù)庫管理系統(tǒng)。除了在數(shù)據(jù)窗口畫筆中可以定義數(shù)據(jù)窗口對象外,還提供了根據(jù)SQLSELECT語句和指定的屬性動態(tài)創(chuàng)建數(shù)據(jù)窗口的能力,這樣,應(yīng)用程序就能夠構(gòu)造的更加靈活,以適應(yīng)千變?nèi)f化的用戶需求。7.4數(shù)據(jù)窗口控件的函數(shù)當(dāng)使用數(shù)據(jù)窗口控件的Retrieve()函數(shù)從數(shù)據(jù)庫中提取數(shù)據(jù)后,數(shù)據(jù)被存入了數(shù)據(jù)窗口的主緩沖區(qū)中,程序?qū)?shù)據(jù)窗口中數(shù)據(jù)的操作均在緩沖區(qū)中完成。用戶在向數(shù)據(jù)窗口中輸入數(shù)據(jù)時,并沒有直接把數(shù)據(jù)輸入到數(shù)據(jù)窗口的主緩沖區(qū)中,而是把數(shù)據(jù)輸入到懸浮在數(shù)據(jù)窗口當(dāng)前單元上面的編輯控件中,當(dāng)用戶移動了輸入焦點或代碼中使用AcceptText()函數(shù)操作之后,系統(tǒng)驗證輸入數(shù)據(jù)的有效性,通過有效性驗證的數(shù)據(jù)才被放置到數(shù)據(jù)窗口控件的主緩沖區(qū)中。當(dāng)插入數(shù)據(jù)時,插入的數(shù)據(jù)也存放在主緩沖區(qū)。當(dāng)刪除數(shù)據(jù)行時,不管是使用DeleteRow()函數(shù)直接刪除一行還是使用RowsMove()函數(shù)在緩沖區(qū)之間移動數(shù)據(jù)行,被刪除數(shù)據(jù)行從主緩沖區(qū)移動到刪除緩沖區(qū)。當(dāng)使用數(shù)據(jù)窗口控件的對象函數(shù)Update()將數(shù)據(jù)窗口的修改發(fā)送到數(shù)據(jù)庫管理系統(tǒng)后,被成功刪除的記錄均從刪除緩沖區(qū)中清除。在保存數(shù)據(jù)時,刪除緩沖區(qū)用于生成DELETE語句。過濾緩沖區(qū)用于保存那些滿足數(shù)據(jù)源定義,而不滿足過濾條件的行。原始緩沖區(qū)保存數(shù)據(jù)窗口從數(shù)據(jù)庫中檢索出的原始數(shù)據(jù)??梢酝ㄟ^把GetItem簇函數(shù)的入口參數(shù)originalvalue設(shè)置為true來訪問原始緩沖區(qū)中數(shù)據(jù)。7.4數(shù)據(jù)窗口控件的函數(shù)數(shù)據(jù)窗口緩沖區(qū)之間的關(guān)系見圖。7.4數(shù)據(jù)窗窗口控控件的的函數(shù)數(shù)主緩沖沖區(qū)的的記錄錄行數(shù)數(shù)可以以通過過數(shù)據(jù)據(jù)窗口口控件件的對對象函函數(shù)RowCount()得到,,刪除除緩沖沖區(qū)的的記錄錄行數(shù)數(shù)通過過數(shù)據(jù)據(jù)窗口口控件件的對對象函函數(shù)DeletedCount()得到,,過濾濾緩沖沖區(qū)的的記錄錄行數(shù)數(shù)通過過數(shù)據(jù)據(jù)窗口口控件件的對對象函函數(shù)FilterCount()得到。。利用數(shù)數(shù)據(jù)窗窗口控控件的的對象象函數(shù)數(shù)SetFilter(),可以以動態(tài)態(tài)改變變過濾濾條件件,然然后使使用數(shù)數(shù)據(jù)窗窗口控控件的的對象象函數(shù)數(shù)Filter()更新主主緩沖沖區(qū)和和過濾濾緩沖沖區(qū)中中的數(shù)數(shù)據(jù)。。數(shù)據(jù)據(jù)窗口口控件件只顯顯示主主緩沖沖區(qū)中中的數(shù)數(shù)據(jù),,用戶戶的所所有操操作也也都是是針對對主緩緩沖區(qū)區(qū)進(jìn)行行的。。編輯狀狀態(tài)標(biāo)標(biāo)志在在數(shù)據(jù)據(jù)窗口口控件件的主主緩沖沖區(qū)、、過濾濾緩沖沖區(qū)和和刪除除緩沖沖區(qū)中中,每每一行行和每每一行行中的的每個個列都都有個個編輯輯狀態(tài)態(tài)標(biāo)志志,這這個標(biāo)標(biāo)志指指示了了相應(yīng)應(yīng)行是是否是是新增增加的的行、、相應(yīng)應(yīng)列的的數(shù)據(jù)據(jù)是否否被修修改。。在往往數(shù)據(jù)據(jù)庫中中保存存數(shù)據(jù)據(jù)時,,數(shù)據(jù)據(jù)窗口口利用用這個個標(biāo)志志值來來決定定產(chǎn)生生什么么類型型的SQL語句。。需要獲獲得某某行/某列列的編編輯狀狀態(tài)標(biāo)標(biāo)志的的方法法是使使用數(shù)數(shù)據(jù)窗窗口控控件的的GetItemStatus()對象象函數(shù)數(shù)。修修改行行或列列的編編輯狀狀態(tài)標(biāo)標(biāo)志的的數(shù)據(jù)據(jù)窗口口控件件對象象函數(shù)數(shù)是SetItemStatus()。7.4數(shù)據(jù)窗窗口控控件的的函數(shù)數(shù)編輯狀狀態(tài)標(biāo)標(biāo)志是是個dwItemStatus枚舉類類型。。7.4數(shù)據(jù)窗窗口控控件的的函數(shù)數(shù)3.訪問的的緩沖沖區(qū)dwBuffer用來指指定數(shù)數(shù)據(jù)窗窗口控控件函函數(shù)訪訪問的的緩沖沖區(qū),,dwBuffer使用枚枚舉數(shù)數(shù)據(jù)類類型。。表7-4dwBuffer枚舉數(shù)數(shù)據(jù)類類型與與指定定的緩緩沖區(qū)區(qū)數(shù)據(jù)窗窗口常常用函函數(shù)Dwo.Reset()重置數(shù)數(shù)據(jù)窗窗口InsertRow()函函數(shù)用來在在數(shù)據(jù)據(jù)窗口口的主主緩沖沖區(qū)中中插入入一條條新記記錄。。其語語法格格式為為:longdwcontrol.InsertRow(longrow)其中::row用于指指定新新行的的插入入位置置。若若row為0,則表表示在在所有有記錄錄的最最后插插入新新行。。例如::dw_1.InsertRow(0)數(shù)據(jù)窗窗口常常用函函數(shù)DeleteRow()函函數(shù)DeleteRow函數(shù)用用來在在數(shù)據(jù)據(jù)窗口口的主主緩沖沖區(qū)中中刪除除一行行。其其語法法格式式為::integerdwcontrol.DeleteRow(longrow)其中::row表示要要刪除除的行行的行行號。。若row為0,則表表示要要刪除除當(dāng)前前行。。例如,,語句句:dw_1.DeleteRow(5)表示刪刪除數(shù)數(shù)據(jù)窗窗口控控件中中的第第5條記錄錄。數(shù)據(jù)窗窗口常常用函函數(shù)Update()函數(shù)數(shù)Update函函數(shù)用用來把把數(shù)據(jù)據(jù)窗口口上數(shù)數(shù)據(jù)的的變化化更新新到數(shù)數(shù)據(jù)庫庫中。。Update函函數(shù)的的語法法格式式為::integerdwcontrol.Update({booleanaccept{,booleanresetflag}})其中::參數(shù)數(shù)accept是一一個布布爾值值,如如果該該值為為true,表表示在在更新新之前前調(diào)用用AcceptText函數(shù)數(shù)。參參數(shù)resetflag用來來確定定數(shù)據(jù)據(jù)窗口口更新新后是是否重重設(shè)更更新標(biāo)標(biāo)記。。該函數(shù)數(shù)執(zhí)行行成功功,則則返回回1,,否則則返回回-1。例如,,在本本書實實例窗窗口w_ini的【【保存存】按按鈕的的Clicked事事件代代碼為為:數(shù)據(jù)窗窗口常常用函函數(shù)ifdw_1.Update()>0thencommit;//提交elsemessagebox("","無法對數(shù)據(jù)保保存!")rollback;//返回endif注釋:在調(diào)用用update函數(shù)后,,必須做事務(wù)務(wù)的管理工作作,即使用SQL語句COMMIT或ROLLBACK來來結(jié)束更新操操作。數(shù)據(jù)窗口常用用函數(shù)連接事務(wù)對象象的函數(shù)Settransobject()函數(shù)參數(shù)為事務(wù)對對象例:dw_1.Settransobject(sqlca)滾動數(shù)據(jù)行函函數(shù)Scroll()和ScrollToRow()函數(shù)數(shù)longdwcontrol.Scroll(longnumber)number指定要滾動動的方向和行行數(shù)。number為正正數(shù),表示向向下滾動;若若number為負(fù)數(shù),,表示向上滾滾動。如果該該函數(shù)執(zhí)行成成功,那么將將返回數(shù)據(jù)窗窗口控件中可可見的第一行行的行號;如如果執(zhí)行失敗敗,則返回-1。滾動數(shù)據(jù)行函函數(shù)ScrollToRow函數(shù)integerdwcontrol.ScrollToRow(longrow)參數(shù)row指指定要滾動到到的行號。如如果row為為0,則滾動動到第一行,,如果row大于最后一一行的行號,,則滾動到最最后一行。該該函數(shù)執(zhí)行成成功,則返回回值為1,否否則,返回-1注釋:調(diào)用ScrollToRoll函數(shù)后,,指定的行變變?yōu)楫?dāng)前行,,如果該行在在數(shù)據(jù)窗口控控件中已經(jīng)可可見,則數(shù)據(jù)據(jù)窗口控件中中顯示的行沒沒有什么變化化,否則,顯顯示這一行ScrollToRoll函數(shù)和其其他數(shù)據(jù)窗口口滾動函數(shù)并并不能高亮度度顯示行。此此時可使用SelectRow函數(shù)數(shù)高亮度顯示示該行以使用用戶知道這是是當(dāng)前行。ScrollToRow函數(shù)和其他他數(shù)據(jù)窗口滾滾動函數(shù)可能能觸發(fā)下列事事件:ItemChanged、ItemError、ItemFocusChanged、RowFocusChanged。ScrollNextRow()和ScrollPriorRow()函數(shù)數(shù)longdwcontrol.ScrollNextRow()longdwcontrol.ScrollPriorRow()作用:向上或或向下滾動一一行ScrollNextPage()和ScrollPriorPage()函數(shù)longdwcontrol.ScrollNextPage()longdwcontrol.ScrollPriorPage()作用:向上或或向下滾動一一頁使當(dāng)前記錄亮亮度顯示Selectrow()函數(shù)integerdwcontrol.SelectRow(long,boolean)參數(shù)long型表示行號號,行號為0表示對所有有行進(jìn)行操作作。boolean型::true表表示稿亮度顯顯示,false表示去去掉亮度顯示示。例:Dw_1.selectrow(dw_1.getrow(),true)表示示將當(dāng)前行亮亮度顯示Retrieve()函函數(shù)Retrieve函數(shù)的功能是是用指定的事事務(wù)對象從數(shù)數(shù)據(jù)庫中把數(shù)數(shù)據(jù)檢索到數(shù)數(shù)據(jù)窗口進(jìn)行行顯示。Retrieve函數(shù)的語法格格式為:longdwcontrol.Retrieve({anyargument,anyargument...})其中:argument是可選參數(shù),,它表示在數(shù)數(shù)據(jù)窗口對象象中定義的檢檢索參數(shù),這這些參數(shù)的順順序必須和定定義時的順序序相同。如果調(diào)用成功功,則返回檢檢索出的記錄錄行數(shù);否則則,返回-1。SetSort()和Sort()函數(shù)SetSort()函函數(shù)設(shè)置排序序條件Sort()函數(shù)執(zhí)行排序序操作integerdwcontrol.SetSort(stringformat)其中:參數(shù)format是一個表示排排序標(biāo)準(zhǔn)的字字符串,包括括列名或列號號(列號前加加#號)和排序順順序(A表示升序、D表示降序)。。如果format值為NULL,PowerBuilder將顯示“SpecifySortColumns”對話框,讓讓用戶選擇排排序條件。該該函數(shù)執(zhí)行成成功時返回值值為1,否則返回-1。numberdwcontrol.Sort()該函數(shù)沒有參參數(shù),執(zhí)行成成功時返回值值為1,否則返回-1。例如,可使用用如下代碼實實現(xiàn)按第一列列升序、第二二列降序的順順序排序:dw_1.setSort("#1A,#2D")dw_1.sort()SetFilter()和Filter()函數(shù)SetFilter函數(shù)用來在程程序中動態(tài)改改變數(shù)據(jù)窗口口的過濾條件件。修改之后后,再用Filter函數(shù)過濾數(shù)據(jù)據(jù)。integerdwcontrol.SetFilter(stringformat)其中:format是個字符串,,其值是作為為過濾條件的的邏輯表達(dá)式式,表達(dá)式中中可以包含列列名或列號。。如果format值為NULL,PowerBuilder將顯示“SpecifyFilter”對話框,讓讓用戶輸入過過濾條件。該函數(shù)執(zhí)行成成功時返回1,否則返回-1。integerdwcontrol.Filter()例:dw_1.setfilter("xh='0251101'")dw_1.filter()可以實現(xiàn)過濾濾學(xué)號字段為為0251101學(xué)生的的記錄Reset()函數(shù)Reset函數(shù)可以清除除數(shù)據(jù)窗口中中的所有行。。其語法格式式為:integerdwcontrol.Reset()若該函數(shù)執(zhí)行行成功,則返返回1,否則返回-1。執(zhí)行Reset函數(shù)后再執(zhí)行行Update()函數(shù)并不會清清除數(shù)據(jù)庫中中的數(shù)據(jù),而而刪除數(shù)據(jù)窗窗口的所有行行后再執(zhí)行Update()函數(shù)則會清除除數(shù)據(jù)庫中的的數(shù)據(jù)。Find()函數(shù)查找滿足條件件的記錄numberdwcontrol.Find(stringexpression,numberstart,numberend)Expression::查找條件表表達(dá)式Start::起始行號End:結(jié)束束行號返回值:返回回第一條滿足足條件的記錄錄號0表示查找失失敗,-1表表示查找出錯錯例i=dw_1.find("xh='0251101'",1,dw_1.rowcount())dw_1.scrolltorow(i)查找和過濾的的區(qū)別查找和過濾都都可以找到滿滿足條件的記記錄,但是,,find(()的查找過過程在主緩沖沖區(qū)中進(jìn)行,,而Filter()將將滿足條件的的記錄過濾到到過濾緩沖區(qū)區(qū)。得到與設(shè)置數(shù)數(shù)據(jù)項的函數(shù)數(shù)SetItem函數(shù)參數(shù):行號,,列號,值例如:dw_1.setitem(dw_1.getrow(),3,’女’’)GetItem函數(shù)GetItemString、GetItemDateTime、GetItemTime、GetItemNumber、、GetItemDecimal。。參數(shù):行號,,列號返回值:取得得的對應(yīng)行、、列的值數(shù)據(jù)窗口中數(shù)數(shù)據(jù)處理數(shù)據(jù)正確性檢檢查數(shù)據(jù)排序、過過濾、分組及及去掉重復(fù)值值數(shù)據(jù)檢索引用數(shù)據(jù)窗口口對象和數(shù)據(jù)據(jù)窗口項數(shù)據(jù)窗口對象象的引用Dataobject屬屬性:指定數(shù)數(shù)據(jù)窗口對象象例:dw_1.dataobject='d_no_name‘通過表達(dá)式引引用數(shù)據(jù)窗口口項通過列名引用用dwcontrol.Object.columnname{.buffer}{.current|.original}{[rownumber]}dwcontrol:數(shù)據(jù)窗口控控件名稱。Object:必選部分,,用來指定一一個數(shù)據(jù)窗口口對象的數(shù)據(jù)據(jù)值。Columnname:必選部分,,用來指定要要操作的數(shù)據(jù)據(jù)窗口列名Buffer:可選部分,,指明要從哪哪個緩沖區(qū)中中取得數(shù)據(jù),,用戶可以在在Primary(主緩沖區(qū)))、Delete(刪除緩沖區(qū)區(qū))或Filter(過濾緩沖區(qū)區(qū))中選擇一一個,默認(rèn)設(shè)設(shè)置為Primary緩沖區(qū)。.current|.original:用來指明是是從原始數(shù)據(jù)據(jù)(從數(shù)據(jù)庫庫中檢索出來來的數(shù)據(jù))還還是從當(dāng)前緩緩沖區(qū)中取得得數(shù)據(jù)。current為默認(rèn)設(shè)置,,指當(dāng)前數(shù)據(jù)據(jù)緩沖區(qū)。original指原始數(shù)據(jù)。。rownumber:可選字段,,指定數(shù)據(jù)窗窗口的行號或或者某一范圍圍。例dw_1.Object.number[1]=9952101語句把數(shù)據(jù)9952101賦值給主緩沖沖區(qū)中的第一一行的number列項:通過函數(shù)引用用數(shù)據(jù)窗口項項取得數(shù)據(jù)窗口口緩沖區(qū)中特特定行列的數(shù)數(shù)據(jù);GetItemStringGetItemDateTime、、GetItemTime、GetItemNumber、GetItemDecimalGetItem設(shè)置數(shù)據(jù)窗口口特定行列的的數(shù)據(jù)值。Stringdwcontrol.GetItemString(row,column{,dwbuffer,originalvalue})dwcontrol:數(shù)據(jù)窗口控控件的名字。。row:指定要取得得字符型數(shù)據(jù)據(jù)項所在的行行號。column:指定要取得得字符型數(shù)據(jù)據(jù)項所在的列列,可以時列列號(數(shù)值型型)或列名((字符型)。。dwbuffer:指明要從哪哪個緩沖區(qū)中中取得數(shù)據(jù)。。默認(rèn)設(shè)置是是Primary緩沖區(qū)。originalvalue:用來指明是是從原始數(shù)據(jù)據(jù)還是從當(dāng)前前緩沖區(qū)中取取得數(shù)據(jù),True表示獲得從數(shù)數(shù)據(jù)庫檢索出出來的原始數(shù)數(shù)據(jù);False(默認(rèn))表示示獲得當(dāng)前緩緩沖區(qū)中的數(shù)數(shù)據(jù)。例rownum=dw_1.getrow()//取得當(dāng)前行的的行號num_no=dw_1.GetItemNumber(rownum,number)//取得當(dāng)前行、、number列的值設(shè)置數(shù)據(jù)窗口口特定行列的的數(shù)據(jù)值。SetItem,其語法格式式如下:integerdwcontrol.SetItem(row,column,value)row指定賦值項所所在的行,column指賦值項所在在的列,可以以是列號或列列名;value是要為數(shù)據(jù)項項設(shè)置的值。。例:Dw_1.setitem(dw_1.getrow(),sex,’男‘)數(shù)據(jù)窗口的更更新控制選擇菜單【Rows】∣【UpdateProperties】,彈出“SpecifyUpdateProperties”設(shè)置更新屬性性多表數(shù)據(jù)窗口口的更新一般情況下,,含有多表數(shù)數(shù)據(jù)的數(shù)據(jù)窗窗口只能用于于數(shù)據(jù)檢索,,而不能用于于更新數(shù)據(jù),,所以,通常常多表的更新新操作通常使使用多個數(shù)據(jù)據(jù)窗口來實現(xiàn)現(xiàn)(在腳本中中要做數(shù)據(jù)庫庫的相關(guān)完整整性檢查)。。但有時也會會遇到在一個個數(shù)據(jù)窗口中中更新多個表表數(shù)據(jù)的情況況。如果需要在單單數(shù)據(jù)窗口中中做多表更新新,只能采用用如下特殊的的手段來解決決:第一,通過修修改數(shù)據(jù)窗口口的更新屬性性實現(xiàn)多表更更新;第二,用隱含含數(shù)據(jù)窗口((或數(shù)據(jù)存儲儲)實現(xiàn)多表表更新。創(chuàng)建數(shù)據(jù)窗口口:(1)選用合適的的數(shù)據(jù)源和顯顯示風(fēng)格,保保證數(shù)據(jù)窗口口具有更新能能力。(2)選取多表中中的所需數(shù)據(jù)據(jù)項(各表的的主鍵和非空空列一定要包包含進(jìn)去)。。(3)修改所需數(shù)數(shù)據(jù)項的TabOrder,保證其在數(shù)數(shù)據(jù)窗口中是是可修改的((TabOrder值不為0)。(4)選取菜單【【Rows】∣【UpdateProperties】,定義數(shù)據(jù)據(jù)窗口的更新新屬性(只定定義一個表的的列為可更新新列)。保存操作:(1)先對多表中中的一個單表表進(jìn)行更新,,使用Modify()函數(shù)將其余表表中的數(shù)據(jù)項項的Update屬性改為False。(2)選取單表的的主鍵及表中中其他數(shù)據(jù)項項,設(shè)置此單單表:"DataWindow.Table.UpdateTable=表名"http://設(shè)置可更新的的表名"表的主鍵.Key=Yes"http://設(shè)置可更新的的主鍵使用用Modify()函數(shù)數(shù)將將要要更更新新表表中中的的數(shù)數(shù)據(jù)據(jù)項項的的Update屬性改為True。(3)使用Update()函數(shù),對所所選中的單單表進(jìn)行更更新。(4)選取數(shù)據(jù)據(jù)窗口中的的其余表及及其數(shù)據(jù)項項,重復(fù)以以上的操作作來更新多多表數(shù)據(jù)。。modify()函數(shù)的用法法為:stringdwcontrol.Modify(stringmodstring)其參數(shù)是一一個要設(shè)置置的屬性值值的字符串串。不同的的屬性之間間可用~t或多個空格格間隔,對數(shù)據(jù)窗口口對象中列列的屬性值值的設(shè)置可可以用如下下方式:perty=value。例如xshjbqk_name.Update=No表示將列xshjbqk_name的update(更新)屬屬性改為No,即為不可可更新。實例longll_rtn//修改改Department表ll_rtn=dw_1.update(true,false)ifll_rtn=1then//關(guān)掉對對Department表的的修改dw_1.Modify("department_dept_name.Update='No'")dw_1.Modify("department_dept_id.Update='No'")dw_1.Modify("department_dept_id.Key='No'")//使Employee表成成為新的可可修改表dw_1.Modify("DataWindow.Table.UpdateTable='employee'")dw_1.Modify("employee_emp_id.Update='Yes'")dw_1.Modify("employee_emp_fname.Update='Yes'")dw_1.Modify("employee_emp_lname.Update='Yes'")dw_1.Modify("employee_emp_id.Key='Yes'")//修改Employee表表ll_rtn=dw_1.Update()IFll_rtn=1THENCOMMITUSINGSQLCA;dw_1.retrieve()messagebox('提提示信息','更新新成功!')ELSEROLLBACKUSINGSQLCA;MessageBox('提提示信息','更更新失?。?!')ENDIF//如果還還要修改別別的表,重重設(shè)修改標(biāo)標(biāo)志dw_1.Modify("department_dept_name.Update='Yes'")dw_1.Modify("department_dept_id.Update='Yes'")dw_1.Modify("department_dept_id.Key='Yes'")dw_1.Modify("DataWindow.Table.UpdateTable='department'")dw_1.Modify("employee_emp_id.Update='No'")dw_1.Modify("employee_emp_fname.Update='No'")dw_1.Modify("employee_emp_lname.Update='No'")dw_1.Modify("employee_emp_id.Key='No'")ELSEROLLBACKUSINGSQLCA;MessageBox('提提示信息','更更新失?。?!')ENDIF小結(jié)1.數(shù)據(jù)窗窗口控件常常用屬性數(shù)據(jù)窗口窗窗口控件常常用函數(shù):Retrieve()檢索數(shù)據(jù)update()更新表數(shù)據(jù)據(jù)InsertRow(longrow)在第row行插入一空空行,row=0表示在末尾尾插入DeleteRow(longrow)刪除第row行g(shù)etrow()返回數(shù)據(jù)窗窗口當(dāng)前行行的行號getcolumn()得到數(shù)據(jù)窗窗口控件當(dāng)當(dāng)前列的列列號GetColumnName()得到數(shù)據(jù)窗窗口控件當(dāng)當(dāng)前列的列列名RowCount()返回數(shù)據(jù)窗窗口控件當(dāng)當(dāng)前可用行行數(shù)。小結(jié)ScrollToRow(longrow)滾動數(shù)據(jù)窗窗口控件的的顯示到row行,該函數(shù)數(shù)改變當(dāng)前前行但不改改變當(dāng)前列列。GetItemDecimal(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為DecimalGetitemnumber(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為NumberGetitemstring(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為stringGetItemDate(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為DateGetItemDateTime(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為DateTimeGetitemtime(longrow,intcolumn)得到數(shù)據(jù)窗窗口控件中中row行、col列的數(shù)據(jù)值值。返回值值為Time小結(jié)SetItem(longrow,intcolumn,value)將value寫到數(shù)據(jù)窗

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論