Create a small database with tables for Customers and Employees. In addition to name and phone number, each table should hold a date column for when the person first started (as either a customer or hire date). Write a function that returns a percentage discount that uses a phone number to decide if the buyer is a customer or employee. Customers for less than one year get no discount, 1-3 years (2%), 4-7 years (4%), 8 or more years (5%). Employees for less than one year get no discount, 1-2 years (5%), 3-5 years (7%), 6 or more years (10%).
In Access. (Other systems are similar but queries are different.)
Option Compare Database Option Explicit Function GetDiscount(ByVal sPhone As String) As Single ' See if it is an employee Dim rst As New ADODB.Recordset Dim sSQL As String, qt As String Dim nY As Integer qt = """" sSQL = "SELECT EmployeeID, DateDiff(" & qt & "yyyy" & qt & ",[DateHired],Date()) AS NYears FROM Employee WHERE Phone=" & qt & sPhone & qt rst.Open sSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly If Not rst.EOF Then ' it is an employee nY = CInt(rst("NYears")) rst.Close Set rst = Nothing If (nY < 1) Then GetDiscount = 0# ElseIf (nY < 3) Then GetDiscount = 0.05 ElseIf (nY < 6) Then GetDiscount = 0.07 Else GetDiscount = 0.1 End If Exit Function End If rst.Close sSQL = "SELECT Customer.CustomerID, DateDiff(" & qt & "yyyy" & qt & ",[DateStarted],Date()) AS NYears FROM Customer WHERE Phone=" & qt & sPhone & qt rst.Open sSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly If Not rst.EOF Then ' It is an existing customer nY = CInt(rst("NYears")) rst.Close Set rst = Nothing If (nY < 1) Then GetDiscount = 0# ElseIf (nY < 4) Then GetDiscount = 0.02 ElseIf (nY < 8) Then GetDiscount = 0.04 Else GetDiscount = 0.05 End If Exit Function End If rst.Close Set rst = Nothing GetDiscount = 0# End Function