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
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
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
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)
这一段的问题也一样,除了都是0 之外 其余所有情况只能出现3 这该怎么办
妹子求各位小哥哥帮忙,要交论文了,我才发现这么一个bug
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 的值。
Case Is <= 15
deBT = 0
Case Is <= 30
deBT = 3
Case Is <= 60
deBT = 5
Else
deBT = 10
End Select
Else
deBT = 10
===>
Case Else
deBT = 10
出错后点击调试,光标会停在出错的那条语句处,
或者
事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断,此时可以在立即窗口中使用
?变量名
或
?函数名(函数参数)
或
过程名(参数)
辅助调试。
从“编程水平”来说,你的是“语法错误”造成的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
好吧,对它不了解。我之前接触过的语言:
BASIC、C/C++、FORTRAN(FORTRAN 77)、COBOL、java、Delphy/Pascal、还有FoxBase等等,
都是不支持这样的“数学公式”式的写法的。
因此我觉得各种语言应该都采用的这个“标准”吧。 大概一个多月前,下载了老外的一个工具软件,就是用Python写的GUI程序,
“试用”之后,觉得它跟易语言那种垃圾写的程序一个屌样:垃圾……
歪楼了,大家别理我,继续帮妹子。
http://bbs.csdn.net/topics/380157851
http://bbs.csdn.net/topics/392094659
你太天真了, 不知道Python其实是全世界最大的游标卡尺供应商嘛!