Re: How do I create an AutoIncrement column with ADOX ?

From: Frank Hickman (fhickman_nosp_at_m_noblesoft.com)
Date: 03/01/04


Date: Mon, 1 Mar 2004 00:35:35 -0500

Try adding this line prior to setting the property...

.Item("ContactId").ParentCatalog = catDB;

My VB is a little rusty so you may have to tweak it :)

Sub CreateAutoNumberField(strDBPath As String)
   Dim catDB As ADOX.Catalog
   Dim tbl As ADOX.Table

   Set catDB = New ADOX.Catalog
   ' Open the catalog.
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & strDBPath

   Set tbl = New ADOX.Table
   With tbl
      .Name = "Contacts"
      Set .ParentCatalog = catDB
      ' Create fields and append them to the
      ' Columns collection of the new Table object.
      With .Columns
         .Append "ContactId", adInteger
         ' Make the ContactId field auto-incrementing.
         .Item("ContactId").ParentCatalog = catDB;
         .Item("ContactId").Properties("AutoIncrement") = True
         .Append "CustomerID", adVarWChar
         .Append "FirstName", adVarWChar
         .Append "LastName", adVarWChar
         .Append "Phone", adVarWChar, 20
         .Append "Notes", adLongVarWChar
      End With
   End With

   ' Add the new Table to the Tables collection of the database.
   catDB.Tables.Append tbl

   Set catDB = Nothing
End Sub

This solution was posted by Josef Blösl on 02/13/2004 in a reply to my reply
about the same subject. My solution was somewhat different so if the above
does not work for you, you may want to try that instead. Which was to go
ahead and append the table to the catalog and then set the column property.
But his solution should work as appending the table essentially does this
too.

HTH

-- 
============
Frank Hickman
NobleSoft, Inc.
============
Replace the _nosp@m_ with @ to reply.
"harry" <harry@nospam> wrote in message
news:uNA2FOz$DHA.1464@tk2msftngp13.phx.gbl...
> Previously posted on microsoft.public.data.oledb
>
> Hi,
>
> I'm trying to create AutoIncrement column in a new Access database table
> via ADOX.
> I am using MSDN sample code however I still receive error:  Property
'Item'
> is 'ReadOnly'
>
>  The line triggering the error is:
> .Item("ContactId").Properties("AutoIncrement") = True
>
>  I'm using MDAC 2.8 and VB.NET
>
>  How do I create AutoIncrement column when creating new table using ADOX ?
>
>  Thanks
>  Harry
>
>  This is the Sample I tried...
>
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odeopg/html/deovrcreatingmodifyingaccesstables.asp
>
>  Sub CreateAutoNumberField(strDBPath As String)
>     Dim catDB As ADOX.Catalog
>     Dim tbl As ADOX.Table
>
>     Set catDB = New ADOX.Catalog
>     ' Open the catalog.
>     catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>        "Data Source=" & strDBPath
>
>     Set tbl = New ADOX.Table
>     With tbl
>        .Name = "Contacts"
>        Set .ParentCatalog = catDB
>        ' Create fields and append them to the
>        ' Columns collection of the new Table object.
>        With .Columns
>           .Append "ContactId", adInteger
>           ' Make the ContactId field auto-incrementing.
>           .Item("ContactId").Properties("AutoIncrement") = True
>           .Append "CustomerID", adVarWChar
>           .Append "FirstName", adVarWChar
>           .Append "LastName", adVarWChar
>           .Append "Phone", adVarWChar, 20
>           .Append "Notes", adLongVarWChar
>        End With
>     End With
>
>     ' Add the new Table to the Tables collection of the database.
>     catDB.Tables.Append tbl
>
>     Set catDB = Nothing
>  End Sub
>
>
>
>
>
>


Relevant Pages