資源描述:
《數(shù)據(jù)窗口中讀取數(shù)據(jù)的方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、數(shù)據(jù)窗口中讀取數(shù)據(jù)的方法數(shù)據(jù)窗口中讀取數(shù)據(jù)的方法?------------------------------------------------------------------------------ 讀取數(shù)據(jù)窗口中的數(shù)據(jù),這是數(shù)據(jù)窗口進(jìn)行的最簡單、最基本的操作。通常的做法是使用函數(shù),其他方法如使用數(shù)據(jù)窗口對象屬性直接引用字段的技術(shù)在后面專門介紹。本文介紹一些基本的讀取數(shù)據(jù)的方法。 使用函數(shù)GetItemX是常用的做法,其中的X和要讀取字段的類型兼容。例如,要讀取string類型字段中的數(shù)據(jù)
2、,可以使用函數(shù)GetItemString,要讀取Date類型字段中的數(shù)據(jù),應(yīng)該使用函數(shù)GetItemDate。所以,在讀取數(shù)據(jù)之前,應(yīng)該首先清楚要讀取的數(shù)據(jù)的類型。這些函數(shù)的格式是: dwcontrol.GetItemX(row,column{,dwbuffer,originalvalue}) 其中的X可以替換成Date、DateTime、Decimal、Number、String、Time,所以讀取數(shù)據(jù)的函數(shù)有6個。參數(shù)row表示要讀取哪行的數(shù)據(jù),是一個long類型數(shù)值。column代表列,可以
3、是string型的列名,也可以是整型的列號。dwbuffer是DWBuffer枚舉型,取值Primary!、Delete!、Filter!分別代表主緩沖區(qū)、刪除緩沖區(qū)和過濾緩沖區(qū)。originalvalue為Boolean型,表示是否讀取最近一次檢索時檢索到的初始值,當(dāng)指定dwbuffer時必須指定該參數(shù),該參數(shù)和dwbuffer都是可選的。函數(shù)正確執(zhí)行則返回對應(yīng)類型的數(shù)據(jù),執(zhí)行過程中發(fā)生錯誤則返回空值(“”),任何參數(shù)為Null則返回Null?! ±?,在一個有性別字段的用于顯示數(shù)據(jù)的數(shù)據(jù)窗口中,當(dāng)
4、檢索完畢后將1都替換成“男”,將0都替換成“女”,這樣的顯示更好一些??梢栽跀?shù)據(jù)窗口的RetrieveEnd事件中編寫如下腳本: longll_rowno stringls_sex Ifrowcount<=0Thenreturn//如果沒有數(shù)據(jù)則直接返回 Forll_rowno=1Torowcount//逐條進(jìn)行處理 ls_sex=Trim(This.GetItemString(ll_rowno,"sex"))//讀取字段sex并去掉兩端空格 Ifls_sex="1"Then//如果是
5、“男” dw_1.SetItem(ll_rowno,"sex","男") Elseifls_sex="0"Then//如果是"女" dw_1.SetItem(ll_rowno,"sex","女") EndIf Next 上述例程僅僅是為了說明GetItemX函數(shù),沒有太大的實際用途。因為有很多手段可以實現(xiàn)該漢字界面的構(gòu)造。使用GetItemX類型的6個函數(shù)可以讀取數(shù)據(jù)窗口的數(shù)據(jù),但是在使用這些函數(shù)前必須首先知道字段的類型。另外,如果字段的類型和函數(shù)要讀取的類型不兼容,例如,使用
6、函數(shù)GetItemString讀取Date類型字段中的內(nèi)容,這樣的錯誤在腳本編譯時不會被檢查出來。有沒有解決這個問題的方法呢? PowerBuilder中提供了any類型的變量,可以接受任何類型的數(shù)據(jù),可以使用該變量來解決這個問題。為保證所有需要讀取數(shù)據(jù)的數(shù)據(jù)窗口中都可以讀取任意類型的字段,可以編寫一個通用的函數(shù)。讀取數(shù)據(jù)時不再使用GetItemX函數(shù),而是使用數(shù)據(jù)窗口對象屬性直接引用。下面的自定義函數(shù)使用any類型的變量,來保存讀取到的字段的數(shù)據(jù),然后返回該any類型的數(shù)據(jù),獲取該返回值時,只要使
7、用相應(yīng)的類型轉(zhuǎn)換函數(shù)即可。例如,要讀取字段name中的數(shù)據(jù),可以使用如下格式調(diào)用: Stringls_name Ls_name=String(GetItemAny(dw_1,1,"name") 函數(shù)GetItemAny如下: /*************************************************************** *funtionGetItemAny(datawindowids_ds,longal_row,stringas_Column) *參數(shù):d
8、atawindowids_dsbyvalue * longal_rowbyvalue * stringas_Columnbyvalue *返回值類型:any *功能:讀取指定數(shù)據(jù)窗口ids_ds中第al_row行中字段as_column中的值 ****************************************************************/ Longll_Col Anyla_A IFal_Row>i