亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

pb數(shù)據(jù)函數(shù)操作

系統(tǒng) 2748 0

?

一、連接數(shù)據(jù)庫


連接數(shù)據(jù)庫也就是指定事務(wù)對象。PowerBuilder提供了兩個函數(shù):SetTrans()和SetTransObject()。
語法格式:
dw_control.SetTrans(TransactionObject)
dw_control.SetTransObject(TransactionObject)
其中,dw_control是所使用的數(shù)據(jù)窗口控件,transactionObject是所要指定的事務(wù)對象。
這兩個函數(shù)有一個重要的區(qū)別就是在使用SetTrans()函數(shù)時,用戶不需做任何數(shù)據(jù)初始化或事務(wù)對象初始化工作。用戶只需要在這里填充一個事務(wù)對象,PB就會自動完成對該事物對象的初始化以及和數(shù)據(jù)庫連接的工作。而使用SetTransObject()函數(shù)時,用戶必須首先把所用的事務(wù)對象連接到數(shù)據(jù)庫上。
但是,這并不意味著SetTrans()函數(shù)比SetTransObject()函數(shù)更好,使用SetTrans()函數(shù)時,每調(diào)用一次函數(shù)必須連接一次數(shù)據(jù)庫,因為這個函數(shù)在每個事務(wù)處理的末端都會執(zhí)行Disconnect語句。與此相反,使用SetTransObject()函數(shù)可以為數(shù)據(jù)庫維持一個開放性的連接。因此在一般情況下,為了提高效率,總是采用SetTransObject()函數(shù)。
這兩個函數(shù)都是成功時返回1,發(fā)生錯誤時返回-1。

二、檢索數(shù)據(jù)


用于檢索數(shù)據(jù)的函數(shù)只有一個,就是Retrieve()函數(shù)。
語法格式:
dw_control.Retrieve()
如果數(shù)據(jù)窗口控件上的數(shù)據(jù)窗口對象是有檢索參數(shù)的,就要在這個函數(shù)調(diào)用時加上檢索參數(shù)。而且檢索參數(shù)必須和數(shù)據(jù)窗口對象中定義順序一致。
此函數(shù)返回一個長整型的數(shù)據(jù),代表檢索出來的數(shù)據(jù)行數(shù)。如果發(fā)生錯誤,將返回-1。

三、更新數(shù)據(jù)


當用戶對數(shù)據(jù)窗口對象內(nèi)的數(shù)據(jù)修改后,想把這些修改反映到數(shù)據(jù)庫中去時,必須使用Update()函數(shù)。
語法格式:
dw_control.Update()
這個更新可能成功,也可能失敗。一般在這個函數(shù)被調(diào)用之后,總是要做一個檢查。請看下面的例子:
Int li_return
li_return = dw_1.Update()
IF li_return = 1 THEN
???? COMMIT USING SQLCA;
ELSE
???? ROLLBACK USING SQLCA;
END IF
在這段代碼中,首先對數(shù)據(jù)窗口控件進行更新操作。但是更新只是把數(shù)據(jù)寫入到客戶機的內(nèi)存,并沒有提交到數(shù)據(jù)庫中。如果更新成功,就把它提交到數(shù)據(jù)庫中,如果更新失敗,就回滾到當前的事務(wù)。

行操作
行操作的函數(shù)主要是對數(shù)據(jù)庫中的數(shù)據(jù)進行插入、刪除或選擇操作。

一、插入行


在DataWindow中插入一行,可以使用InsertRow()函數(shù)。
語法格式:
dw_control.InsertRow(rownumber)
dw_control是數(shù)據(jù)窗口控件名,rownumber是要插入行的的行號。如果這個參數(shù)為0,代表在當前DataWindow的最后一行插入一空行。
InsertRow()函數(shù)返回一個長整型值,以此來代表插入的行號。如果插入失敗,則返回-1。

二、刪除行


要刪除DataWindow內(nèi)的一行數(shù)據(jù),則要使用DeleteRow()函數(shù)。
語法格式:
dw_control.DeleteRow(rownumber)
其中rownumber是要刪除的行號。如果該值為0,表示刪除當前行。如果刪除成功,返回1,失敗則返回-1。

三、設(shè)置當前行


如果要設(shè)置DataWindow中的某行為當前行,可以使用SetRow()函數(shù)。
語法格式:
dw_control.SetRow(rownumber)
其中rownumber是要設(shè)置為當前行的行號。如果函數(shù)返回1表示成功,返回-1代表失敗。

四、獲取當前行


