• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 取數據窗口發生變化情況的一個函數

    發表于:2007-05-25來源:作者:點擊數: 標簽:發生窗口情況變化一個
    取數據窗口發生變化的一個函數 by ...---... ( QQ: 21417511 ) 當我們在數據窗口發生數據變化時,有時需要將變化的情況(變化的列,變化前后的值)記錄下來,為此,寫了一個函數,不敢獨享,貼上來望各位大俠指證! / *------------------------------------

    取數據窗口發生變化的一個函數
    by ...---... ( QQ: 21417511 )

    當我們在數據窗口發生數據變化時,有時需要將變化的情況(變化的列,變化前后的值)記錄下來,為此,寫了一個函數,不敢獨享,貼上來望各位大俠指證!

    /*------------------------------------------------------------------------------

     Function:   public u_dw.of_Getmodi

     Returns:         String

     Parameters:      reference String as_modicol[]

     Description:  

    --------------------------------------------------------------------------------
     2005-04-20 2.0.0  Initial version by cuixuf (Mail:cuixuf@sina.com)
    ------------------------------------------------------------------------------*/

    string ls_modi[], &
       ls_col[], &
       ls_coltext[], &
       ls_modicol[], &
       ls_key[], &
       ls_type[], &
       ls_keycontent[], &
       ls_filter, &
       ls_find, &
       ls_modicontent   
    any  la_data_s[], &
       la_data_t[]
    long  ll_colcnt, &
       ll_index, &
       ll_find, &
       ll_row_s, &
       ll_rowcnt_s, &
       ll_row_t, &
       ll_rowcnt_t
    datastore lds_source

    this.aclearcase/" target="_blank" >ccepttext( )

    lds_source = create datastore
    lds_source.dataobject = this.dataobject
    lds_source.settransobject(sqlca)
    ls_filter = this.Describe("DataWindow.Table.Filter")
    lds_source.setfilter( ls_filter )
    lds_source.filter()
    ll_rowcnt_s = lds_source.retrieve( )

    ll_colcnt = long(this.Describe("DataWindow.Column.Count"))
    for ll_index = 1 to ll_colcnt
     ls_col[ll_index] = this.Describe("#"+string(ll_index)+".Name")
     ls_key[ll_index] = this.Describe("#"+string(ll_index) + ".Key")
     ls_type[ll_index] = this.Describe( "#" + String(ll_Index) + ".ColType")
     ls_coltext[ll_index] = of_Strip(this.Describe( ls_col[ll_index] + "_t.Text"))
    next
    //source-->target
    for ll_row_s = 1 to ll_rowcnt_s
     //get col name(key name) and value
     ls_keycontent[ll_row_s] = ''
     ls_modi[ll_row_s] = ''
     ls_find = ''
     for ll_index = 1 to ll_colcnt
      la_data_s[ll_index] = of_getitem( lds_source, ll_row_s, ll_index, ls_type[ll_index])
      If ls_key[ll_index] = "yes" then
       If gnv_fun.uf_isnull(ls_find) then
        ls_find = "(" + ls_col[ll_index] + "=" + of_getstring(la_data_s[ll_index], ls_type[ll_index]) + ")"
       else
        ls_find = ls_find + " and (" + ls_col[ll_index] + "=" + of_getstring(la_data_s[ll_index], ls_type[ll_index]) + ")"
       end if
       if gnv_fun.uf_isnull(ls_keycontent[ll_row_s]) then
        ls_keycontent[ll_row_s] = ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])
       else
        ls_keycontent[ll_row_s] = ls_keycontent[ll_row_s]+","+ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])
       end if
      end if
     next
     
     ll_find = this.find( ls_find , 1, this.rowcount())
     //find > 0 -->edit
     If ll_find > 0 and ll_find <= this.rowcount( ) then
      for ll_index = 1 to ll_colcnt
       la_data_t[ll_index] = this.of_getitem( ll_find, ll_index, ls_type[ll_index])
       If (la_data_s[ll_index] <> la_data_t[ll_index]) or &
        (isNull(la_data_s[ll_index]) and Not isNull(la_data_t[ll_index])) or &
        (Not isNull(la_data_s[ll_index]) and isNull(la_data_t[ll_index])) then
        If gnv_fun.uf_isNull(ls_modi[ll_row_s]) then
         ls_modi[ll_row_s] = ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])+" -> " + of_getstring(la_data_t[ll_index], ls_type[ll_index])
        else
         ls_modi[ll_row_s] = ls_modi[ll_row_s] + ","+ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])+" -> " + of_getstring(la_data_t[ll_index], ls_type[ll_index])
        end if
        ls_modicol[Upperbound(ls_modicol) + 1] = ls_coltext[ll_index]
       end if
      next
     //find = 0 -->delete
     else
      for ll_index = 1 to ll_colcnt
       If gnv_fun.uf_isNull(ls_modi[ll_row_s]) then
        ls_modi[ll_row_s] = ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])+" -> [Null]"
       else
        ls_modi[ll_row_s] = ls_modi[ll_row_s] + ","+ls_coltext[ll_index]+":"+of_getstring(la_data_s[ll_index], ls_type[ll_index])+" -> [Null]"
       end if
       ls_modicol[Upperbound(ls_modicol) + 1] = ls_coltext[ll_index]
      next
     end if
     //modi content
     If not gnv_fun.uf_isnull( ls_modi[ll_row_s]) then
      if gnv_fun.uf_isnull( ls_modicontent ) then
       ls_modicontent = ls_keycontent[ll_row_s] + "~t" + ls_modi[ll_row_s]
      else
       ls_modicontent = ls_modicontent + "~r~n" + ls_keycontent[ll_row_s] + "~t" + ls_modi[ll_row_s]
      end if
     end if
    next

    //target-->source
    ll_rowcnt_t = this.rowcount( )
    for ll_row_t = 1 to ll_rowcnt_t
     ls_keycontent[ll_row_t] = ''
     ls_modi[ll_row_t] = ''
     ls_find = ''
     //get col name(key name) and value
     for ll_index = 1 to ll_colcnt
      la_data_t[ll_index] = of_getitem( ll_row_t, ll_index, ls_type[ll_index])
      If ls_key[ll_index] = "yes" then
       If gnv_fun.uf_isnull(ls_find) then
        ls_find = "(" + ls_col[ll_index] + "=" + of_getstring(la_data_t[ll_index], ls_type[ll_index]) + ")"
       else
        ls_find = ls_find + " and (" + ls_col[ll_index] + "=" + of_getstring(la_data_t[ll_index], ls_type[ll_index]) + ")"
       end if
       if gnv_fun.uf_isnull(ls_keycontent[ll_row_t]) then
        ls_keycontent[ll_row_t] = ls_coltext[ll_index]+":"+of_getstring(la_data_t[ll_index], ls_type[ll_index])
       else
        ls_keycontent[ll_row_t] = ls_keycontent[ll_row_t]+","+ls_coltext[ll_index]+":"+of_getstring(la_data_t[ll_index], ls_type[ll_index])
       end if
      end if
     next
     
     ll_find = lds_source.find( ls_find , 1, lds_source.rowcount())
     //find > 0 -->have done
     If ll_find > 0 and ll_find <= this.rowcount( ) then
     //find = 0 -->new
     else
      for ll_index = 1 to ll_colcnt
       if not isnull(la_data_t[ll_index]) then
        If gnv_fun.uf_isNull(ls_modi[ll_row_t]) then
         ls_modi[ll_row_t] = ls_coltext[ll_index]+": [Null] -> " +of_getstring(la_data_t[ll_index], ls_type[ll_index])
        else
         ls_modi[ll_row_t] = ls_modi[ll_row_t] + ","+ls_coltext[ll_index]+": [Null] -> " +of_getstring(la_data_t[ll_index], ls_type[ll_index])
        end if
        ls_modicol[Upperbound(ls_modicol) + 1] = ls_coltext[ll_index]
       end if
      next
     end if
     //modi content
     if not gnv_fun.uf_isnull( ls_modi[ll_row_t] ) then
      if gnv_fun.uf_isnull( ls_modicontent ) then
       ls_modicontent = ls_keycontent[ll_row_t] + "~t" + ls_modi[ll_row_t]
      else
       ls_modicontent = ls_modicontent + "~r~n" + ls_keycontent[ll_row_t] + "~t" + ls_modi[ll_row_t]
      end if
     end if
    next

    int   i,j
    boolean lb_exist
    for i = 1 to Upperbound(ls_modicol)
     lb_exist = false
     for j = 1 to UpperBound(as_modicol)
      If ls_modicol[i] = as_modicol[j] then
       lb_exist = true
       exit
      End If
     next
     If not lb_exist then as_modicol[Upperbound(as_modicol)+1] = ls_modicol[i]
    next
    return ls_modicontent  


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>