Microsoft KB Archive/180313

= ACC: Error 2753 Using BeforeInsert to Populate Bound OLE Control =

Article ID: 180313

Article Last Modified on 1/22/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q180313



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



SYMPTOMS
When you try to use the BeforeInsert event to populate a bound OLE control on a form, you may receive the following error.

In Microsoft Access 97
Run-time Error '2753':

A problem occurred while Microsoft Access was communicating with the OLE server.

Close the OLE server and restart it outside of Microsoft Access. Then try the original operation again in Microsoft Access.

In Microsoft Access 7.0
Run-time Error '2753':

A problem occurred while Microsoft Access was communicating with the object application.

Solution

Close the object application, and then restart it outside of Microsoft Access. Then try the original operation again in Microsoft Access.



RESOLUTION
The following example uses the Current event to populate a bound OLE control every time you create a new record. It creates the object only if the control is empty.  Follow steps 1 - 4 in the "Steps to Reproduce Behavior" section.  Switch the form to Design view and set the OnCurrent property of the form to the following event procedure: Private Sub Form_Current ' If the control is empty. If Me![OLETest].OLEType = acOLENone Then With Me![OLETest] ' Set the object type to Embedded. .OLETypeAllowed = acOLEEmbedded ' Set the class. .Class = "Excel.Sheet" ' Create the embedded object. .Action = acOLECreateEmbed ' Fit the object to the size of the control. .SizeMode = acOLESizeStretch End With ' Set the focus back to the ID field. Me!ID.SetFocus End If     End Sub  Switch the form to Form view and move to a new record. Note that OLETest is populated when you move to a new record.



STATUS
Microsoft has confirmed this to be a problem in Microsoft Access versions 7.0 and 97.



Steps to Reproduce Behavior
 Start Microsoft Access and open any database.</li>  Create the following table: <pre class="fixed_text">     Table: tblOLETable Field Name: ID        Data Type: Text Field Name: OLETest Data Type: OLE Object </li> Close the table and save it as tblOLETable. When prompted to create a primary key, click No.</li> Use the AutoForm: Columnar Wizard to create a new form based on the tblOLETable table.</li>  Switch the form to Design view and set the BeforeInsert property of the form to the following event procedure: Private Sub Form_BeforeInsert(Cancel As Integer)

With Me![OLETest] ' Set the object type to embedded. .OLETypeAllowed = acOLEEmbedded ' Set the class. .Class = "Excel.Sheet" ' Create the embedded object. .Action = acOLECreateEmbed ' Size the object to fit the control. .SizeMode = acOLESizeStretch End With

End Sub </li> Switch the form to Form view.</li> Type the letter "a" in the ID text box to trigger the BeforeInsert event. Note that you receive one of the errors described in the "Symptoms" section.</li></ol>

Additional query words: custom activex active x

Keywords: kbbug kbpending KB180313

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.