| 導購 | 订阅 | 在线投稿
分享
 
 
 

Powerbuilder編程過程中的數據窗口函數

來源:互聯網網民  2008-06-13 06:49:14  評論

本節介紹的主要內容如下:

· 與數據庫有關的函數

· 行操作

· 列操作

· 數據操作

PowerBuilder爲數據窗口控件提供了豐富的函數,這些函數使用戶能夠在使用數據窗口控件時得心應手。

與數據庫有關的函數

這類函數完成與數據庫有關的功能。

一、連接數據庫

連接數據庫也就是指定事務對象。PowerBuilder提供了兩個函數:SetTrans()和SetTransObject()。

語法格式:

dw_control.SetTrans(TransactionObject)

dw_control.SetTransObject(TransactionObject)

其中,dw_control是所使用的數據窗口控件,transactionObject是所要指定的事務對象。

這兩個函數有一個重要的區別就是在使用SetTrans()函數時,用戶不需做任何數據初始化或事務對象初始化工作。用戶只需要在這裏填充一個事務對象,PB就會自動完成對該事物對象的初始化以及和數據庫連接的工作。而使用SetTransObject()函數時,用戶必須首先把所用的事務對象連接到數據庫上。

但是,這並不意味著SetTrans()函數比SetTransObject()函數更好,使用SetTrans()函數時,每調用一次函數必須連接一次數據庫,因爲這個函數在每個事務處理的末端都會執行Disconnect語句。與此相反,使用SetTransObject()函數可以爲數據庫維持一個開放性的連接。因此在一般情況下,爲了提高效率,總是采用SetTransObject()函數。

這兩個函數都是成功時返回1,發生錯誤時返回-1。

二、檢索數據

用于檢索數據的函數只有一個,就是Retrieve()函數。

語法格式:

dw_control.Retrieve()

如果數據窗口控件上的數據窗口對象是有檢索參數的,就要在這個函數調用時加上檢索參數。而且檢索參數必須和數據窗口對象中定義順序一致。

此函數返回一個長整型的數據,代表檢索出來的數據行數。如果發生錯誤,將返回-1。

三、更新數據

當用戶對數據窗口對象內的數據修改後,想把這些修改反映到數據庫中去時,必須使用Update()函數。

語法格式:

dw_control.Update()

這個更新可能成功,也可能失敗。一般在這個函數被調用之後,總是要做一個檢查。請看下面的例子:

Int li_return

li_return = dw_1.Update()

IF li_return = 1 THEN

COMMIT USING SQLCA;

ELSE

ROLLBACK USING SQLCA;

END IF

在這段代碼中,首先對數據窗口控件進行更新操作。但是更新只是把數據寫入到客戶機的內存,並沒有提交到數據庫中。如果更新成功,就把它提交到數據庫中,如果更新失敗,就回滾到當前的事務。

行操作

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

一、插入行

在DataWindow中插入一行,可以使用InsertRow()函數。

語法格式:

dw_control.InsertRow(rownumber)

dw_control是數據窗口控件名,rownumber是要插入行的的行號。如果這個參數爲0,代表在當前DataWindow的最後一行插入一空行。

InsertRow()函數返回一個長整型值,以此來代表插入的行號。如果插入失敗,則返回-1。

二、刪除行

要刪除DataWindow內的一行數據,則要使用DeleteRow()函數。

語法格式:

dw_control.DeleteRow(rownumber)

其中rownumber是要刪除的行號。如果該值爲0,表示刪除當前行。如果刪除成功,返回1,失敗則返回-1。

三、設置當前行

如果要設置DataWindow中的某行爲當前行,可以使用SetRow()函數。

語法格式:

dw_control.SetRow(rownumber)

其中rownumber是要設置爲當前行的行號。如果函數返回1表示成功,返回-1代表失敗。

四、獲取當前行

如果想要設置DataWindow中的某行爲當前行,可以使用GetRow()函數。

語法格式:

dw_control.GetRow()

該函數沒有參數,它返回一個長整型,代表當前行號。如果返回-1代表失敗。如果返回0代表沒有選中任何行。

五、選擇行

如果想要在DataWindow中加亮顯示某一行或取消加亮顯示某一行,可以使用SelectRow()函數。

語法格式:

dw_control.SelectRow(rownumber,select)

其中,rownumber表示要加亮或者取消加這顯示的行號,0表示所有行。select是一個布爾類型的值,TRUE表示加亮,FALSE表示取消加亮顯示。該函數返回1時表示成功,返回-1時表示失敗。

如果想要直接設置某一行爲加亮,需要首先取消其它行的加亮顯示狀態,采用如下的兩行代碼:

dw_1.SelectRow(0,FALSE)

dw_1.SelectRow(rownumber,TRUE)

