Microsoft KB Archive/241025

From BetaArchive Wiki

Article ID: 241025

Article Last Modified on 11/25/2002



APPLIES TO

  • Microsoft Access 2000 Standard Edition



This article was previously published under Q241025

Advanced: Requires expert coding, interoperability, and multiuser skills.

This article applies only to a Microsoft Access database (.mdb).


SYMPTOMS

When you use the AddNew method on a recordset object variable created from the RecordsetClone property of a form, the form incorrectly moves to a new record.

RESOLUTION

To resolve this problem, obtain Microsoft Office 2000 Service Release 1/1a (SR-1/SR-1a).

To obtain SR-1/SR-1a, click the article number below to view the article in the Microsoft Knowledge Base:

245025 OFF2000: How to Obtain and Install Microsoft Office 2000 Service Release 1/1a (SR-1/SR-1a)


To temporarily work around this problem, use the Clone method to create a copy of the Recordset property of the form, and then manipulate the copy of the recordset. To use the Clone method with the Recordset property of the form, follow these steps.

CAUTION: If you follow the steps in this example, you modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file and follow these steps on a copy of the database.

  1. Open the sample database Northwind.mdb.
  2. Open the Customers form in Design view.
  3. Add a command button to the form with the following properties:

       Command button
       ---------------------------
       Name: Command1
       Caption: AddNew
       OnClick: [Event Procedure]
                        
  4. Set the OnClick property of the command button to the following event procedure:

    Private Sub Command1_Click()
       Dim rs As DAO.Recordset
       Set rs = Me.Recordset.Clone
       rs.AddNew
       rs!CustomerID = "AAAAA"
       rs!CompanyName = "AAAAA Company"
       rs.Update
    End Sub
                        
  5. Save the form and close it.
  6. Open the Customers form in Form view.
  7. Click the command button.

Note that the record is added to the clone of the recordset of the form without affecting the form's current position. To actually see the record, you must requery the form, or close and reopen it.

STATUS

Microsoft has confirmed that this is a problem in Microsoft Access 2000. This problem was corrected in Microsoft Office 2000 SR-1/SR-1a.

MORE INFORMATION

The RecordsetClone property provides a copy, or a clone, of the underlying recordset of the form. The recordset provided by the RecordsetClone property is equivalent to opening a recordset on a table or query, and then using the Clone method to create a copy of that recordset.

Many developers use the RecordsetClone property to move through or to operate on the records of a form, independent of the form itself. For example, you can use the RecordsetClone property when you want to use a method, such as the DAO Find method, that you cannot use with forms.

Microsoft Access 2000 has a new Recordset property that gives developers access to the actual recordset that a form uses. In earlier versions of Access, the RecordsetClone property is available, but it only allows access to a copy of the recordset of a form. By using the new Recordset property, you can use the Clone method to create a copy of the recordset to emulate the behavior of the RecordsetClone property.

Steps to Reproduce Behavior

  1. Follow steps 1 through 3 in the "Resolution" section earlier in this article.
  2. Set the OnClick property of the command button to the following event procedure:

    Private Sub Command1_Click()
       Dim rs As DAO.Recordset
       Set rs = Me.RecordsetClone
       rs.AddNew
       rs!CustomerID = "AAAAA"
       rs!CompanyName = "AAAAA Company"
       rs.Update
    End Sub
                        
  3. Save the form and close it.
  4. Open the Customers form in Form view.
  5. Click the command button.

Note that the form incorrectly moves to a new record and displays the values of the newly added record.


Additional query words: pra

Keywords: kbbug kbpending KB241025