如果想要獲取DataWindow中的某行為當前行,可以使用GetRow()函數(shù)。
語法格式:
dw_control.GetRow()
該函數(shù)沒有參數(shù),它返回一個長整型,代表當前行號。如果返回-1代表失敗。如果返回0代表沒有選中任何行。

五、選擇行


如果想要在DataWindow中加亮顯示某一行或取消加亮顯示某一行,可以使用SelectRow()函數(shù)。
語法格式:
dw_control.SelectRow(rownumber,select)
其中,rownumber表示要加亮或者取消加這顯示的行號,0表示所有行。select是一個布爾類型的值,TRUE表示加亮,F(xiàn)ALSE表示取消加亮顯示。該函數(shù)返回1時表示成功,返回-1時表示失敗。
如果想要直接設(shè)置某一行為加亮,需要首先取消其它行的加亮顯示狀態(tài),采用如下的兩行代碼:
dw_1.SelectRow(0,FALSE)
dw_1.SelectRow(rownumber,TRUE)


六、獲取選擇行


如果想要獲取當前DataWindow中加亮顯示的行,可以使用GetSelectRow()函數(shù)。
語法格式:
dw_control.GetSelectRow(rownumber)
其中,rownumber為開始查找的行的行號,0表示從頭開始查找。該函數(shù)返回一個長整數(shù),表示從rownumber開始查找第一個加亮顯示的行的行號。如果失敗返回0。

七、滾動行


如果在DataWindow的末尾插入一行數(shù)據(jù),而當前行是在DataWindow的中央,那么這種插入可能不會被用戶覺察。為了改變這種情況,可以滾動行到DataWindow的末尾,這樣用戶就能發(fā)現(xiàn)新的改變。要滾動行,可以使用ScrollToRow()函數(shù)。
語法格式:
dw_control.ScrollToRow(rownumber)
該函數(shù)返回1時表示成功,返回-1時表示失敗。
與ScrollToRow()函數(shù)據(jù)功能相關(guān)的還有如下幾個函數(shù):
ScrollPriorRow():向上滾動一行
ScrollNextRow():向下滾動一行

列操作
列操作類的函數(shù)主要是選擇指定的列和獲取列的信息。

一、獲取列


如果要獲取當前的列號,可以使用GetColumn()函數(shù),如果要獲取當前的列名,可以使用GetColumnName()函數(shù)。
語法格式:
dw_control.GetColumn()
dw_control.GetColumnName()
這兩個函數(shù)都沒有參數(shù),GetColumn()函數(shù)返回一個長整型值,代表當前的列號,GetColumnName()函數(shù)返回當前列的列名。如果返回0,表示當前沒有任何列被選擇返回-1表示失敗。

二、設(shè)置列


要設(shè)置某一列為DataWindow中的當前列,可以使用SetColumn()函數(shù)。
語法格式:
dw_control.SetColumn(column)
其中column既可以是列號,也可以是列名。當該函數(shù)返回1時表示成功,返回-1時表示失敗。

數(shù)據(jù)操作
數(shù)據(jù)操作類的函數(shù)主要是對DataWindow中的數(shù)據(jù)進行獲取、設(shè)置。

一、獲取數(shù)據(jù)


如果要從DataWindow的指定行和列中獲取數(shù)據(jù),就要使用GetItem系列的函數(shù)。這個系列的函數(shù)共有五個,分別是對字符串、數(shù)字、日期、日期時間和小數(shù)。
語法格式:
dw_control.GetItemString(rownumber,column)
dw_control.GetItemNumber(rownumber,column)
dw_control.GetItemDate(rownumber,column)
dw_control.GetItemDateTime(rownumber,column)
dw_control.GetItemDecimal(rownumber,column)
其中,rownumber參數(shù)表示行號,column可以是列號或列名。

二、設(shè)置數(shù)據(jù)


與獲取數(shù)據(jù)所用的函數(shù)不同,設(shè)置DataWindow內(nèi)指定行列處的數(shù)據(jù)只要使用一個SetItem()函數(shù)就可以了。
語法格式:
dw_control.SetItem(rownumber, column, value)
其中rownumber表示行號,column可以是列號,也可以是列名,value表示要設(shè)置的值。但是該必須與DataWindow中指定的行列處的數(shù)據(jù)類型一致,不然PowerBuilder會報錯。
SetItem()函數(shù)返回1時表示成功,返回-1時表示失敗。

三、數(shù)據(jù)排序


