取数据窗口发生变化情况的一个函数
发表于:2007-07-02来源:作者:点击数:
标签:
取数据窗口发生变化的一个函数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.a
clearcase/" target="_blank" >ccepttext( )
lds_source = create datastorelds_source.dataobject = this.dataobjectlds_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-->targetfor 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 ifnext
//target-->sourcell_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 ifnext
int i,jboolean lb_existfor 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]nextreturn ls_modicontent
原文转自:http://www.ltesting.net