این کدها کاربرد آموزشی دارن و در عمل قسمتهایی از اون حذف میشن - بعنوان مثال اینجا همزمان با هر انتخاب مقدار سریال نامبر آپدیت میشه و اگر بخشی از اون نامعین باشه با ؟ پر میشه که در عمل نیازی نیست.
Option Compare Database
Option Explicit
Const CIDQRY As String = "SELECT ProductID,ProductName FROM Products WHERE CategoryID=@CID ORDER BY ProductName"
Private Sub CategoryID_AfterUpdate()
Me.ProductID.RowSource = Replace(CIDQRY, "@CID", Me.CategoryID)
Me.ProductID.Requery
Me.ProductID = Null
Make_Serial
End Sub
Private Sub CategoryID_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
Me.CategoryID.Undo
Me.CategoryID.Dropdown
End Sub
Private Sub CustomerID_AfterUpdate()
Make_Serial
End Sub
Private Sub CustomerID_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
Me.CustomerID.Undo
Me.CustomerID.Dropdown
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Nz(Me.CustomerID, "?????") = "?????" Then Cancel = True
If Nz(Me.CategoryID, -1) = -1 Then Cancel = True
If Nz(Me.ProductID, -1) = -1 Then Cancel = True
If Cancel Then MsgBox ("Fill all the required fields")
End Sub
Private Sub Form_Current()
If Me.NewRecord Then
Me.ProductID.RowSource = "Products"
Else
Me.ProductID.RowSource = Replace(CIDQRY, "@CID", Me.CategoryID)
End If
Me.ProductID.Requery
End Sub
Private Sub ProductID_AfterUpdate()
Make_Serial
End Sub
Private Sub ProductID_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
Me.ProductID.Undo
Me.ProductID.Dropdown
End Sub
Sub Make_Serial()
Dim CST, CTG, PRD, SEQ As String
CST = Nz(Me.CustomerID, "?????")
Me.CategoryID = Nz(Me.CategoryID, "-1")
Me.ProductID = Nz(Me.ProductID, "-1")
SEQ = 1 + Nz(DMax("Sequence", "Items", "CustomerID='" & Me.CustomerID & "' AND CategoryID=" & Me.CategoryID & " AND ProductID=" & Me.ProductID), 0)
If Me.CustomerID = "?????" Then
SEQ = "???"
End If
If Me.CategoryID = -1 Then
CTG = "??"
SEQ = "???"
Else
CTG = Format(Me.CategoryID, "00")
End If
If Me.ProductID = -1 Then
PRD = "??"
SEQ = "???"
Else
PRD = Format(Me.ProductID, "00")
End If
If SEQ = "???" Then
Me.Sequence = Null
Else
Me.Sequence = SEQ
End If
Me.Serial = CST & "_" & CTG & "_" & PRD & "_" & Format(SEQ, "000")
End Sub