That's cool. I just, personally, prefer to try to stick to the highest levels of Normalization I'm capable of doing in my DBs, so I don't shoot myself in the foot down the road.<shrug> Dian Chapman Technical Consultant, Microsoft MVP & TechTrax Editor Tutorial web site: http://www.mousetrax.com TechTrax Ezine: http://www.mousetrax.com/techtrax/ Word MVP support site: http://www.mvps.org/word Microsoft support groups: http://support.microsoft.com -----Original Message----- From: mso-bounce@xxxxxxxxxxxxx [mailto:mso-bounce@xxxxxxxxxxxxx] On Behalf Of Peter Chiavaro Sent: Wednesday, May 22, 2002 9:07 AM To: mso@xxxxxxxxxxxxx Subject: [mso] Re: ACCESS - Update Records Dian, Cousin Charlie, Not to confuse the issue even more, but maybe for next time we can consider another approach. In the programs I write for my horse clients I am more or less FORCED to do this, but what I do is create a table called =93Billing=94. In this table I keep all the pertinent information = to create an invoice or =93bill=94. CustomerID, OrderDate, ShipToName, ShipToAddress, ShipToCity, ShipToZip, ItemID, QTY, ItemName, ItemDesc, TotalPrice, OrderEntryDate, Etc. OK,,, at first this does NOT sound correct because you have this SAME information in other tables and all you=92re doing is keeping redundant information=85BUT=85 At the EXACT TIME of the order, and as soon as the operator clicks the =93OK Button=94 when placing the order, I run an = Append Query that gathers the info needed for the above table and appends it to the billing table. What this does is FREEZES the order in time. It takes an EXACT PICTURE of the order and stores it. NOW you can see exactly WHOM it went to, and HOW MUCH the price was AT THAT EXACT TIME. You can customize this table to keep any data you want to freeze. The only thing you have to do after that is create a little maintenance form that asks the user =93Delete Orders Older Than=94 xx/xx/xx. This = way they can clean up the billing table when needed. If you don=92t do this, you=92ll have a table that just keeps getting bigger and bigger. Like I said, I am FORCED to use this method because with horses, =93most times=94 each horse has several owners that must be billed for the percentage of the horse that they own. If there are 4 owners (of the same horse), and we each own 25% of the horse, then we each get 25% of charges billed to our account at the EXACT TIME the order was placed. (In my case =93order=94 would be when the Veterinarian did something to = a horse). These horse owner people are always buying in an out of horses or changing their percentages. You could see how I would be sunk if I didn=92t freeze the order details. Using this method, the billing will correctly reflect the owners=92 EXACT percentage at the EXACT TIME the order was placed. (Who cares what percentage they had yesterday or what percentage the will have tomorrow) The only thing you have to guard against is =93The Dumb Blonde = Factor=94, the user putting in today=92s date when asked =93Delete Orders Older = Than=94 xx/xx_/xx. POOF=85 they=92re out of business. So what I do is MOVE = (append then delete) the records into a table called Old Billing. You can then KEY off the users input date to maintain the =93Old Billing=94 table. = You Just delete the records in the =93Old Billing=94 table using the date = they enter MINUS ONE YEAR. This way they can NEVER loose old billing data for at least one year. I think in ordinary cases, you wouldn=92t have to go through all of = this, but it sounds like cousin Charlie is looking to freeze the order details, regardless of price changes made to his Items table. Unless he is building a formal =93invoicing program=94 that needs =93Invoice = Numbers=94 my method should work just fine for him. Peter C. Stuart, Florida * Kp@xxxxxxxx -_-_-_-_-_-_-_-_- ICQ =3D 412633 -----Original Message----- Create another table with just the prices and link the relationship to the field with prices. Then you can change the prices, but the one set for any order will remain unchanged. Make it a combo box so you can click a drop down to easily find the current price, if there aren't too many or start typing and the current price will usually show up fairly quickly. But it'll also give you the advantage of being able to enter a new price if the current one isn't already in the table. Dian Chapman ************************************************************* PLEASE READ!!!! You are receiving this mail because you subscribed to mso@xxxxxxxxxxxxx or MicrosoftOffice@xxxxxxxxxxxxxxxx To Unsubscribe from this group, send an email to mso-request@xxxxxxxxxxxxx with a subject line that says "unsubscribe" (without the quotes). Do not put unsubscribe IN CAPS. Screaming doesn't get you out any faster and the caps prevent the function from working. To change your email settings to digest or vacation (no mail), visit the group's homepage for full instructions. //www.freelists.org/webpage/mso To be able to use the files section for sharing files with the group, send a request to mso-moderators@xxxxxxxxxxxxx and you will be sent an invitation with instructions. ************************************************************* ************************************************************* PLEASE READ!!!! You are receiving this mail because you subscribed to mso@xxxxxxxxxxxxx or MicrosoftOffice@xxxxxxxxxxxxxxxx To Unsubscribe from this group, send an email to mso-request@xxxxxxxxxxxxx with a subject line that says "unsubscribe" (without the quotes). Do not put unsubscribe IN CAPS. Screaming doesn't get you out any faster and the caps prevent the function from working. To change your email settings to digest or vacation (no mail), visit the group's homepage for full instructions. //www.freelists.org/webpage/mso To be able to use the files section for sharing files with the group, send a request to mso-moderators@xxxxxxxxxxxxx and you will be sent an invitation with instructions. *************************************************************