如果希望對DataWindow內(nèi)的數(shù)據(jù)進行重新排序,而又不想重新從數(shù)據(jù)庫中檢索數(shù)據(jù),可以使用SetSort()和Sort()函數(shù)。這兩個函數(shù)一起完成對DataWindow進行排序的功能。其中SetSort()函數(shù)用于設(shè)置如何排序,Sort()函數(shù)用于對DataWindow實際進行排序。
語法格式:
dw_control.SetSort(expression)
dw_control.Sort()
其中expression是一個字符串,表示排序的表達式,它的具體值是一個列名后面加一個空格,然后是"A",表示升序,或"D",表示降序。如果有多個列要同時進行排序,它們之間用逗號隔開。
例:dw_1.SetSort("name A,xh D")
這兩個函數(shù)都是返回1表示成功,返回-1表示失敗。

四、數(shù)據(jù)過濾


如果希望對DataWindow內(nèi)的數(shù)據(jù)進行過濾而不重新從數(shù)據(jù)庫中檢索數(shù)據(jù),可以使用SetFilter()和Filter()函數(shù)。它們一起完成對數(shù)據(jù)的過濾功能。其中SetFilter()函數(shù)用來設(shè)置過濾條件,F(xiàn)ilter()函數(shù)用于對DataWindow進行過濾。
語法格式:
dw_control.SetFiter(expression)
dw_control.Fiter()
其中expression是一個字符串,表示過濾的條件,它實際是一個邏輯表達式。
例:
dw_1.SetFilter("id>\'003\' AND name like\'王%\'")
dw_1.Filter()
這兩個函數(shù)都是返回1表示成功,返回-1表示失敗。

五、數(shù)據(jù)檢查


