Dim deLT, deBT, total As Double
RichTextBox1.AppendText(vbTab & vbTab & " Details About Staff Wages" & vbCrLf)
RichTextBox1.AppendText("Username:" & Login.TextBox1.Text & vbCrLf)
RichTextBox1.AppendText(" " & vbCrLf)
RichTextBox1.AppendText("Working Time (Hours):" & ClockoutWork.Label7.Text + vbTab)
RichTextBox1.AppendText("Working Gross Wages:" & ClockoutWork.Label8.Text & vbCrLf)
RichTextBox1.AppendText(" " & vbCrLf)
RichTextBox1.AppendText("Lunch Time Break(Minutes):" & ClockoutLunchbreak.Label7.Text + vbTab)
If ClockoutLunchbreak.Label8.Text = ("As Paid") Then
deLT = 0
Else
If 60 < ClockoutLunchbreak.Label7.Text <= 120 Then
deLT = 5
ElseIf 120 < ClockoutLunchbreak.Label7.Text <= 180 Then
deLT = 10
Else
deLT = 15
End If
End If
RichTextBox1.AppendText("Lunch Time Wage Deduction:" & deLT & vbCrLf)
RichTextBox1.AppendText(" " & vbCrLf)
RichTextBox1.AppendText("Personal Break Time(Minutes):" & ClockoutPersonalbreak.Label7.Text + vbTab)
If ClockoutPersonalbreak.Label7.Text <= 15 Then
deBT = 0
ElseIf 15 < ClockoutPersonalbreak.Label7.Text <= 30 Then
deBT = 3
ElseIf 30 < ClockoutPersonalbreak.Label7.Text <= 60 Then
deBT = 5
Else
deBT = 10
End If
RichTextBox1.AppendText("Personal Break Wage Deduction:" & deBT & vbCrLf)
RichTextBox1.AppendText(" " & vbCrLf)
RichTextBox1.AppendText("Total Deduction:" & (deBT + deLT) & vbTab & vbTab)
total = ClockoutWork.Label8.Text - deBT - deLT
RichTextBox1.AppendText("Gross Wages:" & total & vbCrLf)
RichTextBox1.AppendText("==================================================================== " & vbCrLf)
RichTextBox1.AppendText(vbTab & Today & vbTab & TimeOfDay & vbCrLf)
RichTextBox1.AppendText("====================================================================" & vbCrLf)
End Sub
uj5u.com熱心網友回復:
我是想要在rich text box里顯示出我之前算出的金錢和時間,但是If ClockoutLunchbreak.Label8.Text = ("As Paid") Then
deLT = 0
Else
If 60 < ClockoutLunchbreak.Label7.Text <= 120 Then
deLT = 5
ElseIf 120 < ClockoutLunchbreak.Label7.Text <= 180 Then
deLT = 10
Else
deLT = 15
End If
End If
RichTextBox1.AppendText("Lunch Time Wage Deduction:" & deLT & vbCrLf)
這一段出現了問題,如果我label里的數字是>120的 但是結果還是只顯示出5
uj5u.com熱心網友回復:
If ClockoutPersonalbreak.Label7.Text <= 15 ThendeBT = 0
ElseIf 15 < ClockoutPersonalbreak.Label7.Text <= 30 Then
deBT = 3
ElseIf 30 < ClockoutPersonalbreak.Label7.Text <= 60 Then
deBT = 5
Else
deBT = 10
End If
RichTextBox1.AppendText("Personal Break Wage Deduction:" & deBT & vbCrLf)
這一段的問題也一樣,除了都是0 之外 其余所有情況只能出現3 這該怎么辦
uj5u.com熱心網友回復:
是我的邏輯問題嗎,還是說語法問題??妹子求各位小哥哥幫忙,要交論文了,我才發現這么一個bug
uj5u.com熱心網友回復:
你首先應該學會的不是這些, 而是如何除錯程式:http://www.360doc.com/content/14/1031/13/17799864_421417365.shtml
不會除錯, 談不上學程序式。
ClockoutPersonalbreak.Label7.Text 這個是文本, 不是真正的 Int 型數值, 你先新加一個 int 變數 intValue , 將文本轉換成數字, 用數字來判斷吧:
If intValue <= 15 Then
deBT = 0
ElseIf 15 < intValue <= 30 Then
deBT = 3
ElseIf 30 < intValue <= 60 Then
deBT = 5
Else
deBT = 10
End If
如果你不會除錯, 可以用 MessageBox.Show( intValue ); 輸出轉換后 intValue 的值。
uj5u.com熱心網友回復:
改成select case 比較好Select Case ClockoutPersonalbreak.Label7.Text
Case Is <= 15
deBT = 0
Case Is <= 30
deBT = 3
Case Is <= 60
deBT = 5
Else
deBT = 10
End Select
uj5u.com熱心網友回復:
稍微改動下Else
deBT = 10
===>
Case Else
deBT = 10
uj5u.com熱心網友回復:
注釋掉所有On Error Resume Next陳述句,在VB6 IDE中運行,出錯后點擊除錯,游標會停在出錯的那條陳述句處,
或者
事先在懷疑可能有邏輯錯誤的陳述句處設定斷點,運行經過斷點時中斷,
此時可以在立即視窗中使用
?變數名
或
?函式名(函式引數)
或
程序名(引數)
輔助除錯。
uj5u.com熱心網友回復:
從“語法(計算機語言的語法)”角度來說,是邏輯問題;
從“編程水平”來說,你的是“語法錯誤”造成的Bug(因為在任何計算機語言中,都不能象“數學公式”那樣表達比較關系)。

