如果缴费情况表不存在窗口控件上的单号,则自动生成单号,如果缴费情况表上已存在窗口控件上的单号,修改日期时不得起出单号所属月份,如果超出取消修改日期。红色标注代码报错
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim yzrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim d As Date = yzdh.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim dts As Integer = DataTables("缴费情况").Compute("Count([车牌号码])","[单号] = '" & di & "'")
If e.Form.Controls("rq").value IsNot Nothing And dts = 0 Then ' 如果日期非空值且缴费情况表不存在窗口控件上的单号
Dim bh As String = "YZ" & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
Dim max As String
Dim idx As Integer
Dim flt As String
flt = "[前缀] = 'YZ' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
max = DataTables("缴费情况").Compute("Max(单号)",flt) '取得该月的相同工程代码的最大单据编号
If max > "" Then '如果存在最大单据编号
idx = CInt(max.Substring(10,5)) + 1 '获得最大单据编号的后四位顺序号,并加1
Else
idx = 1 '否则顺序号等于1
End If
di = bh & Format(idx,"00000")
yzdh.Value = di
End If
If dts > 0 And (d < fd Or d > ld) Then
e.Cancel = True '如果是,取消操作
messagebox.show("修改的日期不能超出已保存单号所属月份").
End If
二、在月租收费窗口的PrepareEdit写入,事件红色标注代码报错,我要实现如果缴费情况表中存在窗口控件上的单号,修改的日期不能超出已保存单号所属月份,否则取消日期修改,取消车牌号码修改。
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim yzrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim d As Date = yzdh.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim c As Integer = DataTables("缴费情况").SQLCompute("Count([车牌号码])","[单号] = '" & Forms("月租收费").Controls("dh").text & "'")
If c > 0 Then
If d < fd Or d > ld Then
e.Cancel = True '如果是,取消操作
messagebox.show("修改的日期不能超出已保存单号所属月份").
End If
If e.Col.Name = "车牌号码" AndAlso e.Row.IsNull("车牌号码") = False Then
e.Cancel = True
End If
End If