Susan Harkins
harkinsss at bellsouth.net
Thu Mar 9 07:50:10 CST 2006
A couple of examples, what you were missing was a Set cat.ActiveConnection =
con statement.
most of the info on setting field types is in "C:\Program Files\Microsoft
Data Access SDK\Docs\ado260.chm"
Sub ADOX_CreateSQLTable()
'from
'http://support.microsoft.com/?kbid=275252
' reference Microsoft ADO Ext. 2.x for DDL and Security ADO 2.8
'This example demonstrates creating a table with 'Autoincrement, Decimal,
and Memo columns.
Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog
'Return Reference to current database.
'Set cat.ActiveConnection = CurrentProject.Connection Dim con As
ADODB.Connection Dim strConnection As String
Set con = New ADODB.Connection
strConnection = "Provider=SQLOLEDB.1;" & _ "Data Source=.;" & _ "Initial
Catalog = pubs;" & _ "Trusted_Connection=Yes"
Debug.Print (strConnection)
con.Open (strConnection)
Set cat.ActiveConnection = con
'Assign the new table name.
With tbl
.Name = "Department"
' Append new columns to the table.
With .Columns
.Append "DepartmentHead", adWChar, 20
.Append "MyDecimal", adNumeric
'After appending columns, set
'provider specific properties.
With !MyDecimal
Set .ParentCatalog = cat
.Precision = 2
.NumericScale = 1
End With
With !MyVarChar
Set .ParentCatalog = cat
End With
End With
End With
' Append new table to the provider catalog and clean up.
cat.Tables.Append tbl
Dim col As ADOX.Column
For Each tbl In cat.Tables
If tbl.Type = "TABLE" Then
'If tbl.Name = tblName.Name Then
For Each col In tbl.Columns
Debug.Print (col.Name)
Next
'End If
End If
Next
Set cat = Nothing
End Sub
Sub ADOX_CreateSQLTableAlt()
'from
'http://support.microsoft.com/?kbid=275252
' reference Microsoft ADO Ext. 2.x for DDL and Security ADO 2.8
Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog
'Return Reference to current database.
'Set cat.ActiveConnection = CurrentProject.Connection Dim con As
ADODB.Connection Dim strConnection As String
Set con = New ADODB.Connection
strConnection = "Provider=SQLOLEDB.1;" & _ "Data Source=.;" & _ "Initial
Catalog = pubs;" & _ "Trusted_Connection=Yes"
Debug.Print (strConnection)
con.Open (strConnection)
Set cat.ActiveConnection = con
'Assign the new table name.
With tbl
.Name = "Department"
' Append new columns to the table.
Dim col As ADOX.Column
Set col = New ADOX.Column
With col
.Name = "DepartmentHead"
.Type = ADOX.DataTypeEnum.adChar
.DefinedSize = 20
.Attributes = ADOX.ColumnAttributesEnum.adColNullable
End With
.Columns.Append (col)
.Columns.Refresh
End With
' Append new table to the provider catalog and clean up.
cat.Tables.Append tbl
Dim colp As ADOX.Column
For Each tbl In cat.Tables
If tbl.Type = "TABLE" Then
'If tbl.Name = tblName.Name Then
For Each colp In tbl.Columns
Debug.Print (colp.Name)
Next
'End If
End If
Next
Set cat = Nothing
End Sub
Susan Harkins wrote:
>Probably -- just need examples of ADOX though.
>
>Susan H.
>
>Can't you just submit an 'ALTER TABLE' statement rather than going
>through ADOX?
>
>
>Here's what I'm trying to do and can't -- I want to append a column to
>an existing table, using ADOX. The code seems unnecessarily complex,
>and it doesn't work. :( I don't get an error, it just doesn't work. The
>FOR loop just runs through the Columns collection after the append, to
>see if it worked. It really isn't part of the failing technique,
>because that part works fine. The connection is fine.
>
>
>_______________________________________________
>dba-SQLServer mailing list
>dba-SQLServer at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
>http://www.databaseadvisors.com
>
>
>
>
>
--
Marty Connelly
Victoria, B.C.
Canada
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.2.0/276 - Release Date: 3/7/2006