Steve Conklin
developer at ultradnt.com
Mon Mar 26 07:53:21 CDT 2007
Whether using ADO with OpenSchema, or ADOX catalog, I can get a list (rs) of
tables, but once I try to get PK, FK, or Index info, all I get is Error #
3251, "Object or Provider is not capable of performing requested operation."
Have tried both SQLOLEDB and MSDASQL as providers. Used Ent. Mgr. to script
out as work-around, but have another situation where need to do thru Access.
Any ideas? All code clipped from MSDN (latest attempt below)
Thanks in advance,
Steve
Code:
Sub Blah()
Dim con As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim rsTbl As ADODB.Recordset
Dim rsPK As ADODB.Recordset
Dim fld As ADODB.Field
Dim rCriteria As Variant
Dim rsSchema As ADODB.Recordset
Dim f As ADODB.Field
con.ConnectionString = _
"Provider=SQLOLEDB;server=XX;database=XX;" & _
"User ID=XX;password=xx"
'"provider=msdasql;DRIVER=SQL Server;"
con.Open
Debug.Print Err
Set rs = con.OpenSchema(adSchemaTables)
rs.MoveFirst
While Not rsTbl.EOF
If Left(rsTbl("table_Name"), 3) <> "sys" Then
If Left(rsTbl("table_Name"), 2) <> "dt" Then
rCriteria = Array(Empty, Empty, Empty, Empty, rsTbl("table_Name"))
' ok until here:
Set rsSchema = con.OpenSchema(adSchemaIndexes, rCriteria)
Debug.Print "Recordcount: " & rsSchema.RecordCount
While Not rsSchema.EOF
Debug.Print "==================================================="
For Each fld In rsSchema.Fields
Debug.Print fld.Name
Debug.Print fld.Value
Debug.Print "------------------------------------------------"
Next
rsSchema.MoveNext
Wend
rsSchema.Close
End If
End If
rsTbl.MoveNext
Wend
con.Close
End Sub