六、獲取選擇行

如果想要獲取當前DataWindow中加亮顯示的行,可以使用GetSelectRow()函數。

語法格式:

dw_control.GetSelectRow(rownumber)

其中,rownumber爲開始查找的行的行號,0表示從頭開始查找。該函數返回一個長整數,表示從rownumber開始查找第一個加亮顯示的行的行號。如果失敗返回0。

七、滾動行

如果在DataWindow的末尾插入一行數據,而當前行是在DataWindow的中央,那麽這種插入可能不會被用戶覺察。爲了改變這種情況,可以滾動行到DataWindow的末尾,這樣用戶就能發現新的改變。要滾動行,可以使用ScrollToRow()函數。

語法格式:

dw_control.ScrollToRow(rownumber)

該函數返回1時表示成功,返回-1時表示失敗。

與ScrollToRow()函數據功能相關的還有如下幾個函數:

ScrollPriorRow():向上滾動一行

ScrollNextRow():向下滾動一行

列操作

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

一、獲取列

如果要獲取當前的列號,可以使用GetColumn()函數,如果要獲取當前的列名,可以使用GetColumnName()函數。

語法格式:

dw_control.GetColumn()

dw_control.GetColumnName()

這兩個函數都沒有參數,GetColumn()函數返回一個長整型值,代表當前的列號,GetColumnName()函數返回當前列的列名。如果返回0,表示當前沒有任何列被選擇返回-1表示失敗。

二、設置列

要設置某一列爲DataWindow中的當前列,可以使用SetColumn()函數。

語法格式:

dw_control.SetColumn(column)

其中column既可以是列號,也可以是列名。當該函數返回1時表示成功,返回-1時表示失敗。

數據操作

數據操作類的函數主要是對DataWindow中的數據進行獲取、設置。

一、獲取數據

如果要從DataWindow的指定行和列中獲取數據,就要使用GetItem系列的函數。這個系列的函數共有五個,分別是對字符串、數字、日期、日期時間和小數。

語法格式:

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參數表示行號,column可以是列號或列名。

二、設置數據

與獲取數據所用的函數不同,設置DataWindow內指定行列處的數據只要使用一個SetItem()函數就可以了。

語法格式:

dw_control.SetItem(rownumber, column, value)

其中rownumber表示行號,column可以是列號,也可以是列名,value表示要設置的值。但是該必須與DataWindow中指定的行列處的數據類型一致,不然PowerBuilder會報錯。

SetItem()函數返回1時表示成功,返回-1時表示失敗。

三、數據排序

如果希望對DataWindow內的數據進行重新排序,而又不想重新從數據庫中檢索數據,可以使用SetSort()和Sort()函數。這兩個函數一起完成對DataWindow進行排序的功能。其中SetSort()函數用于設置如何排序,Sort()函數用于對DataWindow實際進行排序。

語法格式:

dw_control.SetSort(expression)

dw_control.Sort()

其中expression是一個字符串,表示排序的表達式,它的具體值是一個列名後面加一個空格,然後是"A",表示升序,或"D",表示降序。如果有多個列要同時進行排序,它們之間用逗號隔開。

例:dw_1.SetSort("name A,xh D")

這兩個函數都是返回1表示成功,返回-1表示失敗。

四、數據過濾

如果希望對DataWindow內的數據進行過濾而不重新從數據庫中檢索數據,可以使用SetFilter()和Filter()函數。它們一起完成對數據的過濾功能。其中SetFilter()函數用來設置過濾條件,Filter()函數用于對DataWindow進行過濾。

語法格式:

dw_control.SetFiter(expression)

dw_control.Fiter()

其中expression是一個字符串,表示過濾的條件,它實際是一個邏輯表達式。

例:

dw_1.SetFilter("id>\'003\' AND name like\'王%\'")

dw_1.Filter()

這兩個函數都是返回1表示成功,返回-1表示失敗。

五、數據檢查

PowerBuilder提供了兩個函數用于數據的檢查,它們是DeleteCount()和ModifiedCount(),其作用分別是檢查DataWindow中的數據自上一次更新到現在,被刪除的行數和被修改的行數。它們一般在窗口的CloseQuery事件中使用,用來檢查該窗口的DataWindow中的數據是否有尚未保存的修改。

語法格式:

dw_control.DeleteCount()

dw.control.ModifiedCount()

它們分別返回從上一次更新到現在,DataWindow中被刪除和被修改的行數。如果沒有行被刪除或被修改,那麽它們返回0。如果出現錯誤則返回-1。

一般情況下,如果窗口中含有可供修改的數據窗口對象,那麽在窗口的CloseQuery事件中通常使用如下代碼檢查數據窗口對象中是否有尚未保存的數據:

Int li_return

IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN

