Microsoft KB Archive/142842

From BetaArchive Wiki

Article ID: 142842

Article Last Modified on 1/19/2007



APPLIES TO

  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition



This article was previously published under Q142842

Moderate: Requires basic macro, coding, and interoperability skills.

SYMPTOMS

When you are adding a record through a form that is based on an AutoLookup query, you may receive one of the following error messages when you try to enter anything in the foreign key field:

To make changes to this field, first save the record

   -or-
                

Current field must match join key '?' on 'one' side of one-to-many relationship because it has been updated.

   -or-
                

Field can't be edited

CAUSE

Default values are set on a control or controls bound to the "one" side table of an AutoLookup query, which acts as the record source for the form.


RESOLUTION

Make sure that the control or controls that are bound to the "one" side of the query do not have any default values set.


MORE INFORMATION

When you enter a value in the foreign key field of an AutoLookup query, fields from the "one" side table should update automatically with related information. However, if you are adding a new record and one or more fields from the "one" side have a default value, Microsoft Access assumes that you are trying to add a record to the "one" side as well as to the "many" side.

If there are no default values for any of the "many" side fields, when you enter a value in the foreign key field after making an entry in another field from the "many" side table, you receive the error message:

<fieldname> field must match join key '?' on 'one' side of one-to-many relationship because it has been updated.


If there are default values for any of the "many" side fields, or if you have not entered any value in any field from the "many" side table, you will receive the following warning message in the status bar after you enter a value in the foreign key field:

To make changes to this field, first save the record



Steps to Reproduce Behavior


  1. Open the sample database Northwind.mdb.
  2. Select the Orders table, and on the Edit menu click Copy.
  3. On the Edit menu, click Paste.
  4. In the Paste Table As dialog box, type Orders2 in the Table Name box, and then click OK.
  5. Open the Orders2 table in Design view.
  6. Change the OrderID Data Type from AutoNumber to Number.
  7. Save and close the Orders2 table.
  8. Create the following new query based on the Customers and the Orders2 tables:

          Query: AutoLookup
          ------------------
          Type: Select Query
    
          Field: OrderID
             Table: Orders2
             Sort: Ascending
          Field: OrderDate
             Table: Orders2
          Field: CustomerID
             Table: Orders2
          Field: CompanyName
             Table: Customers
          Field: Address
             Table: Customers
          Field: City
             Table: Customers
          Field: Region
             Table: Customers
          Field: PostalCode
             Table: Customers
          Field: Country
             Table: Customers
          Field: Phone
             Table: Customers
                            
  9. Save the query as AutoLookup and close it.
  10. Select the AutoLookup query, and on the Insert menu, click AutoForm.
  11. When the new form opens in Form view, on the View menu click Design View (or Form Design in Microsoft Access 7.0).
  12. Select the CustomerID control, and then on the Format menu, point to Change To, and then click Text Box.
  13. Select the Region control, and set its DefaultValue property to 0 (zero).
  14. Open the form to Form view, and on the Records menu, click Data Entry.
  15. Try to type any value into the Customer text box. Note that the following message appears in the status bar:

           To make changes to this field, first save the record.
                            
  16. Press the ESC key twice to undo the new record.
  17. Type 1234 in the OrderID text box. Press TAB to move to the Customer text box, enter a value, and then press ENTER. Note that you receive the following error message:

    Current field must match join key '?' on 'one' side of one-to-many relationship because it has been updated.

  18. Press the ESC key twice to undo the new record.


REFERENCES

For more information about the AutoLookup feature, search on the phrase "AutoLookup queries," and then view the "Create an AutoLookup query that automatically fills in data" or the "About AutoLookup queries that enter data automatically" topic, using the Microsoft Access 97 Help Index.


Additional query words: current field must match join key ? on one side of one-to-many relationship because it has been updated field can t be edited

Keywords: kberrmsg kbprb KB142842