PowerBuilder提供了兩個函數(shù)用于數(shù)據(jù)的檢查,它們是DeleteCount()和ModifiedCount(),其作用分別是檢查DataWindow中的數(shù)據(jù)自上一次更新到現(xiàn)在,被刪除的行數(shù)和被修改的行數(shù)。它們一般在窗口的CloseQuery事件中使用,用來檢查該窗口的DataWindow中的數(shù)據(jù)是否有尚未保存的修改。
語法格式:
dw_control.DeleteCount()
dw.control.ModifiedCount()
它們分別返回從上一次更新到現(xiàn)在,DataWindow中被刪除和被修改的行數(shù)。如果沒有行被刪除或被修改,那么它們返回0。如果出現(xiàn)錯誤則返回-1。
一般情況下,如果窗口中含有可供修改的數(shù)據(jù)窗口對象,那么在窗口的CloseQuery事件中通常使用如下代碼檢查數(shù)據(jù)窗口對象中是否有尚未保存的數(shù)據(jù):
Int li_return
IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN
???? li_return = MessageBox("提示","數(shù)據(jù)尚未保存,是否保存?",Question!,YesNoCancel!,3)
???? CHOOSE CASE li_return
??????????? CASE 1
???????????????? TriggerEvent(\'ue_save\')
???????????????? RETURN 0
??????????? CASE 2
???????????????? RETURN 0
??????????? CASE 3
???????????????? RETURN 1
??? END CHOOSE
END IF

?

?

★SetTransObject
語法:dwcontrol.SetTransObject ( transaction )
功能:給數(shù)據(jù)窗口或者datastore控件dwcontrol設(shè)置事務(wù)對象transaction,缺省事務(wù)對象是SQLCA。
返回值:成功設(shè)置事務(wù)對象則返回1,執(zhí)行過程中發(fā)生了錯誤則返回-1,有任意參數(shù)為Null時返回Null。

★Retrieve
語法:dwcontrol.Retrieve ( {, argument, argument . . . } )
功能:使用數(shù)據(jù)窗口控件的當前事務(wù)對象檢索數(shù)據(jù)庫中的數(shù)據(jù)。如果數(shù)據(jù)窗口控件對應(yīng)的數(shù)據(jù)窗口對象定義了檢索參數(shù),則應(yīng)該在該函數(shù)中指定檢索參數(shù),參數(shù)的個數(shù)和數(shù)據(jù)窗口對象的檢索變量個數(shù)相等,對應(yīng)的數(shù)據(jù)類型相兼容。
返回值:返回數(shù)據(jù)窗口控件主緩存區(qū)(PrimaryBuffer)中的記錄數(shù),如果檢索數(shù)據(jù)時發(fā)生錯誤則返回-1,如果任意參數(shù)為Null則返回Null
*該函數(shù)的參數(shù)和數(shù)據(jù)窗口對象定義的參數(shù)的順序要相同,類型要兼容。個數(shù)不能少于數(shù)據(jù)窗口對象定義的參數(shù),即可以等于和多于數(shù)據(jù)窗口對象定義的參數(shù),多的參數(shù)忽略。

★DeleteRow
語法:dwcontrol.DeleteRow ( row )
功能:刪除數(shù)據(jù)窗口dwcontrol中的第row行數(shù)據(jù),如果row為0則表示刪除當前行的數(shù)據(jù)。
返回值:執(zhí)行成功則返回1,執(zhí)行錯誤則返回-1,如果任意參數(shù)為Null則返回Null。
*該函數(shù)執(zhí)行后只是將被刪除的數(shù)據(jù)從數(shù)據(jù)窗口的主緩存區(qū)移放到Deleted緩沖區(qū),在數(shù)據(jù)庫中并沒有真正刪除數(shù)據(jù),當正確執(zhí)行了Update函數(shù)并且使用commit語句提交了事務(wù)后,才真正從數(shù)據(jù)庫中刪除該數(shù)據(jù)

★InsertRow
語法:dwcontrol.InsertRow ( row )
功能:在數(shù)據(jù)窗口dwcontrol的第row行前插入一行空白數(shù)據(jù)。當指定row為0時,表示在當前行之前插入一行空白數(shù)據(jù)。
返回值:返回插入的數(shù)據(jù)的行號,如果執(zhí)行過程中發(fā)生錯誤則返回-1,如果任意參數(shù)為Null則返回Null

★Update
語法:dwcontrol.Update ( { accept {, resetflag } } )
功能:提交數(shù)據(jù)窗口或者datastore中的數(shù)據(jù)。如果accept為True,表示在提交數(shù)據(jù)之前自動執(zhí)行AccpetText函數(shù),否則不執(zhí)行該函數(shù),該參數(shù)缺省為True;如果resetflag為True,表示數(shù)據(jù)提交后自動清除修改標識,該參數(shù)缺省為True。
返回值:執(zhí)行成功則返回1,發(fā)生錯誤則返回-1,如果dwcontrol為Null則返回Null

★AcceptText
語法:dwcontrol.AcceptText ( )
功能:該函數(shù)執(zhí)行時,首先對當前編輯框中的內(nèi)容進行對應(yīng)字段的校驗規(guī)則,能夠通過校驗規(guī)則,則保存在對應(yīng)字段中,否則顯示校驗信息提示錯誤。需要執(zhí)行該函數(shù)的原因是,當在某字段上的編輯框中輸入內(nèi)容而沒有移動光標到別的字段上時,其他控件獲得焦點,此時編輯框中的內(nèi)容不能被保存到字段中,所以就應(yīng)該在數(shù)據(jù)窗口失去焦點時執(zhí)行該函數(shù)。
返回值:執(zhí)行成功則返回1,執(zhí)行過程中發(fā)生錯誤則返回-1,如果dwcontrol為Null則返回Null。
*該函數(shù)在數(shù)據(jù)窗口的ItemChanged事件中不起作用,因為項目改變是發(fā)生在接受編輯框中內(nèi)容之后

★ModifiedCount
語法:dwcontrol.ModifiedCount ( )
功能:獲取數(shù)據(jù)窗口或者Datastore中被修改過但還沒有提交到數(shù)據(jù)庫中的記錄數(shù)。
返回值:返回long類型的數(shù)據(jù)窗口控件中被修改過的記錄數(shù),如果沒有記錄被修改過或者修改后都已經(jīng)保存到了數(shù)據(jù)庫中則返回0,執(zhí)行過程中如果發(fā)生錯誤則返回-1,如果dwcontrol為Null則返回Null。
*該函數(shù)獲得的修改過的記錄數(shù)包括主緩存區(qū)和Filter緩存區(qū)的被修改過的和新添加到數(shù)據(jù)窗口中的記錄數(shù)

★DeletedCount
語法:dwcontrol.DeletedCount ( )
功能:獲取數(shù)據(jù)窗口控件或者datastore控件dwcontrol中被刪除的記錄數(shù)。
返回值:返回long類型的已經(jīng)被刪除但還沒有提交到數(shù)據(jù)庫中的記錄數(shù),如果執(zhí)行過程中發(fā)生了錯誤則返回-1,如果dwcontrol為Null則返回Null,如果沒有刪除過記錄則返回0

★RowsMove
它可以將數(shù)據(jù)從一個緩沖區(qū)移動到另外緩沖區(qū)中。該函數(shù)的語法是:
dwcontrol.RowsMove ( startrow, endrow, movebuffer, targetdw, beforerow,?? targetbuffer )
其中,dwcontrol是進行移動操作的源數(shù)據(jù)窗口;startrow和endrow是要移動數(shù)據(jù)的范圍(包括這兩個行號的數(shù)據(jù));movebuffer指要從哪個緩存區(qū)移出數(shù)據(jù),可以是Primary!、Delete!、Filter!;targetdw是目標數(shù)據(jù)窗口控件名稱;beforerow表示在目標數(shù)據(jù)窗口的哪一行之前插入移入的數(shù)據(jù),如果該數(shù)值比目標數(shù)據(jù)窗口的行數(shù)大,則在最后插入移入的數(shù)據(jù);targetbuffer是目標緩存區(qū),取值同movebuffer一樣。

★GetItemStatus和SetItemStatus
使用函數(shù)dwcontrol.GetItemStatus ( row, column, Primary! )可以獲取該緩沖區(qū)內(nèi)指定單元的狀態(tài),當參數(shù)column為0時,表示讀取整個行的修改狀態(tài)。有以下狀態(tài)。
NotModified! :指定單元的數(shù)據(jù)和原始數(shù)據(jù)相同,沒有修改過。
DataModified!:指定單元的數(shù)據(jù)和原始數(shù)據(jù)不同,修改過。
New!:該數(shù)據(jù)行是新增加的,但還沒有在該行上輸入數(shù)據(jù)。
NewModified!:該數(shù)據(jù)行是新增加的,并且已經(jīng)在該行上錄入了數(shù)據(jù)。
這些修改標識都是由數(shù)據(jù)窗口自動維護的,一般情況下沒有必要編寫腳本修改這些標記,但并不是說就不能修改。PowerBuilder提供了函數(shù)SetItemStatus,它的語法是:
dwcontrol.SetItemStatus ( row, column, dwbuffer, status )
其中,row參數(shù)指定將要修改狀態(tài)的行;column參數(shù)指定將要修改狀態(tài)的列(可以是整型的列號,也可以是string類型的列名),當列號為0時表示要修改row指定的整行的狀態(tài);dwbuffer指定要修改哪個緩沖區(qū)(肯定不能是original),status為上面的四個取值中的一個,但不是任意的取值,因為有些狀態(tài)不能用該函數(shù)設(shè)置成另外一種狀態(tài),必須是能夠轉(zhuǎn)換的狀態(tài)。下面列出了能夠轉(zhuǎn)換的狀態(tài)。
??? 期望的狀態(tài) New!?? NewModified! DataModified! NotModified!
當前狀態(tài)
New!?? \?? Yes?? Yes?? No
NewModified! No?? \?? Yes?? New
DataModified! NewModified! Yes?? \?? Yes
NotModified! Yes?? Yes?? Yes?? \
表中的Yes表示可以使用SetItemStatus進行該狀態(tài)設(shè)置,No表示不會產(chǎn)生預(yù)期的狀態(tài),如果標明了某個特定的狀態(tài),則說明是新的狀態(tài),而不是期望的狀態(tài)。例如,數(shù)據(jù)窗口dw_1的第1行第1列的當前狀態(tài)為DataModified!,使用函數(shù)dw_1.SetItemStatus(1,1,New!)后,第1行第1列的狀態(tài)改變?yōu)镹ewModified!。同樣對于該數(shù)據(jù)窗口dw_1,如果使用函數(shù)dw_1.SetItemStatus(1,1,NotModified!),則會將其狀態(tài)改變?yōu)镹otModified!。當從一種狀態(tài)不允許轉(zhuǎn)變到另一種狀態(tài)時,可以修改成其他一個中間狀態(tài),然后再進行一次轉(zhuǎn)換。例如,要從new!改成NotModified,應(yīng)該首先轉(zhuǎn)換到DataModified!

