实现功能:变换日期时,按当月记录数,自动生成当月对应编号。
一般用途:常用来生成合同编号等。
需求数据控件及类型:文本框(intger)日期控件(date)
未优化代码:
Private Sub 合同时间_Changed()
Dim DA = DataWorkspace.ApplicationData.SjZhuBiaoSet.GetQuery.Execute '多条长代码缩写
'判断是数据库是否一条记录都没有
If DA.Count(Function(xx) xx.自动编号) > 0 Then
'判断当月有没有记录,没有则自动生成第一条记录
If DA.Where(Function(xx) Left(xx.自动编号, 6) = Format(合同时间, "yyyyMM")).Count > 0 Then
'当 当月记录中有多条记录的“自动编号”相同时,则在数据库中最大值中加1,防止重复修改日期时,编号重复加1
If DA.Where(Function(xx) xx.自动编号 = 自动编号).Count = 0 Then '如果文本框值在数据库中不存在,则新建一条当月记录,比如,新建记录时,文本框初始值为0
自动编号 = DA.Where(Function(xx) Left(xx.自动编号, 6) = Format(合同时间, "yyyyMM")).Select(Function(yy) yy.自动编号).Max + 1
Else '当已有记录存在时,根据已填“自动编号”值是否存在当月记录里,如果不存在,则"自动编号"+1
If Left(自动编号, 6) <> Format(合同时间, "yyyyMM") Then
自动编号 = DA.Where(Function(xx) Left(xx.自动编号, 6) = Format(合同时间, "yyyyMM")).Select(Function(yy) yy.自动编号).Max + 1
End If
End If
Else
自动编号 = CInt(Format(合同时间, "yyyyMM").ToString + "001")
End If
Else
自动编号 = CInt(Format(合同时间, "yyyyMM").ToString + "001")
End If
End Sub