KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q185967: HOWTO: Display Hierarchical Data Using the MSHFlexGrid

Article: Q185967
Product(s): Microsoft Visual Basic for Windows
Version(s): WINDOWS:6.0
Operating System(s): 
Keyword(s): kbVBp600 kbGrpDSVBDB
Last Modified: 11-JAN-2001

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

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

SUMMARY
=======

As its name suggests, the MSHFlexGrid control that ships with Visual Basic 6.0
allows database data to be displayed in an aggregated, hierarchical format.
Using this control in conjunction with the Data Environment Designer, developers
can easily and logically display information contained in several different
database tables, which are connected through the use of foreign keys.

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

The Data Environment Designer is a tool that enables developers to encapsulate
ActiveX Data Object (ADO) connection and command objects in a reusable Visual
Basic object. This sample project makes use of a Data Environment Designer to
establish a connection to SQL Server and to retrieve related data from two
tables in the Pubs sample database via command objects. The related data is then
displayed in a hierarchical format in the MSHFlexGrid control.

To create this sample, do the following:

1. Create a new Standard EXE project. Form1 is created by default.

2. On the Project menu, click Components, and click the Designers tab in the
  Components window. On the Designers tab, make sure that the Data Environment
  check box is selected. On the Controls tab, select the check box next to the
  Microsoft Hierarchical FlexGrid Control 6.0 option. Then click OK to exit the
  Components window.

3. On the Project menu, click Add Data Environment, which adds the
  DataEnvironment1 object to your project.

4. If the object window for the DataEnvironment1 object is not visible,
  right-click the DataEnvironment1 object in Project Explorer and select View
  Object.

5. In the DataEnvironment1 object window, right-click the Connection1 icon
  pictured beneath the DataEnvironment1 icon and select the Properties option
  from the pop-up menu (this displays the Data Link Properties window).

6. Select the Use Connection String option, and click Build. Select the
  Microsoft OLE DB Provider for SQL Server option, and click Next.

7. Under step 1 on the Connection tab, select or enter the name of the SQL
  Server that you are using for this project.

8. Under step 2, enter a user name and password that are valid values for your
  SQL Server Environment. Also select the Allow Saving Of Password check box.

9. Under step 3, select the Pubs sample database from the combo box. Click Test
  to test your connection information. If your test is successful, click OK to
  exit the Data Link Properties window.

10. Right-click the Connection1 icon in the object window for the
  DataEnvironment1 object. Select the Add Command option from the pop-up menu
  to add a new command object to your project.

11. Right-click the new Command1 icon in the DataEnvironment1 object window and
  select the Properties option from the pop-up window (this displays the
  Command1 Properties window).

12. On the General tab, select the SQL Statement option button and cut and paste
  the following code into the enabled text box:

        SELECT pub_id, pub_name FROM Publishers

  Then click OK to close the Command1 Properties window.

13. Right-click the Command1 icon in the DataEnvironment1 object window, and
  select the Add Child Command option from the pop-up menu (this adds another
  icon to the DataEnvironment1 object window called Command2).

14. Right-click the Command2 icon in the DataEnvironment1 object window and
  select the Properties option from the pop-up menu (this displays the
  Command2 Properties window).

15. On the General tab, select the SQL Statement option button and cut and paste
  the following code into the enabled text box:

        SELECT pub_id, title, price FROM Titles

16. On the Relation tab, make sure that the pub_id value is selected in both the
  Parent Fields and the Child Fields/Parameters combo boxes. Then click Add
  (this creates a hierarchical relationship between the pub_id fields that are
  selected in the two command objects).

17. Place an MSHFlexGrid control onto Form1, the default form of the project.

18. Select the MSHFlexGrid control that you added to Form1, then select the
  Properties window.

19. Select the DataEnvironment1 option for the DataSource property, and select
  the Command1 option for the DataMember property.

20. Now run your project. The MSHFlexGrid control is filled with data from both
  the Publishers and Titles tables of the Pubs database, and the information
  is hierarchically grouped.

NOTE: The results of steps 18 and 19 can also be accomplished at run time by
adding the following code to the code window of Form1:

     Option Explicit

     Private Sub Form_Load()
         DataEnvironment1.Command1
         Set MSHFlexGrid1.DataSource = DataEnvironment1.rsCommand1
     End Sub

REFERENCES
==========

Search for "MSHFlexGrid control" in the MSDN Library for Visual Studio 6

Additional query words: kbDSupport kbdse kbVBp kbVBp600

======================================================================
Keywords          : kbVBp600 kbGrpDSVBDB 
Technology        : kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB600Search kbVBA600 kbVB600
Version           : WINDOWS:6.0
Issue type        : kbhowto

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

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.