li_return = MessageBox("提示","數據尚未保存,是否保存?",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

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
本節介紹的主要內容如下: · 與數據庫有關的函數 · 行操作 · 列操作 · 數據操作 PowerBuilder爲數據窗口控件提供了豐富的函數,這些函數使用戶能夠在使用數據窗口控件時得心應手。 與數據庫有關的函數 這類函數完成與數據庫有關的功能。 一、連接數據庫 連接數據庫也就是指定事務對象。PowerBuilder提供了兩個函數:SetTrans()和SetTransObject()。 語法格式: dw_control.SetTrans(TransactionObject) dw_control.SetTransObject(TransactionObject) 其中,dw_control是所使用的數據窗口控件,transactionObject是所要指定的事務對象。 這兩個函數有一個重要的區別就是在使用SetTrans()函數時,用戶不需做任何數據初始化或事務對象初始化工作。用戶只需要在這裏填充一個事務對象,PB就會自動完成對該事物對象的初始化以及和數據庫連接的工作。而使用SetTransObject()函數時,用戶必須首先把所用的事務對象連接到數據庫上。 但是,這並不意味著SetTrans()函數比SetTransObject()函數更好,使用SetTrans()函數時,每調用一次函數必須連接一次數據庫,因爲這個函數在每個事務處理的末端都會執行Disconnect語句。與此相反,使用SetTransObject()函數可以爲數據庫維持一個開放性的連接。因此在一般情況下,爲了提高效率,總是采用SetTransObject()函數。 這兩個函數都是成功時返回1,發生錯誤時返回-1。 二、檢索數據 用于檢索數據的函數只有一個,就是Retrieve()函數。 語法格式: dw_control.Retrieve() 如果數據窗口控件上的數據窗口對象是有檢索參數的,就要在這個函數調用時加上檢索參數。而且檢索參數必須和數據窗口對象中定義順序一致。 此函數返回一個長整型的數據,代表檢索出來的數據行數。如果發生錯誤,將返回-1。 三、更新數據 當用戶對數據窗口對象內的數據修改後,想把這些修改反映到數據庫中去時,必須使用Update()函數。 語法格式: dw_control.Update() 這個更新可能成功,也可能失敗。一般在這個函數被調用之後,總是要做一個檢查。請看下面的例子: Int li_return li_return = dw_1.Update() IF li_return = 1 THEN COMMIT USING SQLCA; ELSE ROLLBACK USING SQLCA; END IF 在這段代碼中,首先對數據窗口控件進行更新操作。但是更新只是把數據寫入到客戶機的內存,並沒有提交到數據庫中。如果更新成功,就把它提交到數據庫中,如果更新失敗,就回滾到當前的事務。 行操作 行操作的函數主要是對數據庫中的數據進行插入、刪除或選擇操作。 一、插入行 在DataWindow中插入一行,可以使用InsertRow()函數。 語法格式: dw_control.InsertRow(rownumber) dw_control是數據窗口控件名,rownumber是要插入行的的行號。如果這個參數爲0,代表在當前DataWindow的最後一行插入一空行。 InsertRow()函數返回一個長整型值,以此來代表插入的行號。如果插入失敗,則返回-1。 二、刪除行 要刪除DataWindow內的一行數據,則要使用DeleteRow()函數。 語法格式: dw_control.DeleteRow(rownumber) 其中rownumber是要刪除的行號。如果該值爲0,表示刪除當前行。如果刪除成功,返回1,失敗則返回-1。 三、設置當前行 如果要設置DataWindow中的某行爲當前行,可以使用SetRow()函數。 語法格式: dw_control.SetRow(rownumber) 其中rownumber是要設置爲當前行的行號。如果函數返回1表示成功,返回-1代表失敗。 四、獲取當前行 如果想要設置DataWindow中的某行爲當前行,可以使用GetRow()函數。 語法格式: dw_control.GetRow() 該函數沒有參數,它返回一個長整型,代表當前行號。如果返回-1代表失敗。如果返回0代表沒有選中任何行。 五、選擇行 如果想要在DataWindow中加亮顯示某一行或取消加亮顯示某一行,可以使用SelectRow()函數。 語法格式: dw_control.SelectRow(rownumber,select) 其中,rownumber表示要加亮或者取消加這顯示的行號,0表示所有行。select是一個布爾類型的值,TRUE表示加亮,FALSE表示取消加亮顯示。該函數返回1時表示成功,返回-1時表示失敗。 如果想要直接設置某一行爲加亮,需要首先取消其它行的加亮顯示狀態,采用如下的兩行代碼: dw_1.SelectRow(0,FALSE) dw_1.SelectRow(rownumber,TRUE) 六、獲取選擇行 如果想要獲取當前DataWindow中加亮顯示的行,可以使用GetSelectRow()函數。 語法格式: dw_control.GetSelectRow(rownumber) 其中,rownumber爲開始查找的行的行號,0表示從頭開始查找。該函數返回一個長整數,表示從rownumber開始查找第一個加亮顯示的行的行號。如果失敗返回0。 七、滾動行 如果在DataWindow的末尾插入一行數據,而當前行是在DataWindow的中央,那麽這種插入可能不會被用戶覺察。爲了改變這種情況,可以滾動行到DataWindow的末尾,這樣用戶就能發現新的改變。要滾動行,可以使用ScrollToRow()函數。 語法格式: dw_control.ScrollToRow(rownumber) 該函數返回1時表示成功,返回-1時表示失敗。 與ScrollToRow()函數據功能相關的還有如下幾個函數: ScrollPriorRow():向上滾動一行 ScrollNextRow():向下滾動一行 列操作 列操作類的函數主要是選擇指定的列和獲取列的信息。 一、獲取列 如果要獲取當前的列號,可以使用GetColumn()函數,如果要獲取當前的列名,可以使用GetColumnName()函數。 語法格式: dw_control.GetColumn() dw_control.GetColumnName() 這兩個函數都沒有參數,GetColumn()函數返回一個長整型值,代表當前的列號,GetColumnName()函數返回當前列的列名。如果返回0,表示當前沒有任何列被選擇返回-1表示失敗。 二、設置列 要設置某一列爲DataWindow中的當前列,可以使用SetColumn()函數。 語法格式: dw_control.SetColumn(column) 其中column既可以是列號,也可以是列名。當該函數返回1時表示成功,返回-1時表示失敗。 數據操作 數據操作類的函數主要是對DataWindow中的數據進行獲取、設置。 一、獲取數據 如果要從DataWindow的指定行和列中獲取數據,就要使用GetItem系列的函數。這個系列的函數共有五個,分別是對字符串、數字、日期、日期時間和小數。 語法格式: 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參數表示行號,column可以是列號或列名。 二、設置數據 與獲取數據所用的函數不同,設置DataWindow內指定行列處的數據只要使用一個SetItem()函數就可以了。 語法格式: dw_control.SetItem(rownumber, column, value) 其中rownumber表示行號,column可以是列號,也可以是列名,value表示要設置的值。但是該必須與DataWindow中指定的行列處的數據類型一致,不然PowerBuilder會報錯。 SetItem()函數返回1時表示成功,返回-1時表示失敗。 三、數據排序 如果希望對DataWindow內的數據進行重新排序,而又不想重新從數據庫中檢索數據,可以使用SetSort()和Sort()函數。這兩個函數一起完成對DataWindow進行排序的功能。其中SetSort()函數用于設置如何排序,Sort()函數用于對DataWindow實際進行排序。 語法格式: dw_control.SetSort(expression) dw_control.Sort() 其中expression是一個字符串,表示排序的表達式,它的具體值是一個列名後面加一個空格,然後是"A",表示升序,或"D",表示降序。如果有多個列要同時進行排序,它們之間用逗號隔開。 例:dw_1.SetSort("name A,xh D") 這兩個函數都是返回1表示成功,返回-1表示失敗。 四、數據過濾 如果希望對DataWindow內的數據進行過濾而不重新從數據庫中檢索數據,可以使用SetFilter()和Filter()函數。它們一起完成對數據的過濾功能。其中SetFilter()函數用來設置過濾條件,Filter()函數用于對DataWindow進行過濾。 語法格式: dw_control.SetFiter(expression) dw_control.Fiter() 其中expression是一個字符串,表示過濾的條件,它實際是一個邏輯表達式。 例: dw_1.SetFilter("id>\'003\' AND name like\'王%\'") dw_1.Filter() 這兩個函數都是返回1表示成功,返回-1表示失敗。 五、數據檢查 PowerBuilder提供了兩個函數用于數據的檢查,它們是DeleteCount()和ModifiedCount(),其作用分別是檢查DataWindow中的數據自上一次更新到現在,被刪除的行數和被修改的行數。它們一般在窗口的CloseQuery事件中使用,用來檢查該窗口的DataWindow中的數據是否有尚未保存的修改。 語法格式: dw_control.DeleteCount() dw.control.ModifiedCount() 它們分別返回從上一次更新到現在,DataWindow中被刪除和被修改的行數。如果沒有行被刪除或被修改,那麽它們返回0。如果出現錯誤則返回-1。 一般情況下,如果窗口中含有可供修改的數據窗口對象,那麽在窗口的CloseQuery事件中通常使用如下代碼檢查數據窗口對象中是否有尚未保存的數據: Int li_return IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN li_return = MessageBox("提示","數據尚未保存,是否保存?",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
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有