Datawindow的使用技巧 IT man

2021-04-18 07:43:11 字數 4819 閱讀 7640

csdn-blogdatawindow的使用技巧 bsp

當retrieve時不清除原有datawindow資料

當你呼叫retrieve函式,powerbuilder自動清除原有datawindow然後retrieve資料。在datawindowretrievestart事件中,使用return2,這樣powerbuilder不會清除原有資料而是追加新資料。

discribe的使用例項 anydata

integerli_col,li_colcount,li_row

stringls_data_type

li_row=dw_1.getrow()

ifli_row<=0thenreturn

li_colcount=dw_1.object.datawindow.column.count  //獲得資料來源列數

//說明:上句功能與dw_1.describe("datawindow.column.count")一樣

forli_col=1toli_colcount

ls_data_type=dw_1.describe("#"+string(li_col)+".coltype") //列資料型別

choosecasels_data_type

case"number"

data[li_col]=dw_1.getitemnumber(li_row,li_col)

case"string"

data[li_col]=dw_1.getitemstring(li_row,li_col)

case"date"

data[li_col]=dw_1.getitemdate(li_row,li_col)

endchoose next

//設定資料視窗為保護狀態gf_dw_setprotect(dw_name)

stringcol_name inti

fori=1tointeger(dw_name.describe("datawindow.column.count"))//資料來源列數

col_name=dw_name.describe("#"+trim(string(i))+".name")//欄位名

dw_name.modify(col_name+".background.color="+string(rgb(212,208,200)))

dw_name.modify(col_name+".protect=1")

dw_name.modify(col_name+".update=0") next

ls_cjfs=describe("evaluate('lookupdisplay(cjfs)',"+string(row)+")")

ifdescribe(ls_col+".dbname")<>'!'then

this.setsort(ls_col+'a')

this.sort() endif

ls_dddw=describe("cjfs.dddw.name")  //獲得子資料窗名

dw_1.dataobject='d_test'  ef.  ls_emp=dw_1.object.emp[row]

ls_colname=this.object.cname[row]

ls_name=ls_colname+'.visible'

li_current_visibility=integer(dw_criteria.describe(ls_name))

li_new_visibility=1-li_current_visibility

ifli_new_visibility=1then

selectrow(row,true)

il_highlightedcolumn=row 

is_visiblecolumns[upperbound(is_visiblecolumns)+1]=ls_colname else

selectrow(row,false)

il_highlightedcolumn=0 

li_arraybound=upperbound(is_visiblecolumns)  endif

ls_name=ls_colname+'.visible="'+string(li_new_visibility)+'"'

ls_moderr=dw_criteria.modify(ls_name)

dw_criteria.modify("datawindow.querysort=yes")

//獲得子資料窗,存入ldw_child

datawindowchild  ldw_child

dw_dept.getchild("dept_head_id",ldw_child) //指定子資料窗

dw_dept.object.dept_head_id.dddw.name='d_dddw_emp_by_dept'

關於"縮放"

//ue_zoom()

int li_factor

m_nest lm_menu

lm_menu=this.menuid

//initializeli_factortozero

li_factor=0

iflm_menu.m_display.m_zoom.m_20%.checkedthen 

li_factor=20

elseiflm_menu.m_display.m_zoom.m_40%.checkedthen

li_factor=40

elseiflm_menu.m_display.m_zoom.m_60%.checkedthen

li_factor=60

elseiflm_menu.m_display.m_zoom.m_80%.checkedthen

li_factor=80

elseiflm_menu.m_display.m_zoom.m_100%.checkedthen

li_factor=100

elseiflm_menu.m_display.m_zoom.m_200%.checkedthen

li_factor=200 endif

ifli_factor>0then

dw_1.object.datawindow.print.preview.zoom=li_factor endif 撤銷修改

//gettheoriginalvalueofthisrow/column

ll_row=dw_cust.getrow()

ll_col=dw_cust.getcolumn()

ifll_row>0andll_col>0then

ls_coltype=dw_cust.describe("#"+string(ll_col)+".coltype")

ifls_coltype="number"then

//從主緩衝區中取出資料庫中的初始數值

li_cell=dw_cust.getitemnumber(ll_row,ll_col,primary!,true)

//resetittotheoriginalvalue

dw_cust.setitem(ll_row,ll_col,li_cell)

else

ls_cell=dw_cust.getitemstring(ll_row,ll_col,primary!,true)

//resetittotheoriginalvalue

dw_cust.setitem(ll_row,ll_col,ls_cell)

endif

//resetthemodifiedflagforthisrowcolumnandcallwf_set_counts

//torecalculatealldisplayedrowcounts.

dw_cust.setitemstatus(ll_row,ll_col,primary!,notmodified!) endif

資料視窗物件的字段上0不顯示

在資料視窗物件的字段上,將format屬性設定為"##;"即可實現0值不顯示

利用資料視窗物件的update屬性同時更新幾個資料來源表

假設dw_1控制項中的資料視窗物件選自兩張表ss_jabase,ss_laysxx,當做完資料窗的修改後,利用資料窗的update屬性同時更新兩張表:

ifdw_1.update=1then

commit;

//makecustomertablethenewupdatetableandsetitskey.

ls_mod=ls_mod+"datawindow.table.updatetable='customer'"

ls_mod=ls_mod+"customer_id.key=yes"   else

stringls_dbname,ls_colcnt

ls_colcnt=dw_1.describe("datawindow.column.count")

ls_dbname=dw_1.describe("#"+string(i)+".dbname")

在乙個popup!視窗中顯示主視窗中檢索資料的行數

//在dw_main的retrieverow()事件中加入:

//scrollnextrowdisplaysrowsastheyareretrieved

dw_main.scrollnextrow()

//displayarunningcountofrowsretrieved

ifisvalid(w_show)then 

w_show.st_count.text=string(this.rowcount()) endif

datawindow的使用技巧 src="http://www.023rcsc.com/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">

C 中使用pb的dataWindow

使用方法詳細看 注意 需在 工具箱 中新增 新增選項卡 命名該選項卡後右擊選擇 選擇項 將dll檔案引用進來。出現問題1 缺少sybase引用,將目標框架改為 net framwork 4 此時會出現問題2.出現問題2 混合模式程式集是針對 v2.0.50727 版的執行時生成的,在沒有配置其他資訊...

使用儲存過程建立datawindow

今天饒有興趣,對使用stored procedures建立datawindow作了學習分析,作筆記如下 powerbuilder help 說明 ole db using database stored procedures in datawindow objects 說明 儲存過程返回的結果集,如...

提取DataWindow的引數

這裡說的datawindow是指dataobject的那個,而不是datawindow control datawindow可以有幾個引數,但是pb並沒有提供專門的函式去取得這些引數,dw syntax也沒有指出用那些關係可以去除這些引數資訊。但是這些資訊還是可以直接取得 dw control.ob...