★GetItemX
讀取數(shù)據(jù)窗口中的數(shù)據(jù)
dwcontrol.GetItemX( row, column {, dwbuffer, originalvalue } )
其中的X可以替換成Date、DateTime、Decimal、Number、String、Time,所以讀取數(shù)據(jù)的函數(shù)有6個。參數(shù)row表示要讀取哪行的數(shù)據(jù),是一個long類型數(shù)值。column代表列,可以是string型的列名,也可以是整型的列號。dwbuffer是DWBuffer枚舉型,取值Primary!、Delete!、Filter!分別代表主緩沖區(qū)、刪除緩沖區(qū)和過濾緩沖區(qū)。originalvalue為Boolean型,表示是否讀取最近一次檢索時檢索到的初始值,當指定dwbuffer時必須指定該參數(shù),該參數(shù)和dwbuffer都是可選的。函數(shù)正確執(zhí)行則返回對應(yīng)類型的數(shù)據(jù),執(zhí)行過程中發(fā)生錯誤則返回空值(""),任何參數(shù)為Null則返回Null

★SetItem和SetText
函數(shù)SetItem的語法格式是:
dwcontrol.SetItem ( row, column, value )
各個參數(shù)的含義如下。
dwcontrol:數(shù)據(jù)窗口或datastore控件名稱。
row:要設(shè)置的數(shù)據(jù)所在行。
column:要設(shè)置的數(shù)據(jù)所在的列。可以用整型列號,也可以用string型列名。
value:要設(shè)置的值,應(yīng)該和要設(shè)置的列的類型一致。
函數(shù)正確執(zhí)行則返回1,這時數(shù)據(jù)窗口中row行column列顯示的數(shù)據(jù)是剛剛用該函數(shù)設(shè)定的數(shù)據(jù),如果函數(shù)執(zhí)行過程中發(fā)生錯誤則返回-1。注意,該函數(shù)執(zhí)行時僅僅檢查函數(shù)中指定數(shù)據(jù)的類型和字段的類型是否一致,不會進行有效性校驗,包括在數(shù)據(jù)窗口中設(shè)置的校驗規(guī)則、在ItemChanged事件中編寫的校驗規(guī)則、在ItemChanged調(diào)用的校驗規(guī)則都不會執(zhí)行。
函數(shù)SetText的語法格式是:
integer dwcontrol.SetText ( string text )
功能是設(shè)置當前編輯框中的內(nèi)容。注意,當編輯框離開當前單元時要進行有效性校驗,如果校驗數(shù)據(jù)正確,則當前字段接受該數(shù)據(jù),否則觸發(fā)ItemError事件。所以,可以使用該函數(shù)給帶有校驗規(guī)則的字段設(shè)置數(shù)據(jù)。
EG:
int li_i
dw_1.SetColumn("name")???? //使name列成為當前列
For li_i = 1 To dw_1.RowCount()
???????? dw_1.SetRow(li_i)??????????????? //使第I行成為當前行
????????????????? dw_1.SetText("屁")?????????????? //向當前編輯框中寫入內(nèi)容
Next
dw_1.SetColumn("sex")???????????????? //選中性別列,保證最后一個也要通過校驗規(guī)則

