ACC: Error 2753 Using BeforeInsert to Populate Bound OLE Control
ID: Q180313
|
The information in this article applies to:
-
Microsoft Access versions 7.0, 97
SYMPTOMS
Advanced: Requires expert coding, interoperability, and multi-user skills.
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.
MORE INFORMATION
Steps to Reproduce Behavior
- Start Microsoft Access and open any database.
- Create the following table:
Table: tblOLETable
------------------------
Field Name: ID
Data Type: Text
Field Name: OLETest
Data Type: OLE Object
- Close the table and save it as tblOLETable. When prompted to create a
primary key, click No.
- Use the AutoForm: Columnar Wizard to create a new form based on
the tblOLETable table.
- 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
- Switch the form to Form view.
- 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.
Additional query words:
custom activex active x
Keywords : IntpOlea IntpCstm
Version : WINDOWS:7.0,97
Platform : WINDOWS
Issue type : kbbug