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...