志翔科技有限公司後勤網

後勤等待處理訊息站,請各位成員努力消除待工區
 
首頁首頁  會員註冊會員註冊  登入登入  

分享 | 
 

 新增兩個資料視窗同步化的功能項

向下 
發表人內容
flying
Admin
avatar

文章數 : 207
注冊日期 : 2008-11-11

發表主題: 新增兩個資料視窗同步化的功能項   周四 11月 20, 2008 10:21 am

應用需求,當有個資料視窗d_ictran,其存檔目標有兩個Table,一個ictran交易明細,一個交易明細額外管理用檔icmast,為方便操作者在同一個版面輸入資料,將icmast以left join的關連方式,含到以ictran為主體的資料視窗中,當存檔時,icmast也需存檔.
若寫成function,如下

//處理icmast
for li_this=1 to li_totrow
 mseqno=w_paper.dw_sub1.getitemnumber(li_this,"seqno")
 mremark=w_paper.dw_sub1.getitemstring(li_this,"icmast_remark")
 if trim(mremark)="" or isnull(mremark) then
  delete from icmast where ttranno=:mtranno and seqno=:mseqno and icmast.trankind='ICTRANDETL' and icmast.trantype=:ls_icmasttype;
 else
  select count(*) into :li_count from icmast where ttranno=:mtranno and seqno=:mseqno and icmast.trankind='ICTRANDETL' and cmast.trantype=:ls_icmasttype;
  if li_count=0 then
   insert into icmast (ttranno,trantype,seqno,remark,trankind) values(:mtranno,:ls_icmasttype,:mseqno,:mremark,'ICTRANDETL');
  else
   update icmast set remark=:mremark where ttranno=:mtranno and seqno=:mseqno and icmast.trankind='ICTRANDETL' and icmast.trantype=:ls_icmasttype;
  end if
  if sqlca.sqlcode<>0 then
   messagebox("Notice","寫入 icmast 發生錯誤: "+sqlca.sqlerrtext)
  end if
 end if
next

為減少寫上述function的機會,計畫寫一個工作視窗用功能項,設計icmast專用存檔資料視窗,例如d_icmast_remark,命令函數將d_ictran的內容以[欄位互拷]方式抄錄一份給d_icmast_remark,在呼叫其執行 update(),達到同步不同datawindow一起存檔的目的

預計格式,供 [功能表]設定用
dw_tabxxx.copydata_for_update(string datawindow_name)
datawindow_name為要被同步存檔用的資料視窗,以上例而言就是d_icmast_remark

要考慮的還有,當icmast在版面並非每筆都有被輸入,也許需求是要有輸入的才需存檔,所以必須分開比較出新增,修改與刪除部分.考慮原本有輸入後來清掉,是否當成刪除.
回頂端 向下
檢視會員個人資料 http://idon.666forum.net
 
新增兩個資料視窗同步化的功能項
回頂端 
1頁(共1頁)

這個論壇的權限:無法 在這個版面回復文章
志翔科技有限公司後勤網 :: 系統主題 :: 系統架構-
前往: