有一个字段的值是类似“A04020001”这样的数据,其中A(也可能要设置成B、C...)是设置好就固定的,0402是同一个数据表中某日期型字段值(如2004年02月01日中的年月)的简写,0001是大流水号(1年1个流水号)。当其他几个字段的值符合某些条件时,该字段的值自动生成,并且每次流水号自动递增1,而不符合那些条件时,该字段的值则为空白。并且当因为其他字段的值变动造成条件不再符合时,原来符合条件自动产生的号,就会自动恢复空白,因此而空缺出来的号,系统会在新生成号时自动补进。应该怎样进行?
参考PoseSky写了如下代码,并在窗体的“成为当前”事件中call NewID
Private Sub NewId()
Dim ID, date2 As String
If [条件1] <> "符合" And [条件2] <> "符合" Or [条件3] = "不符合" Then
Me.是否 = "否"
Me.编号 = Null
Else
date2 = "A" & Format([日期], "YYMM")
ID = DMax("[编号]", "[数据表1]", "[编号] Like '" & date2 & "????'")
Me.是否 = "是"
If IsNull(ID) Then
Me.编号 = date2 & "0001"
Else
Me.编号 = date2 & Format(CStr(CInt(Right(ID, 3)) + 1), "0000")
End If
End If
End Sub
但这样产生的编号不是锁定的,每次翻动记录时号码都会变动(+1)。而且,当条件不符合时也不会把空缺的编号补上。流水号也不是按年度的,而是按月的。
小弟初学,请各位多多指教!谢谢!
[此贴子已经被作者于2004-2-28 23:54:56编辑过]
|