|
以下是引用freemanager在2002-10-16 11:13:30的发言:
钻到ADP里试了一下,问题出在这一句:
Set cat.ActiveConnection = CurrentProject.Connection
用Debug.Print CurrentProject.Connection.ConnectiongString可以发现(罗斯文示例库):
Provider=MSDataShape.1; '主要是这句不灵。
Persist Security Info=False;Data Source=MANAGER;User ID=sa;Initial
Catalog=NorthwindCS;Data Provider=SQLOLEDB.1
MSDataShape全称为:Microsoft Data Shaping Service for OLE DB提供的功能很单一。
即数据提供者并不是ADOX所需要的SQLOLEDB(即ADO For SQL sever),也可以说不是正宗的ADO吧,所以并不能提供所需操作。
正确的代码如下:
Dim tbl As New Table
Dim cat As New ADOX.Catalog
Dim cn As New ADODB.Connection
' 以下USERID、Datasource以及NorthwindCS要根据你的实际情况修正,
' 我这是用的罗斯文,计算机名为Manager。
cn.ConnectionString = "ROVIDER=SQLOLEDB.1;" & _
"ERSIST SECURITY INFO=FALSE;" & _
"User ID=sa;" & _
"INITIAL CATALOG=NorthwindCS;" & _
"DATA SOURCE=MANAGER"
cn.Open
Set cat.ActiveConnection = cn
tbl.Name = "MyTable"
Set tbl.ParentCatalog = cat
tbl.Columns.Append "Column1", adInteger
tbl.Columns.Append "Column2", adInteger
tbl.Columns.Append "Column3", adVarWChar, 50
cat.Tables.Append tbl
End Sub
以后碰到需用到ADOX的地方也应该注意这个问题。即数据提供者与数据驱动的区别。
好贴! |
|