This sample demonstrates coordinating a one-to-many form with two grids displaying the many sides of the relationships. Very little code is needed in this sample. Setting a few properties is all that is involved.
Text boxes for the "one" side of the relationship:
ControlSource = Customer.cust_id ControlSource = Customer.company
Grid for the first "many" side of the relationship:
ChildOrder = cust_id LinkMaster = customer RecordSource = orders RecordSourceType = 1 - Alias RelationalExpr = customer.cust_id ColumnCount = 4 Column1.ControlSource = "orders.order_no" Column1.Header1.Caption = "Order" Column2.ControlSource = "orders.order_date" Column2.Header1.Caption = "Date" Column3.ControlSource = "orders.to_name" Column3.Header1.Caption = "Ship To" Column4.ControlSource = "orders.order_amt" Column4.Sparse = .F. Column4.Header1.Caption = "Total" Column4.Text1.InputMask = "$$999,999.99"
Grid for the 2nd "many" side of the relationship:
ChildOrder = order_id LinkMaster = Orders RecordSource = Orditems RecordSourceType = 1 - Alias RelationalExpr =Orders.order_id ColumnCount = 4 Column1.ControlSource = "orditems.line_no" Column1.Header1.Caption = "Item" Column2.ControlSource = "products.prod_name" Column2.Header1.Caption = "Product" Column3.ControlSource = "orditems.quantity" Column3.Header1.Caption = "Qty." Column4.ControlSource = "orditems.unit_price" Column4.Sparse = .F. Column4.Header1.Caption = "Price" Column4.Text1.InputMask = "$$9,999.99"
In addition to the text boxes and the grids, the form contains an object based on the VCR class in Buttons.vcx. The SkipTable property of this class is set to the table you want the record pointer to be moved in when the user chooses a table navigation button. Because the user can easily manually move through the records in the grids (Orders and Orditems), SkipTable is set to Customer.