你這樣寫的后果,就是:
當符合 ClockoutPersonalbreak.Label7.Text <= 15 時,deBT = 0 按你的代碼猜測,這兒是“正常”的;
當 ClockoutPersonalbreak.Label7.Text > 15 時,
就只會進入“ElseIf 15 < ClockoutPersonalbreak.Label7.Text <= 30 Then”這個“邏輯分支”了!
你肯定不知道邏輯運算式:15 < ClockoutPersonalbreak.Label7.Text <= 30 的運算程序!
能“運行到”這個分支處,說明 ClockoutPersonalbreak.Label7.Text 的數值肯定是大于15的。
在邏輯比較運算時,< 和<= 是“平級的”,所以從左到右運算:
首先是計算: 15 < ClockoutPersonalbreak.Label7.Text
剛說了,能“走到這一步”,15 < ClockoutPersonalbreak.Label7.Text 肯定為 True的;
然后就是運算: True <= 30
在VB中,True=-1 (樓主應該是VB.NET的代碼,在這點上是一樣的)
這樣,“第二步邏輯運算”結果肯定也是True了!
也就是:只要“第1分支”為False,那么“第二分支”必定是True !!!
你“后面的邏輯分支”已經沒有任何作用了。
首先糾正你的“語法錯誤”(只是你“寫錯”而已,在VB中因“自動型別轉換”能成功執行,這樣寫也符合語法):
15 < ClockoutPersonalbreak.Label7.Text <= 30 的正確寫法是(后面的分支“類推”):
15 < ClockoutPersonalbreak.Label7.Text And ClockoutPersonalbreak.Label7.Text <= 30
其次說下“冗余邏輯”問題(也是冗余代碼):
15 < ClockoutPersonalbreak.Label7.Text的結果必然是為“True”的,這兒寫上它純屬多余!
只要ClockoutPersonalbreak.Label7.Text<=30這一個條件就行了!!!
如果要用 If ……ElseIf……來寫,應該是這樣:
If ClockoutPersonalbreak.Label7.Text <= 15 Then
deBT = 0
ElseIf ClockoutPersonalbreak.Label7.Text <= 30 Then
deBT = 3
ElseIf ClockoutPersonalbreak.Label7.Text <= 60 Then
deBT = 5
Else
deBT = 10
End If
uj5u.com熱心網友回復:
在任何計算機語言中(好象除Python以外),都不能象“數學公式”那樣表達比較關系。
uj5u.com熱心網友回復:
Python可以?
好吧,對它不了解。
我之前接觸過的語言:
BASIC、C/C++、FORTRAN(FORTRAN 77)、COBOL、java、Delphy/Pascal、還有FoxBase等等,
都是不支持這樣的“數學公式”式的寫法的。
因此我覺得各種語言應該都采用的這個“標準”吧。

大概一個多月前,下載了老外的一個工具軟體,就是用Python寫的GUI程式,
“試用”之后,覺得它跟易語言那種垃圾寫的程式一個屌樣:垃圾……
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
雖然我個人是贊成代碼要有良好的縮進習慣。但python這樣強制縮進也是很難接受,真特么侵犯自由!!歪樓了,大家別理我,繼續幫妹子。
uj5u.com熱心網友回復:
哈哈,路過~uj5u.com熱心網友回復:
我是進來看妹子的, 樓上幾位負責代碼.uj5u.com熱心網友回復:
我跟著繼續歪:
http://bbs.csdn.net/topics/380157851
http://bbs.csdn.net/topics/392094659
uj5u.com熱心網友回復:
你太天真了, 不知道Python其實是全世界最大的游標卡尺供應商嘛!
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/49981.html
標籤:VB基礎類
上一篇:rsa加密
