台灣最大程式設計社群網站
線上人數
971
 
會員總數:244770
討論主題:188831
歡迎您免費加入會員
討論區列表 >> ASP >> 請問有沒有方法將if then elseif 的架構簡化及減少呢???
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問有沒有方法將if then elseif 的架構簡化及減少呢???
價值 : 30 QP  點閱數:2713 回應數:14

樓主

可憐蟲蟲
門外漢
0 8
1070 126
發送站內信

請問在以下程式中不停用if then elseif......
response.write FormatNumber(合計,0) 這一句不停出現,
請問有沒有方法可以將if then elseif 的架構簡化及減少呢???



<%
合計= Request("合計")

書本數=rs("書本數")
if (ISNULL(書本數) or 書本數="") then
書本數=0
elseif (組別 = "A" or 組別 = "B" or 組別 = "C" or 組別 = "Z") then
書本數=(書本數-1)
elseif (組別 = "D") then
書本數=((書本數-1)+0.5)
elseif (組別 = "E") then
書本數=((書本數-1)+1)
end if


a部分=CDbl(輸入數 * 0.11)
b部分=CDbl(輸入數 * 0.22)
c部分=CDbl(輸入數 * 0.33)

if a部分 <= 1000 then
a部分 = 1000
elseif b部分 <= 1000 then
b部分 = 1000
elseif c部分 <= 1000 then
c部分 = 1000
end if

if 活動 = "None" then
合計=0
response.write "不成功"

'主科目組="1" , 活動="No" , 學分=(0至6)---------------------------------------------------------------------------------
elseif (主科目組 = "1" or 活動 = "No") and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
elseif (主科目組 = "1" or 活動 = "No") and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "1" or 活動 = "No") and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "1" or 活動 = "No") and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "1" or 活動 = "No") and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "1" or 活動 = "No") and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "1" or 活動 = "No") and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if


'主科目組="0" , 副科目組="0" , 範圍>=0至<=10 , 學分=(0至6) ------------------------------------------------------------
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
elseIf (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if


'主科目組="0" , 副科目組="1或2" , 範圍>=0至<=10 , 學分=(0至6)------------------------------------------------------------------------
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(100 + (a部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if

'主科目組="0" , 副科目組="0" , 範圍>=11至<=20 , 學分=(0至6)---------------------------------------------------------------
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and 副科目組 = "0" and (範圍 >= 11 and 範圍 <= 20) and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if

'主科目組="0" , 副科目組="1或2" , 範圍>=11至<=20 , 學分=(0至6)---------------------------------------------------------------------------
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 11 and 範圍 <= 20) and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(200 + (b部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if

'主科目組="0" , 副科目組="0" , 範圍>20 , 學分=(0至6)-----------------------------------------------------------------------
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf (主科目組 = "0" and 副科目組 = "0") and 範圍 > 20 and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if

'主科目組="0" , 副科目組="1或2" , 範圍>20 , 學分=(0至6)--------------------------------------------------------------------
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "0" and 已申請 = "無" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "0" and 已申請 = "有" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "2" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.2))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.2))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "3" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.3))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.3))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "4" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.4))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.4))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "5" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.5))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.5))
response.write FormatNumber(合計,0)
end if
ElseIf 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and 範圍 > 20 and 學分 = "6" then
If 年歲 = "1980" or 年歲 = "1981" then
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0) + 0.25) * (1 - 0.6))
response.write FormatNumber(合計,0)
else
合計=(300 + (c部分)) * ((書本數 + 0.25 + (1 + 0)) * (1 - 0.6))
response.write FormatNumber(合計,0)
end if
End If
%>



本篇文章發表於2005-05-16 22:23
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
看起來每個條件都有response.write FormatNumber(合計,0)
把一個提到外面, 裡面的都可以拿掉了
if
if
if
.....

end if
response.write FormatNumber(合計,0)


如果 活動 = "None" 有做其它是
就都加

if 活動 = "None" then
  ...
else
  response.write FormatNumber(合計,0)
en dif


本篇文章回覆於2005-05-16 23:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Karuizawa
檢舉此回應
太恐怖了吧...妳要不要把妳的運算邏輯仔細說一次
本篇文章回覆於2005-05-17 00:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

可憐蟲蟲
檢舉此回應
其實以下的程式是簡單的,也可以執行,
目標是算出 "合計" 出來
只是寫得比較長.........~.~

當判斷中了其中部份
就直接顯示 "合計"
停止程式


如果是
活動 = "None" then
直接顯示 "不成功"
停止程式

