How To Create an Asynchronous Connection in ADO

This article was previously published under Q194960
This article has been archived. It is offered "as is" and will no longer be updated.
Often, operations involving a database can take some time to process aquery, connect to a datasource, or retrieve results to a client. ADOprovides a way to perform these operations asynchronously. With thisability, developers can also do other tasks during a long operation, suchas displaying a progress dialog box, or offer the user the chance to cancelthe operation.

An asynchronous connection can be established in ADO by using the Optionsparameter to the Connection object's Open method. The following examplecreates an asynchronous DSN-less connection using the SQL Server driver,waits for the connection to be established, then displays connectionproperties for that connection. It also demonstrates the use of the WITHstatement to set multiple properties of the connection object. To use thisexample, you must have Microsoft Data Access Components (MDAC) version 2.1or later installed, which is included in the data components of VisualStudio 6.0 or can be downloaded from:
Create and execute the following program. Substitute your own SQL Server,database, user id, and password in the definition of the "lcConnString"variable. The program displays a WAIT WINDOW message until the connectionis made, then displays the connection properties in a message box:
   * Begin code   * The following program creates a DSN-less connection using   * an existing SQL Server driver. Substitute your own SQL   * server, database, user id and password parameters in the   * definition of the lcConnString variable.   *   * The program then attempts to create an asynchronous connection   * to this server, waiting in a loop until the Connection object's   * state property is no longer attempting to connect.   #DEFINE adAsyncConnect 16   #DEFINE adStateConnecting  2   #DEFINE adUseClient 3   #DEFINE adModeReadWrite 3   #DEFINE CR CHR(13)   lcConnString = "driver={SQL Server};" + ;      "SERVER=YourServerName;" + ;      "DATABASE=YourDatabaseName;" + ;      "UID=YourUserID; " + ;      "PWD=YourPassword"   oConnection = CREATEOBJECT("ADODB.Connection")   WITH oConnection      .CommandTimeout = 60      .ConnectionTimeout = 30      .ConnectionString = lcConnString      .CursorLocation = adUseClient      .Mode = adModeReadWrite   ENDWITH   oConnection.Open(,,, adAsyncConnect)   DO WHILE oConnection.State = adStateConnecting      WAIT WINDOW NOWAIT "Still connecting"   ENDDO   WAIT CLEAR   ? "Connection completed"   lcTitle = "Default connection properties"   lcText = "Attributes: " + LTRIM(STR(oConnection.ATTRIBUTES)) + CR + ;      "Command Timeout: " + LTRIM(STR(oConnection.CommandTimeout)) + CR + ;      "Connection String: " + oConnection.ConnectionString  + CR + ;      "Connection Timeout: " + ;         LTRIM(STR(oConnection.ConnectionTimeout)) + CR + ;      "Cursor Location: " + ;         LTRIM(STR(oConnection.CursorLocation)) + CR + ;      "Default Database: " + oConnection.DefaultDatabase + CR + ;      "Isolation Level: " + LTRIM(STR(oConnection.IsolationLevel)) + CR + ;      "Mode: " + LTRIM(STR(oConnection.Mode)) + CR + ;      "Provider: " + oConnection.Provider + CR + ;      "State: " + LTRIM(STR(oConnection.State)) + CR + ;      "Version: " + oConnection.VERSION   =MESSAGEBOX(lcText)   * End code				
The constants used were defined using the Microsoft Visual Basic 6.0 object browser.

Article ID: 194960 - Last Review: 12/05/2015 09:33:57 - Revision: 4.3

Microsoft Visual FoxPro 5.0 Standard Edition, Microsoft Visual FoxPro 5.0a, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft Data Access Components 2.1 Service Pack 2, Microsoft Data Access Components 2.6

  • kbnosurvey kbarchive kbdatabase kbhowto KB194960