在PowerScript指令碼中訪問資料視窗中的資料

2021-06-16 01:06:22 字數 3118 閱讀 8225

在powerscript指令碼中訪問

資料視窗中的

資料張健姿01-6-22下午03:50:25

在4.0以前的版本,如果您想在powerscript指令碼中訪問

資料視窗中的

資料,方法只有一種,那就是使用setitem和getitem系列的函式,指定您所要訪問的某一行列的值,這一方法的侷限性在於您一次只能訪問到乙個數值。而在5.0版中,拓展了

資料視窗的屬性,使

資料視窗中的

資料成為了該物件的乙個屬性,而使使用者可以象訪問其它物件屬性一樣直接訪問

資料視窗的

資料了。這樣我們就有了兩種訪問

資料的方法了。1.傳統的使用setitem和getitem系列函式,如:dw_1.setitem(1,"empname","phillips")ls_name=dw_1.getitemstring(1,"empname")2.表示式的方法,這種方法可以指定某一列、某一行、某一塊、或是使用者選中的行列、甚至整個

資料視窗控制項的全部

資料,如:dw_1.object.empname[1]="phillips"dw_1.object.data[1,1]="phillips"這兩種方法都可以允許使用者指定特定的

資料緩衝區,也就是說您採用任何一種方法都可以訪問到

資料被修改前的原始值、被過濾掉的值、被刪去的值及當前值等。在大多數情況下,您可以採用這兩種方法中的任一種,但這兩種方法在使用時也是各有利弊的。如果您只是要訪問某行某列的乙個數值,兩種方法在執行效率上是基本相同的的。如果您打算採用

資料視窗的列名而不是數值來表示某一列,而這一列的列名在執行前又不知道,或是要根據使用者的不同輸入來決定,那您只能採用函式法,因為這一方法可以動態地改變列名。如果您需要訪問的

資料不止一列,而是確定範圍的多行多列,那您採用表示式法將獲得更高的效率。表示式法是powerbuilder5.0新增加的功能,雖說這種方法可使得

資料視窗的物件導向的特性更為明顯,語言的表達也更為直觀,易於使旁觀者閱讀他人的程式時容易看懂,但是這種方法的語法形式卻是很複雜多樣,使用起來卻不太容易。總體上講,表示式的語法可以分成3組:直接指定列名稱法:如果您事先知道您需要訪問

資料的列名,而且僅訪問這一列,可以採用這種方法。選擇這一控制項中一條記錄或多條記錄dwcontrol.object.columnname]}我們在前面的專題中曾經介紹過關於

資料視窗的四個緩衝區,在這條命令的語法中buffer選項就可以選擇primary,filter或delete這三個緩衝區,預設為primary;datasource選項為current或original,預設為current。如果您選擇original,則系統將到

資料視窗的original緩衝區中去讀取

資料,顯然original緩衝區是唯讀的,您不能對其賦值。在後面的方括號中,您可以指定您打算訪問的這一列中的起止記錄數,如果只是一條記錄,您在startrownum中指定行號就可以了;如果方括號中兩個引數全部預設,則指這一列的全部記錄。例如:stringls_namels_name=dw_1.object.name[1]又如:dw_1.object.salary[8,12]=id_salaryid_salary是乙個陣列,如果其中只有四個元素,則第12行salary的值為空。選擇這個

資料視窗控制項中加亮的記錄dwcontrol.object.columnname.selected在

資料視窗中加亮的記錄就是您曾經使用過selectrow函式對其進行加亮表示這一行選中的記錄。顯然,對這一特性

資料的訪問只能是primary緩衝區中的,不過

資料來源仍然可以選擇是當前還是原始的。如果選擇原始,也就是說您得到的

資料是從

資料庫中查到的,修改前的

資料視窗的這幾列的

資料型別相匹配,否則powerbuilder將出現錯誤。對整行記錄的操縱:dwcontrol.object.data這一種方法是上一種方法的特例,如果rownum中的數值預設,將表示整個

資料視窗的全部

資料。例如

資料視窗中的列名及

資料型別是這樣的:id(number)name(string)retired_status(boolean)birth_date(date)首先我們要在結構畫筆中定義乙個str_empdata的

資料結構。它包括四個元素,型別分別是:integer,string,boolean和date執行下列**:str_empdatalstr_currdatalstr_currdata=dw_1.object.data這樣lstr_currdata結構中陣列的上界將用

資料視窗控制項中記錄的行數相等,並完成了賦值。我們還可以用這種方法指定這一控制項中高亮度的行dwcontrol.object.data.selected這三種形式的功能比較如下:訪問範圍語法訪問控制項中高亮度的行1一列dwcontrol.object.columnname能2多列dwcontrol.object.data不能3一條記錄的全部列dwcontrol.object.data能在使用這些語句時我們要注意以下幾點:同使用setitem和getitem系列函式一樣,在編譯時powerbuilder將不檢查您所指示的列的有效性,您必須自行檢查並確保引用的有效性。在第一種方法中我們必須注意在列名後面一定要有所字尾,例如:ld_salary=dw_1.object.emp_salary.primaryld_salray=dw_1.object.emp_salary[5]上述表示式都是合法的,但是ld_salary=dw_1.object.emp_salary就是非法表達了。因為dw_1.object.emp_salary指代的是這個emp_salary列的dwobject物件,而不是在emp_salary列中的

資料。我們可以用dw_1.object.emp_salary來指代

資料視窗中的物件,如:integerli_datadwobjectdwo_empsalarydwo_empsalary=dw_1.object.emp_salaryforli_cnt=1to100li_data=dwo_empsalary[li_cnt].........next這種表示式法返回的

資料型別是any型的,powerbuilder將根據「相容」原則轉換

資料庫與powerbuilder的

資料型別,因此如果您呼叫的過載函式要使用表示式法得到

資料視窗的

資料作為引數,建議您一定使用乙個強制轉換

資料型別的函式。例如:wf_overload(real(dw_1.object.dept_id[1]))1

python指令碼環境 在python指令碼中更改環境

我有乙個關於python和linux環境變數的問題。我在這裡讀了很多問題 答案,但沒有乙個是我的。接下來是 在install and create virtualenv easy install prefix opt mypython pip bashrc module unload python ...

在指令碼中建立物件

在報表中我們可以通過指令碼建立物件。下面用乙個示例來說明如何建立物件。建立乙個空白報表,然後在主過程中寫指令碼 varband tfrxreporttitle memo tfrxmemoview begin band tfrxreporttitle.create page1 band.height ...

sap指令碼執行 SAP指令碼 在系統中建立指令碼

教 程 目 錄 要啟動指令碼,您必須執行事務se71,這將開啟form painter.在form painter的請求螢幕中,輸入乙個表單和語言欄位中sapscript表單的名稱和語言.讓我們分別在這些欄位中輸入 rvinvoice01 和 en 段落提供格式化一段文字和字型所需的所有資訊.要建立...