取計算列值


10 樓dawugui(瀟灑老烏龜)回覆於 2006-08-05 21:39:26 得分 0

0150   --   數據窗口中各項指標的獲取方法   
  http://www.51pb.com/viewthread.php?tid=1005&extra=page%3D6   
    
  1、得到當前鼠標所指對象所在的帶區   
    string   str_band   
    str_band=GetBandAtPointer()   //得到當前鼠標所指對象所在的帶區   
    str_band=left(str_band,(pos(str_band,'~t')   -   1))//得到"header"、"detail"等   
    if   str_band<>'header'   then   return   //單擊非頭區,退出   
    
  2、得到鼠標指向的列對象名   
    str_object=GetObjectAtPointer()   //得到當前鼠標所指對象名   
    str_object=left(str_object,(pos(str_object,'~t')   -   1))   
    //得到列對象名(默認爲列名_t爲列標題)   
    str_column=left(str_object,(len(str_title)   -   2))   
    //判斷該名稱是否爲列名字   
    if   this.describe(str_column+".band")='!'   then   return   //非是列名,即列標題不是按正常規律起名的。   
    
  3、得到當前行、列,總行、列   //this   針對數據窗口而言   
    li_col   =   this.GetColumn()   
    li_ColCount   =   long(describe(this,"datawindow.column.count"))   
    ll_row   =   this.GetRow()   
    ll_RowCount   =   this.RowCount()   
    //設置當前行、列     
    scrolltorow(this,ll_Row)   
    setrow(this,ll_Row)   
    setcolumn(this,li_col)     
    this.SetFocus()   
    
  4、得到所有列標題   
    ll_colnum   =   Long(dw_1.object.datawindow.column.count)   
    for   i   =   1   to   ll_colnum   
     //得到標題頭的名字   
     ls_colname   =   dw_1.describe('#'   +   string(i)   +   ".name")   +   "_t"   
     ls_value   =   dw_1.describe(ls_colname   +   ".text")   
    next   
    
  5、如何用代碼取得數據窗口彙總帶計算列的值?     
    String   ls_value   
    ls_value   =   dw_1.Describe("Evaluate("'compute_1',1)")   
    //如果是數值型,要轉換。     
    
  6、取得單擊的列標題、列名、數據庫字段名   
    string   ls_dwo   
    long   ll_pos   
    string   ls_type   
    string   ls_title   
    string   ls_column   
    string   ls_dbname   
    if   Not   KeyDown(KeyControl!)   then   return   
    ls_dwo   =   dwo.Name   
    if   trim(ls_dwo)   =   ''   or   isnull(ls_dwo)   then   return   
    ls_type   =   This.describe(ls_dwo   +   '.type')   
    if   ls_type   =   'column'   then   
     ls_title   =   This.describe(ls_dwo   +   '_t.text')//標題   
     ls_column   =   This.describe(ls_dwo   +   '.Name')   //數據窗口列名   
     ls_dbname   =   This.describe(ls_dwo   +   '.dbname')   //數據庫中字段名   
     messagebox('信息',   '標   題   文   本   :'   +   ls_title   +   &   
     '~r~n數據窗口列名   :'   +   ls_column   +   &   
     '~r~n數據庫中字段名:'   +   ls_dbname   )   
    end   if   
    
  7、窗口爲w_gcde內,放入一個DW_1,如何得到dw_1內的某列值yuonghu_id列的內容   
    long   lng_column_count   
    integer   i   
    string   str_column[]   //列名   
    string   str_column_text[]  //text的名字     
    //得到數據窗口的總列數   
    lng_column_count   =   long(dw_1.Describe("DataWindow.Column.Count"))     
    //循環依次讀取   
    for   i   =   1   to   lng_column_count     
     str_column   =   dw_1.Describe("#"+string(i)+".name")   
     str_column_text   =   dw_1.Describe(str_column   +   "_t.text")   
    next   
    
  8、定義要打印的頁碼   
    dw_1.Modify("DataWindow.Print.Page.Range='"+sle_1.text+"'")   
    dw_1.print()   
    
  9、取到當前是第幾頁   
    dw_1.describe("evaluate('page()',"+string(dw_1.getrow())+")")   
    //注意返回值是STRING型的   
    
  10、每15行統計一次   
    在   summary   欄中寫   ceiling(Getrow()/15)   
    
  11、如何判斷當前行是不是當前頁中的最後一行   
    if   dw_1.getrow()=long(dw_1.describe("datawindow.lastrowonpage"))   then   
    else   
    end   if     
 Top

11 樓dawugui(瀟灑老烏龜)回覆於 2006-08-05 21:41:40 得分 0

0164   --   怎樣得到計算域的值   
  http://www.51pb.com/viewthread.php?tid=1022&extra=page%3D5   
    
    對於一般類型的數據窗口,我們可以用這種辦法:先爲計算域取名,如“count_id”,取值過程如下(除了分組的數據窗口,一般計算域都用1):   
    long   ll_count_id     
    如果在detail區:ll_count_id   =   dw_1.getitemnumber(1,″count_id″)   
    如果在summary區:ll_count_id   =   dw_1.object.compute_1[1]     
    
    
    而對於複合報表,須先用GetChild()函數得到其中的report,再取此report中計算域的值。假設此   report   name   爲“report_department”(注意不要混淆report   name   與子數據窗口本身的名字),計算域名爲count_id,則取值過程如下:   
    DataWindowChild   dwc_child   
    long   ll_count_id     
    dw_1.GetChild(″report_department″   
    dwc_child)   

    ll_count_id   =   dwc_child.getitemnumber(1,″count_id″) 
發佈了138 篇原創文章 · 獲贊 2 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章