利用VB的ADO控件的OpenSchema(adSchemaConstraintTableUsage, rCriteria)方法来获得ORACLE9i中某一数据表的所有条件约束。利用下面的语句均能得到某一数据表的主键、外键及唯一约束。惟独检查条件的约束时,系统总是提示:
“对象或者提供者不能执行所需的操作”程序大至如下:
Public Const Odbc_Str = "UID=system;PWD=system;Driver={Oracle in OraHome92};DATABASE = ZHGL;" _
                         + "DSN=myoracle2; Connection=adconnectAsync"
Dim cnn As New ADODB.Connection
'first_time = Timer
Dim rsSchema As ADODB.Recordset
Dim rsSchema1 As ADODB.RecordStatusEnumDim fld As ADODB.Field
Dim RLD1 As ADODB.Fields
Dim rCriteria As Variant
cnn.Open Odbc_Str
rCriteria = Array(Empty, Empty, Empty, Empty, "employees")
'rCriteria = Array(Empty, Empty, Empty, Empty, "A1234")
''rCriteria = Array("HR", "EMPLOYEE", "CHECK")
'rCriteria = Array(Empty, Empty, Empty)
''rCriteria = Array(Empty, Empty, Empty, Empty, Empty, "employees")
‘’Set rsSchema = cnn.OpenSchema(adSchemaIndexes, rCriteria)
''Set rsSchema = cnn.OpenSchema(adSchemaPrimaryKeys, rCriteria)
Set rsSchema = cnn.OpenSchema(adSchemaCheckConstraints, rCriteria)
''Set rsSchema = cnn.OpenSchema(adSchemaForeignKeys, rCriteria)
其中:
Set rsSchema = cnn.OpenSchema(adSchemaCheckConstraints, rCriteria)
系统提示:“对象或者提供者不能执行所需的操作“
而下面的语句都没有问题。
Set rsSchema = cnn.OpenSchema(adSchemaIndexes, rCriteria)
Set rsSchema = cnn.OpenSchema(adSchemaPrimaryKeys, rCriteria)
Set rsSchema = cnn.OpenSchema(adSchemaForeignKeys, rCriteria)
另我在网上查到一条类试的方法,但却不是Oracle9i的。这里写出来是否对您有所提示。
这个问题已经困扰本人多天了,希望有人能救救我!
    cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=F:\CHECK_TEST\authors.mdb;"   'Open the constraints in the database
    'Set rst1 = cnn1.OpenSchema(adSchemaCheckConstraints)
我认为Microsoft.Jet.OLEDB.4.0不能支持对ORACLE9i的支持。