If a Connection's CommandTimeout property is set to some value and a
Command object is associated to that Connection, the Command object does
not pickup the Connection's CommandTimeout setting. Instead, the Command
object's CommandTimeout is set to its default setting or whatever it was
set to prior to being associated with the Connection.
            
            ↑ Back to the top
            
         
        
            
            
                
ActiveX Data Objects (ADO) does not practice inheritance. Due to the stand
alone capability of its objects, a Command object can be associated with
more than one Connection object. The one exception is the CursorLocation
property.
            
            ↑ Back to the top
            
         
        
        
        
            
            
                Steps to reproduce the behavior
- Start a Visual Basic Project.
 - Set a Project Reference to the Microsoft ActiveX Data Objects Library.
 - Paste the following code in the Form_Load() event of the default form.
   You need to modify the connection string so that it references a valid
   datasouce.
      Dim cnn As New ADODB.Connection
      Dim cnstring As String
      cnstring = "Provider = SQLOLEDB;" & _
                 "DATA SOURCE =<server name>;" & _
                 "USER ID = <user id>;" & _
                 "PASSWORD =<password>;" & _
                 "INITIAL CATALOG = <database>;"
      cnn.CommandTimeout = 0
      cnn.Open cnstring
      Dim cmd As New ADODB.Command
      cmd.ActiveConnection = cnn
      Debug.Print "Timeout on Connection: " & cnn.CommandTimeout
      Debug.Print "Timeout on Command:  " & cmd.CommandTimeout
					 - Run the form. You should see that the timeout for the Connection object is
   set to zero (0) as expected, while the timeout for the Command object is 30 seconds (which is the
   default).
 
             
            ↑ Back to the top