<><FONT face=Verdana>钻到ADP里试了一下,问题出在这一句:
Set cat.ActiveConnection = CurrentProject.Connection
用Debug.Print CurrentProject.Connection.ConnectiongString可以发现(罗斯文示例库):
<FONT color=#880000>rovider=MSDataShape.1; '主要是这句不灵。</FONT>
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吧,所以并不能提供所需操作。
正确的代码如下:
<FONT face="Courier New">Dim tbl As New Table
Dim cat As New ADOX.Catalog
Dim cn As New ADODB.Connection
</FONT><FONT face="Courier New"><FONT color=#008800>' 以下USERID、Datasource以及NorthwindCS要根据你的实际情况修正,
' 我这是用的罗斯文,计算机名为Manager。</FONT>
cn.ConnectionString = "ROVIDER=SQLOLEDB.1;" & _
"PERSIST 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</FONT></FONT></P>
<P><FONT face=Verdana><B>以后碰到需用到ADOX的地方也应该注意这个问题。即数据提供者与数据驱动的区别。</B></FONT></P>
[此贴子已经被zhuyiwen于2005-1-28 21:44:23编辑过]
|