DOCUMENT:Q189668 11-AUG-1998 [vbwin] TITLE :HOWTO: Bind Complex-Bound Controls at Run-Time with VB 6.0 PRODUCT :Microsoft Visual Basic for Windows PROD/VER:WINDOWS:6.0 OPER/SYS:WINDOWS KEYWORDS: ====================================================================== --------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual Basic Professional and Enterprise Editions for Windows, version 6.0 --------------------------------------------------------------------- SUMMARY ======= Visual Basic 6.0 offers a wide variety of ways to bind controls at run- time. You can bind controls to a data source, such as the ADO Data Control, to the Data Environment, or directly to an ADO recordset object. You can also build classes and controls in Visual Basic that can act as data sources. A simple-bound control reads one row or field at a time while a complex- bound control is one that looks at the entire recordset. For example, a textbox is a simple-bound control but a grid is a complex-bound control. The data bound listbox and combobox controls are complex-bound because they read the entire recordset to provide the list of available data. Complex-bound controls require that the recordset be bound to support navigation and bookmarks. This functionality is required for the control to read the data in the recordset and know that it can later find that particular row. You may receive an error if you try to bind a complex-bound control to a data source whose data does not support this functionality. MORE INFORMATION ================ Follow these steps to bind a DataGrid control to an ADO recordset. 1. Create a new Standard EXE project. Form1 is created by default. 2. Under Project, References, select the Microsoft ActiveX Data Objects 2.0 Library. 3. On the Project menu, click Components. On the Controls tab, select the check box next to the Microsoft DataGrid Control 6.0 (OLEDB) option. Then click OK to exit the Components window. 4. Add a DataGrid to the form. 5. Add the following code to the form. Be sure to change the value of the strConn variable so that it points to the location of the Northwind (NWind.MDB) database on your machine: Dim cnNWind As New ADODB.Connection Dim rsOrders As New ADODB.Recordset Private Sub Form_Load() Dim strConn As String strConn = "Provider=Microsoft.Jet.OLEDB.3.51;" & _ "Data Source=D:\VS98\VB98\NWind.MDB;" cnNWind.Open strConn rsOrders.Open "SELECT OrderID, EmployeeID, OrderDate FROM Orders", _ cnNWind, adOpenStatic, adLockOptimistic, adCmdText Set DataGrid1.DataSource = rsOrders End Sub 6. Run the code and you will see data in the grid on your form. 7. Modify the code by changing the adOpenStatic constant to adOpenForwardOnly. 8. Run the code and you should see an error message that says "The rowset is not bookmarkable." Additional query words: DataList DataCombo kbActiveX kbCrtl kbDSupport kbdse kbvbp600 kbVBp ====================================================================== Version : WINDOWS:6.0 Platform : WINDOWS 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 1998.