★SetColumn、SetRow和GetColumn、GetRow和GetClickedColumn、GetClickedRow和GetColumnName
設(shè)置當前列
integer dwcontrol.SetColumn ( string column)
integer dwcontrol.SetColumn ( integer column)
設(shè)置當前行
integer dwcontrol.SetRow ( long row )
得到當前列
integer dwcontrol.GetColumn ( )
得到當前行
long dwcontrol.GetRow ( )
得到用戶單擊的列
integer dwcontrol.GetClickedColumn ( )
得到用戶單擊的行
long dwcontrol.GetClickedRow ( )
得到當前列的名
string dwcontrol.GetColumnName ( )

★SetFilter、Filter和Find
這兩個函數(shù)必須配對使用,首先使用函數(shù)SetFilter設(shè)置過濾規(guī)則,然后用函數(shù)Filter進行過濾。過濾規(guī)則是boolean類型的表達式,能夠使用過濾規(guī)則的,將表達式為True的數(shù)據(jù)行顯示在數(shù)據(jù)窗口中,使其為False的數(shù)據(jù)行被移送到數(shù)據(jù)窗口的Filter!緩存區(qū)。在設(shè)計數(shù)據(jù)窗口對象時也可以定義過濾規(guī)則,使用這兩個函數(shù)可以根據(jù)需要來動態(tài)改變過濾規(guī)則。在設(shè)計時,指定了過濾規(guī)則的數(shù)據(jù)窗口可以使用這兩個函數(shù)再進行過濾。每次過濾都是對數(shù)據(jù)窗口的Original!緩存區(qū)進行的,而不是在前一次過濾出來的數(shù)據(jù)基礎(chǔ)上再次過濾。
函數(shù)SetFilter的語法是:
dwcontrol.SetFilter ( format )
其中,dwcontrol是要進行過濾的數(shù)據(jù)窗口控件名稱。format是過濾規(guī)則,string類型。過濾規(guī)則是由字段、常量、運算符、函數(shù)構(gòu)成的boolean表達式。需要取消過濾規(guī)則顯示所有的數(shù)據(jù)時,可以指定過濾規(guī)則為空(""),如果讓用戶可以隨便指定過濾規(guī)則,則可以使用Null的過濾表達式,這時PowerBuilder提供一個和數(shù)據(jù)窗口設(shè)計時相同的過濾規(guī)則指定窗口。該函數(shù)正確執(zhí)行返回1,否則返回-1。執(zhí)行完后,數(shù)據(jù)窗口中顯示的數(shù)據(jù)沒有發(fā)生變化,只有當執(zhí)行了Filter函數(shù)后才按照剛剛指定的過濾規(guī)則顯示數(shù)據(jù)。
該函數(shù)的語法是:
dwcontrol.Filter ( )
dwcontrol是和SetFilter中同名的數(shù)據(jù)窗口控件名稱。該函數(shù)執(zhí)行正確則返回1,否則返回-1,如果dwcontrol為Null則返回Null。
函數(shù)Find也可以用來進行查詢。該函數(shù)可以在數(shù)據(jù)窗口中的指定范圍查找符合某些條件的數(shù)據(jù)。該函數(shù)的語法格式是:
dwcontrol.Find ( expression_r, start, end )
其中,dwcontrol是要進行查找的數(shù)據(jù)窗口控件名稱,expression_r是表達式,含義和注意事項同SetFilter中的完全相同。start和end都是long類型變量,用行號表示的查找范圍,它們之間沒有大小約束。函數(shù)返回的是在指定范圍內(nèi)找到的第一個符合條件的記錄號,如果沒有找到或發(fā)生了錯誤則返回0,如果參數(shù)有Null的則返回Null

