<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825447
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    數(shù)據(jù)窗口控件函數(shù)

    本節(jié)將介紹:
    · 與數(shù)據(jù)庫有關(guān)的函數(shù)
    · 行操作
    · 列操作
    · 數(shù)據(jù)操作

    本節(jié)重點:
    · 數(shù)據(jù)窗口控件的作用

    本節(jié)難點:
    ·  

    本節(jié)要求:
    · 掌握數(shù)據(jù)窗口控件的作用

    PowerBuilder為數(shù)據(jù)窗口控件提供了豐富的函數(shù),這些函數(shù)使用戶能夠在使用數(shù)據(jù)窗口控件時得心應(yīng)手。

    與數(shù)據(jù)庫有關(guān)的函數(shù)

    這類函數(shù)完成與數(shù)據(jù)庫有關(guān)的功能。

    一、連接數(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ù)


    當(dāng)用戶對數(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ù)庫中,如 果更新失敗,就回滾到當(dāng)前的事務(wù)。

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

    一、插入行


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

    二、刪除行


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

    三、設(shè)置當(dāng)前行


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

    四、獲取當(dāng)前行


    如果想要獲取DataWindow中的某行為當(dāng)前行,可以使用GetRow()函數(shù)。
    語法格式:
    dw_control.GetRow()
    該函數(shù)沒有參數(shù),它返回一個長整型,代表當(dāng)前行號。如果返回-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)


    六、獲取選擇行


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

    七、滾動行


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

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

    一、獲取列


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

    二、設(shè)置列


    要設(shè)置某一列為DataWindow中的當(dāng)前列,可以使用SetColumn()函數(shù)。
    語法格式:
    dw_control.SetColumn(column)
    其中column既可以是列號,也可以是列名。當(dāng)該函數(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

    轉(zhuǎn)自:http://hi.baidu.com/sundl2268/blog/item /ecd8c513085daa0b5baf532d%2Ehtml



    posted on 2010-05-24 09:19 Ke 閱讀(548) 評論(0)  編輯  收藏 所屬分類: powerBuilder
    主站蜘蛛池模板: 久久久久久夜精品精品免费啦| 手机看黄av免费网址| 久久综合亚洲色一区二区三区| 97国产免费全部免费观看| 午夜亚洲国产理论片二级港台二级| 亚洲中文字幕在线第六区| 免费观看无遮挡www的视频| 色吊丝免费观看网站| 亚洲成a人片77777老司机| 免费网站看v片在线香蕉| 久久久久久免费一区二区三区| 亚洲精品美女久久久久久久| 亚洲人成网站在线播放vr| 日本视频免费在线| 日韩精品人妻系列无码专区免费| 亚洲AV无码一区二区三区网址| 4444亚洲国产成人精品| 亚洲第一成人影院| 毛片免费视频观看| 久久精品成人免费看| 免费人成大片在线观看播放| 亚洲国产成人精品电影| 亚洲精品国产美女久久久| 四虎永久精品免费观看| 69影院毛片免费观看视频在线| a级毛片免费观看网站| 亚洲第一街区偷拍街拍| 亚洲明星合成图综合区在线| 亚洲伊人久久精品影院| 国产不卡免费视频| 女人被男人躁的女爽免费视频 | 亚洲一卡2卡4卡5卡6卡在线99| 亚洲熟伦熟女新五十路熟妇| 全免费a级毛片免费看无码| 精品国产污污免费网站aⅴ| a毛片全部免费播放| 老司机福利在线免费观看| 亚洲人片在线观看天堂无码 | 中国一级毛片视频免费看| 美女视频黄a视频全免费网站色| 亚洲啪啪AV无码片|