KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q246919: FIX: VB Crashes on ActiveX Control Interface Wizard Code

Article: Q246919
Product(s): Microsoft Visual Basic for Windows
Version(s): WINDOWS:6.0
Operating System(s): 
Keyword(s): kbAddIn kbCtrl kbDatabase kbDataBinding kbDesigner kbVBp600bug kbGrpDSVBDB kbDSupport k
Last Modified: 28-JUL-2001

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Visual Basic Enterprise Edition for Windows, version 6.0 
-------------------------------------------------------------------------------

SYMPTOMS
========

Visual Basic crashes when running a Standard EXE project that contains an ADO
Data Control and a UserControl that has DataGrid or MSHFlexGrid controls if the
UserControl code was generated by the ActiveX Control Interface Wizard.

The crash occurs on the call to the ReadProperty() method of the PropertyBag
object in the UserControl's ReadProperties event:

  Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
      'Crashes on the following line:
      Set DataSource = PropBag.ReadProperty("DataSource", Nothing)
  End Sub

STATUS
======

Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article. This bug was corrected in the latest service pack for
Visual Studio 6.0.

For additional information about Visual Studio service packs, click the article
numbers below to view the articles in the Microsoft Knowledge Base:

  Q194022 INFO: Visual Studio 6.0 Service Packs, What, Where, Why

  Q194295 HOWTO: Tell That a Visual Studio Service Pack Is Installed

You can download the latest Visual Studio service pack from the following
Microsoft Web site:

  Visual Studio Product Updates
  (http://msdn.microsoft.com/vstudio/downloads/updates.asp)

MORE INFORMATION
================

Steps to Reproduce Behavior
---------------------------

1. In Visual Basic, create a new ActiveX Control project. Project1 is created by
  default. UserControl1 is added to Project1 by default.

2. From the Project menu, click to select References. From the list of available
  References, click to select Microsoft Data Source Interfaces.

3. From the Project menu, click to select Components. From the list of available
  Components, select Microsoft DataGrid Control 6.0 (OLE DB).

4. Add a DataGrid control to UserControl1's Design window. DataGrid1 is added by
  default.

5. If the ActiveX Control Interface Wizard is not listed on the Add-Ins menu, do
  the following:

  a. From the Add-Ins menu, select Add-In Manager.

  b. From the list of available Add-Ins, select VB6 ActiveX Ctrl Interface
     Wizard.

  c. Check the Loaded/Unloaded checkbox, and then click OK.

6. From the Add-Ins menu, click to select ActiveX Control Interface Wizard.

  a. At the Introduction screen (if displayed), click Next.

  b. At the Select Interface Member dialog box:

     1. Move all pre-selected properties to the list box on the left.
     2. Move only the DataSource property to the right, so that it is the only
        Property listed in Selected names.
     3. Click Next.

  c. At the Create Custom Interface Members screen, click Next.

  d. In the Maps To section of the Set Mapping screen:

     1. Select DataGrid1 from the Control drop-down list.
     2. Select DataSource from the Member drop-down list.
     3. Click Next.

  e. In the Finished! screen, deselect View Summary Report, and then click
     Finish.

7. Save and compile the UserControl. Close the UserControl1 Design window.

8. From the File menu, select Add Project to add a Standard EXE project.
  Project2 is created by default. Form1 is added to Project2 by default.

9. From the Project menu, click to select Components. From the list of available
  Components, select Microsoft ADO Data Control 6.0 (OLE DB).

10. Place an ADO Data Control onto Form1. ADODC1 is created by default.

  a. Set the ConnectionString property of the ADO Data Control to connect to
     the Nwind database that comes with Visual Basic. Connect by using either
     ODBC or the Jet OLE DB Provider.

  b. Set the RecordSource property of the ADO Data Control to the Customers
     Table.

11. Place an instance of the UserControl onto Form1. UserControl1 is created by
  default. Set the DataSource property of UserControl1 to ADODC1, the ADO Data
  Control.

12. In the Project Group in Project Explorer, set Project2 as the Start Up
  Project.

13. Press function key F8 to Step Into the Project2's code, and note that Visual
  Basic crashes under the UserControl1_ReadProperties event:

  Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
      'Crashes on the following line:
      Set DataSource = PropBag.ReadProperty("DataSource", Nothing)
  End Sub

(c) Microsoft Corporation 2000, All Rights Reserved.
Contributions by Adrian C. Bradley, Microsoft Corporation

(c) Microsoft Corporation 2000, All Rights Reserved.
Contributions by John Hamrick, Microsoft Corporation


Additional query words: sp4

======================================================================
Keywords          : kbAddIn kbCtrl kbDatabase kbDataBinding kbDesigner kbVBp600bug kbGrpDSVBDB kbDSupport kbVS600sp4fix kbVS600sp5fix 
Technology        : kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB600Search kbVB600
Version           : WINDOWS:6.0
Issue type        : kbbug
Solution Type     : kbfix

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.