Overview of This Tutorial
Some of the customers of the video store are delinquent in returning their videos. The management of the video store wants to send gentle reminders to these irresponsible customers. It is possible to join the customer table with the rental table to produce mailing labels for only those customers who are more than a week overdue.
Like Tutorial One, this tutorial uses the VVContact and VVContactRepository classes. In addition, this tutorial uses a pair of classes representing rental transactions and the rentals table: VVRentalTransaction and VVRentalTransactionRepository. These two classes relate to each other like VVContact and VVContactRepository relate to each other. VVRentalTransaction represents one record from the rentals table, while VVRentalTransactionRepository encapsulates the set of all rental transactions in the form of a table in the database.
The overdue customer records are retrieved by setting up a criterion for their selection. This is done with RWDBColumn objects to produce a predicate using C++ syntax. In SQL syntax, the predicate would be the WHERE clause of a SELECT statement.
Most of the functionality of this example is encapsulated in the four classes mentioned above. These classes hide the details of the DB Interface Module code the same way that the DB Interface Module code hides the details of the underlying database API.