(特急...)vb比較大小的問題

2010-04-07 5:48 am
請問大家喔 我目前再作一個拍賣的程式

目前已有一個最高上限的價格 我叫它 a01 使用者會標價 我叫它 a02

如果說 目前我確定 我輸出的值是沒有錯的

但是很奇怪 如果把他改成 >= 一進去網頁 他就會就會跳出語法的警示窗...
但 兩個值是不相等的 為何他仍跳出來 ??

但是如果 把那個= 拿掉 就不會有問題 一切正常

請問是以下的判斷有問題嗎??有沒有別的寫法
我一定要 判段 大於跟等於 

下面是沒有問提的 但加了=就直接跳出
抱歉!您輸入的價格已超過或等於訂價了!!!


<%Dim a01
a01 = CLng(Request.Form("sale06"))
Dim a02
a02 = CLng(Request.Form("sale02"))
If CLng(a01) < CLng(a02) Then
Response.Write "<script>alert('抱歉!您輸入的價格已超過或等於訂價了!');history.back();</Script>"
Response.End
end if
%>
更新1:

我補充一下 我好像有點說不青楚 比如: 這價格最高上限值 為 1000 但要等待使用者輸入 但如果直接在把 If CLng(a01) < CLng(a02) Then 改再加一個等號 If CLng(a01) <= CLng(a02) Then 開啟這頁面他很奇怪 會直接跳出警告了 但拿掉=號 一切則正常 問題是 我就要 使用者輸入價格 兩者去比較 才去判斷 但現在都還沒輸入 就跳出警告 ...? 請問 我那判斷法會有問題嗎

回答 (2)

2010-04-07 5:15 pm
✔ 最佳答案
您好,

應該是您沒有判斷a01 及 a02 是否為空值所造成.

1.表單第一次開啟時, 由於Request.Form 還沒有值, 所以a01 & a02 都是空值(Empty); 這種情況下, CLng(a01) < CLng(a02) 不會成立(False), 但 CLng(a01) <= CLng(a02) 會成立 (True)

2.建議您養成一個習慣, 也就是針對任何傳入的參數(QueryString)都必須作空值的檢查; 以下是簡單的範例:

if not isempty(Request.Form("sale02")) and Request.Form("sale02")<>"" and not isempty(Request.Form("sale06")) and Request.Form("sale06")<>"" then

Dim a01
a01 = CLng(Request.Form("sale06"))
Dim a02
a02 = CLng(Request.Form("sale02"))
If CLng(a01) < CLng(a02) Then
Response.Write "<script>alert('抱歉!您輸入的價格已超過或等於訂價了!');history.back();</Script>"
Response.End
end if end if

3. 至於空值(Empty), NULL 值, 以及零長度字串的概念, 可參考
http://www.sosuo8.com/article/show.asp?id=1842

2010-04-11 17:47:31 補充:
已經有兩個回答了.. 版主試過了嗎? 好歹回應一下?
2010-04-07 3:28 pm
當開啟這頁面前,Page_Load 事件已經啟動,a01, a02 都是0 喔 !!

在程式碼上加上
If Page.IsPostBack Then
...
... 你的程式碼
...
End If

或將程式碼放入Button_Click 事件中, 用者遞交表格後才執行程式碼。




收錄日期: 2021-04-25 20:34:11
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20100406000015KK08260

檢視 Wayback Machine 備份