Username: Password:

取数据窗口发生变化情况的一个函数-数据库专栏,其他相关
来源:作者: 发布时间:2007-12-25 13:37:57


取数据窗口发生变化的一个函数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.accepttext( )

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  

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