您需要将 Excel 公式转换为使用 VBA 函数。由于Int
存在于 VBA 中,并且 Excel UI、VBA 和 Access 数据库引擎 (DAO/ADE) 都使用 OLE 日期/时间格式,因此转换非常简单——只需使用Date
函数代替TODAY
.
所以,假设表是这样设置的:
客户 - CustomerID(自动编号,主键)、姓氏(文本,必填)、名字(文本,必填)、DoB(日期/时间,必填)
电影 - MovieID(自动编号,主键)、MovieTitle(文本,必填)、MinAge(数字/字节)
- 租赁 - RentalID(自动编号,主键),CustomerID(数字/长整数,必填,Customers.CustomerID 的外键),MovieID(数字/LongInteger,必填,Movies.MovieID 的外键)
然后,您可以创建一个名为 RentalsWithAge 的查询,如下所示:
SELECT Rentals.*, Movies.MinAge, Int((Date() - Customers.DoB) / 365.25) AS CustomerAge
FROM (Rentals INNER JOIN Customers ON Rentals.CustomerID = Customers.CustomerID)
INNER JOIN Movies ON Rentals.MovieID = Movies.MovieID;
(通过在 UI 中创建一个新查询,然后取消表格提示并直接进入 SQL 视图。)接下来,创建一个表单来记录新的租赁,并将其基于 RentalsWithAge(而不是 Rentals);确保所有讨论的字段都已添加到表单中,然后按如下方式处理表单的 BeforeUpdate 事件:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.CustomerAge < Nz(Me.MinAge, 0) Then
Cancel = True
MsgBox "Customer is under the minumum age for the chosen movie!", _
vbCritical, "Customer Under Age"
End If
End Sub