If e.DataCol.name = "结账" Then
If e.NewValue = True Then
If e.DataRow("停止日期") <> Nothing Then
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
e.DataRow.Locked = True
Else
e.DataRow("停止日期") = (today)
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
e.DataRow.Locked = True
End If
End If
End If10点前则按上面公式...能否实现在特定时间填写停止日期或结账时:::比如早上10点后
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
+1
请大哥们指点...
[此贴子已经被作者于2008-12-6 21:32:20编辑过]
增加if条件:
Dim sj As Date = date.now
If e.DataCol.name = "结账" Then
If e.NewValue = True Then
If e.DataRow("停止日期") <> Nothing Then
if sj.Hour -10 > 0 then
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd") +1
e.DataRow.Locked = True
else
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
e.DataRow.Locked = True
end if
Else
e.DataRow("停止日期") = (today)
e.datarow("日期差")= Format(e.datarow("停止日期"), "dd") - Format(e.datarow("开始日期"), "dd")
e.DataRow.Locked = True
End If
End If
End If
If e.DataCol.name = "结账" Then
dim dr as datarow = e.DataRow
Dim h As integer= date.now.hour
If dr("结账") = True Then
If dr("开始日期") is Nothing Then
MessageBox.Show("请输入『开始日期』!", "提示")
dr("结账") = False
Else
If dr("停止日期") is Nothing Then
dr("停止日期") = today
End If
dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0)
dr.Locked = True
End If
End If
End If
[此贴子已经被作者于2008-12-6 18:32:34编辑过]

谢谢大哥们指点......

学习让我感到快乐....

论坛让我感到温暖....
don大哥的代码虽然不会报错,但是有一个问题.
如果停止日期不为空,且当时停止的时间是10点前,
而当前结账时间是10点后,代码无法判断此行导致计算不正确.
gdtgl兄弟的代码经验证,如果开始日期为空,系统报错...其他问题同上.
不知这样修改行不行?开始日期在新建行时设为自动填写当前日期,所以不可能为空
If e.DataCol.name = "结账" Then
dim dr as datarow = e.DataRow
Dim h As integer= date.now.hour
If dr("结账") = True Then
If dr("停止日期") is Nothing Then
dr("停止日期") = today
dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0)
dr.Locked = True
End If
End If
End If
在AfterEdit里加入代码If e.Col.name = "停止日期" Then
dim dr as row = e.Row
dim h As integer= date.now.hour
dr("日期差")= (dr("停止日期")-dr("开始日期")).days+iif(h >10,1,0)
End If
[此贴子已经被作者于2008-12-6 22:05:02编辑过]

哈哈,经验证,已经有停止日期的行不能锁定...其他正常..
前段代码插入
Else
If dr("停止日期") isNot Nothing Then
dr.Locked = True
End If
搞定.
[此贴子已经被作者于2008-12-6 22:15:24编辑过]