[dba-SQLServer] ADOX help

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
 




More information about the dba-SQLServer mailing list