如果驗證子句是輸入select 搭配 [指定欄位],需注意:
因為存檔驗證並未規劃測試用欄位的回傳型態,而是利用資料視窗中的 [欄位名稱]的型態來判斷,如下式的select trantype .....,則存檔驗證 的資料視窗 [欄位名稱] ,最好也是指向與資料庫同一個對映欄位,資料視窗的欄位在編排時也許會帶 table_ 開頭,例如 ictrammt_trantype,如果不帶 table_開頭字,就變成 trantype ,但最好用系統提供的欄位選單選擇.
select trantype from ictype where rstat<>'D' and trantype= [系統運算 資料視窗 欄位名稱 ictrammt_trantype 後的值]
上述子句的測試欄位為trantype,在等號右邊,系統會取資料視窗上該 [欄位名稱]的值填入,而形成完整子句,並用 [欄位名稱]的型態來接收判斷值,所以此種驗證規則的 [欄位名稱]一定要填資料視窗欄位.不宜用 * 號或其他資料視窗中不存在的欄位名稱.以免型態不在預設的幾種範圍內,而無法做判斷,造成系統驗證結果不對.
如果驗證子句是輸入 select count(*) from ....,需注意:
系統固定用數值型態來判斷, [欄位名稱]只是用來視需要填到SQL子句右邊用而已.不再做為回傳值的判斷型態用.
下列為判斷是否資料存在的一種寫法,以count(*)去計算資料筆數.
select count(*) from sysdat where sysno='IC' and substring(dw_this.tdate,1,10)>= dbo.fn_GetTraYMD(sdate,9,1) and substring(dw_this.tdate,1,10)<= dbo.fn_GetTraYMD(tdate,9,1)
以上當SQL回傳值>0,表示有找到資料.
搭配上述的SQL右端不需再組合的子句, [欄位名稱] 適合填 * 號,且 [驗證規則值]應保持空白,當系統偵測不到 [欄位名稱]的型態且[驗證規則值]空白 ,也就不會去取換算值填於上述SQL子句之右,
如果找到資料是要過關可存檔的,則此筆驗證規則的 [否定] 要打勾.表示找到資料 [不要] 阻擋存檔.
如果有填 [驗證規則值],則本來要取 [欄位名稱]作取值來放置到SQL右邊的,會改用 [驗證規則值]取運算值來放.且目前系統是固定用字串型態來組SQL子句.