某次在檢查開發人員的PB源碼時,發現有如下代碼:
<!-- @page { margin: 2cm } -->
CHOOSE CASE ls_query_kind
CASE '1'
ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (21,26,178) AND M_DISCM.FROM_MK = '0'"
ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (21,26,178) AND M_DISCM.FROM_MK = '0'"
CASE '2'
ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"
ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"
CASE '3'
IF ls_from_mk = '4' THEN
ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
ELSE
ls_SqlText = ls_SqlText + " AND M_DISCM.FROM_MK = '" + ls_from_mk + "'" + " AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
ls_SqlText1 = ls_SqlText1 + " AND M_DISCM.FROM_MK ='" + ls_from_mk + "'" + " AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
END IF
END CHOOSE
這是PB數據窗口動態查詢語法構建.
<!-- @page { margin: 2cm } -->
因為有兩個數據窗口都需要動態調整 , 所以這里定義了兩個變量 ls_sqltext 和 ls_sqltext1.
實際上這兩個數據窗口需要構造的語法都是一樣的 , 如上寫法都是同時給這兩個變量賦值 .
這樣造成同一個條件需要寫兩次 , 而且如果以后需要修改的話 , 也同時要改兩個變量 .
<!-- @page { margin: 2cm } -->
更好的方法應該是將動態構造的條件先賦值給一個臨時變量 ,
最后將這個臨時變量再與 ls_sqltext,ls_sqltext1 組合 .
如:
<!-- @page { margin: 2cm } -->
string
ls_temp
CHOOSE CASE ls_query_kind
CASE '1'
ls_temp = "AND M_DISCM.CHK_ID IN (21,26,178) AND
M_DISCM.FROM_MK = '0'"
CASE '2'
ls_temp = "AND M_DISCM.CHK_ID IN
(76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"
CASE '3'
IF ls_from_mk = '4'
THEN
ls_temp =
"AND M_DISCM.CHK_ID IN
(21,26,76,78,79,177,178,201,202,77,5059)"
ELSE
ls_temp ="
AND M_DISCM.FROM_MK = '" + ls_from_mk + "' AND
M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
END IF
END CHOOSE
ls_sqltext
+= ls_temp
ls_sqltext1 += ls_temp
這樣可以減少維護人員的工作,簡化代碼.
3380

被折叠的 条评论
为什么被折叠?