如果是
主科目組="1" , 活動="No" , 學分=(0至6)
.
.
主科目組="0" , 副科目組="0" , 範圍>=0至<=10 , 學分=(0至6)
.
.
主科目組="0" , 副科目組="1或2" , 範圍>=0至<=10 , 學分=(0至6)
.
.
主科目組="0" , 副科目組="0" , 範圍>=11至<=20 , 學分=(0至6)
.
.
主科目組="0" , 副科目組="1或2" , 範圍>=11至<=20 , 學分=(0至6)
.
.
主科目組="0" , 副科目組="0" , 範圍>20 , 學分=(0至6)
.
.
主科目組="0" , 副科目組="1或2" , 範圍>20 , 學分=(0至6)
.
.
直接顯示 "合計"
停止程式

本篇文章回覆於2005-05-17 00:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

丫嗚
捐贈 VP 給 丫嗚 檢舉此回應
其實像這個
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0.3) + 0.25) * (1 - 0))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0.3)) * (1 - 0))
response.write FormatNumber(合計,0)
end if

的部份一直重覆,條件值好像只有差在學分吧
那就把0~6的學分判斷拿到
直接寫成
If 年歲 = "1980" or 年歲 = "1981" then
合計=輸入數 * ((書本數 + (1 + 0.3) + 0.25) * (1 - 0.1*學分))
response.write FormatNumber(合計,0)
else
合計=輸入數 * ((書本數 + (1 + 0.3)) * (1 - 0.1*學分))
response.write FormatNumber(合計,0)
end if


規則好像是這樣吧……好長的程式碼.....X______X
本篇文章回覆於2005-05-17 00:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

丫嗚
捐贈 VP 給 丫嗚 檢舉此回應
那就把0~6的學分判斷拿到
^^



錯字魔人.....@@"
本篇文章回覆於2005-05-17 00:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

Lak
捐贈 VP 給 Lak 檢舉此回應
你可以當作是在解那個聯立方程式,
你先把 if 式中,判斷式中的相同的點抽出來,
可以少判斷一點東西..
基本上,寫 if 式是不止是一種邏輯的思考,
有時還會因為考慮到發生的可能性,為了效能而做前後次序的排列..
不過現在電腦都很快..
這種考量越來越不重要就是了..
本篇文章回覆於2005-05-17 00:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

可憐蟲蟲
檢舉此回應
各大大
應如何呢??
本篇文章回覆於2005-05-17 00:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

可憐蟲蟲
檢舉此回應
請問在以下程式中不停用if then elseif......
response.write FormatNumber(合計,0) 這一句不停出現,
請問有沒有方法可以將if then elseif 的架構簡化及減少呢???
本篇文章回覆於2005-05-17 09:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
我實在不想信您這麼命苦,會遇到程式沒有邏輯的狀況, 因此我試著看懂您的意思改寫了一下, 程式碼短多了,我沒測試,若有錯,請看懂意思後自己改
<%
合計= Request("合計")

書本數=rs("書本數")
Call SetBooks(書本數)


iA=CDbl(輸入數 * 0.11)
iB=CDbl(輸入數 * 0.22)
iC=CDbl(輸入數 * 0.33)
Call SetABC(iA, iB, iC)

Dim bOK
bOK = false '用來表示是否已算出合計了

if 活動 = "None" then
	合計=0
	response.write "不成功"
	bOK = true
End if

'主科目組="1" , 活動="No" , 學分=(0至6)---------------------------------------------------------------------------------
if bOK=false AND (主科目組 = "1" or 活動 = "No") then
	合計=Cal1(學分,已申請, Age, 書本數, 輸入數)
	bOK = true
End If

'主科目組="0" , 副科目組="0" 
if bOK=false AND (主科目組 = "0" and 副科目組 = "0") and (範圍 >= 0 and 範圍 <= 10) then
	合計=Cal2(已申請, Age, 書本數,範圍)
	bOK = true
end If

'主科目組="0" , 副科目組="1或2" 
If bOK=false AND 主科目組 = "0" and (副科目組 = "1" or 副科目組 = "2") and (範圍 >= 0 and 範圍 <= 10) then
	合計=Cal3(已申請, Age, 書本數,範圍)
	bOK = true
end If
response.write FormatNumber(合計,0)
'=====================================================================


Sub SetBooks(byref books)
	if (ISNULL(books) or books="") then
		books=0
	End If

	Select Case 組別
		Case "D"
			books = books + 0.5
		Case "E"
			books = books + 1
	End Select

End Sub

Sub SetABC(byref A, byref B, byref C)
	if A <= 1000 then
		A = 1000
		Exit Sub
	End If

	If B <= 1000 then
		B = 1000
		Exit Sub
	End if

	If C <= 1000 then
		C = 1000
	end if