★SetSort和Sort
數(shù)據(jù)的排序可以在數(shù)據(jù)窗口對象設(shè)計時就指定排序規(guī)則,也可以在腳本中動態(tài)指定。使用函數(shù)SetSort和Sort可以完成這一任務(wù),它們和SetFilter、Filter一樣也必須配對使用。函數(shù)SetSort設(shè)置排序的規(guī)則,不改變數(shù)據(jù)的顯示,只有當執(zhí)行了函數(shù)Sort時,數(shù)據(jù)才真正進行重新排列。
函數(shù)SetSort的語法是:
dwcontrol.SetSort ( format )
其中,dwcontrol為要進行排序的數(shù)據(jù)窗口控件的名稱;format為排序規(guī)則,是string類型,由字段、函數(shù)、ASC或DESC、邏輯聯(lián)結(jié)符、常數(shù)構(gòu)成。可以使用字段名,也可以使用字段號來表示字段,字段號的格式是#X,其中X為正整數(shù)。該函數(shù)正確執(zhí)行返回1,否則返回-1。
和SetFilter函數(shù)類似,當指定format為空("")時,可以取消排序,當指定format為Null時,可以由用戶指定排序規(guī)則。
使用函數(shù)SetSort后,再使用Sort函數(shù)才能重新排列數(shù)據(jù)。
該函數(shù)的格式是:
dwcontrol.Sort ( )
其中,dwcontrol是和SetSort中同名的數(shù)據(jù)窗口控件名稱。該函數(shù)正確執(zhí)行則返回1,否則返回-1,如果參數(shù)dwcontrol為Null,則返回Null。

★SelectRow
選中指定的行
dwcontrol.SelectRow ( row, boolean )
其中,dwcontrol是數(shù)據(jù)窗口控件的名稱;row是行號,該參數(shù)為0則表示是對數(shù)據(jù)窗口中的所有數(shù)據(jù)行進行操作;boolean表示是否選中,如果是True,表示選中行號row的數(shù)據(jù)行,如果是False則取消。該函數(shù)正確執(zhí)行返回1,發(fā)生錯誤返回-1,如果參數(shù)有Null則返回Null。

