View Single Post
  #5  
Old May 26th, 2004, 03:02 PM
Rick Brandt
external usenet poster
 
Posts: n/a
Default Cry For Help! - Filling In Forms Automatically From Tables

"Sabine Oebbecke" wrote in message
om...
Your tables are wrongly set up.

You need to have one table, which holds the order information, with
the following fields:

Order Table:
----------------
order id
product id
quantity

and one table for the product information with the following fields:

Product Table:
------------------

Product id
product name
unit price
units in stock
sale price
discount

Create a query from these two tables with:

+ order id, product id and quantity from the Order table,
+ then product name, unit price, units in stock, sale price and
discount from the Product table.

Use this query with all its fields as the basis for your form. Add the
fields to your form respectively change the control source for
existing fields to the query fields.
Whenever you now select a product from your combo box (which should
add its info into the 'product id' field), all other fields should
update accordingly.


Sorry, but I strongly disagree with this setup. Both Sale Price and
Discount are dynamic values that can (and likely will) change over time.
With your method anyone looking at an Order from a year ago would see
*current* price and discount values, not the values that were in effect at
the time of the Order.

This is a case where it is NOT a breach of normalization principles to copy
the values from the Products table to the Orders table at the time the
Order record is created so the OP was closer to doing it correctly. The
only thing I would set up differently is that the Orders table does need to
have both the ProductID and the ProductName.

To the OP...

Add all of the info you need to the ComboBox for ProductID as additional
columns (they can be hidden if desired). Then in the AfterUpdtae event of
the ComboBox you run code similar to...

Me.Price = Me.ProductID.Column(1)
Me.Discount = Me.ProductID.Column(2)
etc..

I would NOT do the above for ProductName as this does not need to be stored
with your Order. Just have an unbound TextBox with a ControlSource of...

=ProductID.Column(3)

....where the fourth column of the ComboBox contains the ProductName from
the Products table. This will allow the user to *see* the ProductName, but
will not redundantly store it.


--
I don't check the Email account attached
to this message. Send instead to...
RBrandt at Hunter dot com