End Sub

Function Cal1(學分,已申請, Age, 書本數, 輸入數)
	'計算式範本: A * ((B + (1 + C) + D) * (1 - E))
	A = 輸入數
	B = 書本數
	If 已申請 = "無" then
		C = 0.3
	Else
		C = 0
	End If

	If Age="1980" or Age ="1981" then
		D=0.25
	Else
		D=0
	End If

	E = Cint(學分)/10

	Cal1 = A * ((B + (1 + C) + D) * (1 - E))
End Function

Function Cal2(已申請, Age, 書本數,範圍)
	'計算式範本: (100 + A) * ((B + 0 + (1 + C) + D) * (1 - E))
	if 範圍 >= 0 and 範圍 <= 10 then
		A = iA
	End If
	if 範圍 >= 11 and 範圍 <= 20 then
		A= iB
	End if
	if 範圍>20 then
		A = iC
	End If

	B = 書本數
	If 已申請 = "無" then
		C = 0.3
	Else
		C = 0
	End If

	If Age="1980" or Age ="1981" then
		D=0.25
	Else
		D=0
	End If

	E = Cint(學分)/10

	Cal2 = (100 + A) * ((B + 0 + (1 + C) + D) * (1 - E))
End Function

Function Cal3(已申請, Age, iA, 書本數,範圍)
	'計算式範本: (100 + A) * ((B + 0.25 + (1 + C) + D) * (1 - E))
	if 範圍 >= 0 and 範圍 <= 10 then
		A = iA
	End If
	if 範圍 >= 11 and 範圍 <= 20 then
		A= iB
	End if
	if 範圍>20 then
		A = iC
	End If


	B = 書本數
	If 已申請 = "無" then
		C = 0.3
	Else
		C = 0
	End If

	If Age="1980" or Age ="1981" then
		D=0.25
	Else
		D=0
	End If

	E = Cint(學分)/10

	Cal3 = (100 + A) * ((B + 0.25 + (1 + C) + D) * (1 - E))
End Function


%>



Cal1 ~ Cal3理論上可以再合併, 若您仍嫌長,就自己再設法改一下
本篇文章回覆於2005-05-17 09:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

可憐蟲蟲
檢舉此回應
沒有了response.write
怎樣才可以秀出 合計?
本篇文章回覆於2005-05-17 17:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
response.write FormatNumber(合計,0)
'=====================================================================

我有寫哦!您有試嗎?
本篇文章回覆於2005-05-17 18:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

可憐蟲蟲
檢舉此回應
sorry 一時看不見,但試後也不通,
是否架構出現了問題?
本篇文章回覆於2005-05-18 00:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
我沒試,也不知道您何謂"不通",先看懂我寫的意思,若有bug,就自己修一下囉
本篇文章回覆於2005-05-18 13:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

dra
檢舉此回應
<%
合計= Request("合計")

書本數=rs("書本數")
if (ISNULL(書本數) or 書本數="") then
    書本數=0
elseif (組別 = "A" or 組別 = "B" or 組別 = "C" or 組別 = "Z") then
    書本數=(書本數-1)
elseif (組別 = "D") then
    書本數=((書本數-1)+0.5)
elseif (組別 = "E") then
    書本數=((書本數-1)+1)
end if


a部分=CDbl(輸入數 * 0.11)
b部分=CDbl(輸入數 * 0.22)
c部分=CDbl(輸入數 * 0.33)

if a部分 <= 1000 then
    a部分 = 1000
elseif b部分 <= 1000 then
    b部分 = 1000
elseif c部分 <= 1000 then
    c部分 = 1000
end if

if 活動 = "None" then
    合計=0
    response.write "不成功"
else
    if (主科目組 = "1" or 活動 = "No") then
        X = 輸入數
    elseif (範圍 >= 0 and 範圍 <= 10) then
        X = 100 + a部分
    elseif (範圍 >= 11 and 範圍 <= 20) then
        X = 200 + b部分
    elseif (範圍 > 20) then
        X = 300 + c部分
    end if
    
    Y = 書本數 + 1
    If 副科目組 = "1" or 副科目組 = "2" then Y = Y + 0.25
    If 學分 = "0" and 已申請 = "無" then Y = Y+ 0.3
    If 年歲 = "1980" or 年歲 = "1981" then Y = Y + 0.25
    
    Z = 1 - (0.1*cdbl(學分))
    
    合計 = X*Y*Z
    response.write FormatNumber(合計,0)
end if
%>

本篇文章回覆於2005-05-18 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.