★PrintSetup、Print、PrintOpen、PrintDatawindow、PrintClose、PrintCancel
PrintSetup():
打印設(shè)置
PrintOpen():
啟動打印作業(yè)
PrintOpen函數(shù)用來打開一個作業(yè),并返回當前可以使用的打印作業(yè)號,該打印作業(yè)號可以標識當前的打印工作。該函數(shù)的語法是:
PrintOpen ( { jobname } )
如果發(fā)生錯誤,該函數(shù)返回-1。打印作業(yè)名稱是可選的,名字在打印隊列中。在打印作業(yè)的最后必須關(guān)閉打印作業(yè),使PowerBuilder和Windows清除打印作業(yè)所占用的所有資源。因此,每個啟動作業(yè)的語句都有一個關(guān)閉作業(yè)的語句相對應(yīng)。
PrintClose()、PrintCancel():
關(guān)閉打印作業(yè)
有兩個函數(shù)可以用來關(guān)閉打印作業(yè)。PrintClose()函數(shù)把當前頁傳送給打印機,并關(guān)閉當前打印作業(yè)。語法格式為:
?????? PrintClose(printjobnumber)
函數(shù)PrintCancel()取消打印作業(yè)并刪除當前的打印文件。這個函數(shù)可以與Print或者PrintDataWindow()函數(shù)組合使用。用于PrintDatawindow()的語法是:
DatawindowControl.PrintCancel()
用于Print()的語法是:
?????? PrintCancel(printjobnumber)
PrintClose()函數(shù)和PrintCancel()函數(shù)是互相排斥的,成功調(diào)用過一個以后,不要在沒有再次打開打印作業(yè)時調(diào)用另一個函數(shù)。
PrintDatawindow():
該函數(shù)是以單個打印作業(yè)的形式打印數(shù)據(jù)窗口控件中的內(nèi)容。PowerBuilder使用數(shù)據(jù)窗口對象中定義的字體和布局進行打印。用這個函數(shù)可以在一個打印作業(yè)中打印多個數(shù)據(jù)窗口,但是每個數(shù)據(jù)窗口控件都從新的一頁開始打印;如果要讓幾個數(shù)據(jù)窗口打印在同一頁中,則需要利用底層的打印函數(shù)或?qū)⒁蛴≡谕豁撝械臄?shù)據(jù)窗口,創(chuàng)建成一個composite顯示樣式的數(shù)據(jù)窗口。PrintDatawindow函數(shù)的語法是:
PrintDatawindow(printjobnumber,datawindow)
其中,printjobnumber是PrintOpen函數(shù)返回的打印作業(yè)號,datawindow是要打印的數(shù)據(jù)窗口控件的名稱。除了能夠和Printopen()、PrintClose()函數(shù)共同使用外,其他函數(shù)都不能和PrintDatawindow共同使用。下面是一個完整地使用函數(shù)PrintDatawindow()進行數(shù)據(jù)窗口打印的例子,該例子中同時打印三個數(shù)據(jù)窗口:
Long ll_job
Ll_job = PrintOpen("數(shù)據(jù)窗口打印")
PrintDatawindow(ll_job,dw_1)
PrintDatawindow(ll_job,dw_2)
PrintDatawindow(ll_job,dw_3)
PrintClose(ll_job)????????????????? //關(guān)閉打印作業(yè)
Print():
該函數(shù)是一個通用的函數(shù),可以用來打印PowerBuilder中許多可視對象。下面介紹打印數(shù)據(jù)窗口時的語法,格式如下:
datawindowname.Print ( { canceldialog } )
datawindowname為要打印的數(shù)據(jù)窗口控件名稱,canceldialog是一個boolean型變量,指示在打印時是否顯示一個無模式的可以隨時取消打印的窗口,該變量缺省為True。該函數(shù)正確執(zhí)行則返回1,執(zhí)行過程中發(fā)生錯誤則返回-1。
*雖然該函數(shù)和PrintDatawindow一樣都可以打印數(shù)據(jù)窗口,但是它們之間是有區(qū)別的。Print函數(shù)使用設(shè)置在數(shù)據(jù)窗口對象的打印規(guī)范來打印數(shù)據(jù)窗口,而PrintDatawindow函數(shù)使用打印機當前的設(shè)置來打印數(shù)據(jù)窗口。

pb數(shù)據(jù)函數(shù)操作


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线拍 | 久久精品网站免费观看调教 | 九九欧美 | 香蕉久久精品国产 | 91精品国产91热久久p | 欧美成人免费一级人片 | 亚洲视频免费看 | 亚洲精品国产乱码在线播 | 久久97精品久久久久久久看片 | 久青草国产手机在线观 | 欧美一区二区在线视频 | 激情五月色播 | 欧美国产成人在线 | 久久国产精彩视频 | 欧美一区二区三区精品国产 | 在线观看中文字幕 | 亚洲另类中文字幕 | 日本视频久久 | 私人影院在线免费观看 | 成人老司机深夜福利久久 | 免费观看欧美成人禁片 | 精品综合久久久久久97超人该 | 国产一区二区精品久 | 狠狠操狠狠操狠狠操 | 久久亚洲不卡一区二区 | 亚洲精品一区二区三区在线看 | 国产在视频线精品视频2021 | 亚洲视频久久 | 色综合天天操 | 性久久久久久久久久 | 毛片a级 | 国产精品久久久久久久久 | 亚洲日本视频在线 | 欧美一级一极性活片免费观看 | 四虎四虎1515whh | 欧美日韩国产三级 | 天天干天天干天天操 | 好好的曰com久久 | 免费h| 特级毛片在线大全免费播放 | 99久久综合国产精品免费 |