LightSwitch中自动编号的生成

来源:互联网 发布:网易电台录制软件 编辑:程序博客网 时间:2024/03/29 16:50

实现功能:变换日期时,按当月记录数,自动生成当月对应编号。

一般用途:常用来生成合同编号等。

需求数据控件及类型:文本框(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 IfEnd Sub