PRB: Error 3265 When You Access Properties Collection

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.


When you use ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) and try to access properties in the Properties Collection, you may receive the following error message:
Run time error '3265':
ADO could not find the object in the collection corresponding to the
name or ordinal reference requested by the application.
The following error is returned from ADO 2.5 and later:

Run-time error '3265':
Item cannot be found in the collection corresponding to the requested name or ordinal.


The object's ParentCatalog property was not set to a valid Catalog object,


the ADO Connection object associated with the Parent Catalog may be invalid.


Set the object's ParentCatalog property to a valid Catalog object,


make sure the Parent Catalog is associated with a valid ADO Connection Object.


This behavior is by design.

More Information

The Properties collection associated with ADOX objects exposes provider-specific properties. However, ADOX objects can not expose this collection if there is not a channel for ADOX to talk to the Provider. This channel is created through the object's ParentCatalog property that points to a Catalog object. The Catalog object's Connection property must be set to a valid, opened ADO Connection object. Once this is in place, ADOX objects can expose any exposed provider-specific properties.

Steps to Reproduce Behavior

  1. Start Visual Basic.
  2. Choose the default project type.
  3. Set a project reference to each of the following:Microsoft ADO Ext. 2.x for DDL and Security and
    Microsoft ActiveX Data Objects 2.x Library.

  4. Paste the following code into the default form's Load method:
       Dim cnn As ADODB.Connection
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    Dim idx As ADOX.Index

    Set cnn = CreateObject("ADODB.Connection")

    With cnn
    .ConnectionString = "PROVIDER=SQLOLEDB" & _
    ";DATA SOURCE=<server name>" & _
    ";USER ID=<uid>;PASSWORD=<pwd>" & _
    ";INITIAL CATALOG=<catalog name>"
    End With

    Set cat = CreateObject("ADOX.Catalog")
    cat.ActiveConnection = cnn

    Set tbl = CreateObject("ADOX.Table")
    tbl.Name = "test"

    tbl.Columns.Append "iMyID", adInteger
    tbl.Columns.Append "cTest", adChar, 15

    ' Comment the Line below and
    ' Uncomment the duplicate line two lines below to avoid error.
    tbl.Columns(0).Properties("Autoincrement").Value = True
    'This line is the key.
    Set tbl.ParentCatalog = cat
    'tbl.Columns(0).Properties("Autoincrement").Value = True
    cat.Tables.Append tbl


The following is from Help under the ParentCatalog Property from the Data Acces Software Development Kit for use with Microsoft Data Access Components:

Some data providers allow provider-specific property values to be written only at creation (when a table or column is appended to its Catalog collection). To access these properties before appending these objects to a Catalog, specify the Catalog in the ParentCatalog property first.

ID d'article : 201826 - Dernière mise à jour : 23 août 2001 - Révision : 1