从提供者获取数据库模式信息。语法Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)返回值返回包含模式信息的 Recordset 对象。Recordset 将以只读、静态游标打开。参数QueryType   所要运行的模式查询类型,可以为下列任意常量。Criteria   可选。每个 QueryType 选项的查询限制条件数组,如下所列:QueryType 值 Criteria 值 
AdSchemaAsserts CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME 
AdSchemaCatalogs CATALOG_NAME 
AdSchemaCharacterSets CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME 
AdSchemaCheckConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME 
AdSchemaCollations COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME 
AdSchemaColumnDomainUsage DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
COLUMN_NAME 
AdSchemaColumnPrivileges TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
GRANTOR
GRANTEE 
adSchemaColumns TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 
adSchemaConstraintColumnUsage TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 
adSchemaConstraintTableUsage TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME 
adSchemaForeignKeys PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
FK_TABLE_CATALOG
FK_TABLE_SCHEMA
FK_TABLE_NAME 
adSchemaIndexes TABLE_CATALOG
TABLE_SCHEMA
INDEX_NAME
TYPE
TABLE_NAME 
adSchemaKeyColumnUsage CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 
adSchemaPrimaryKeys PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME 
adSchemaProcedureColumns PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
COLUMN_NAME 
adSchemaProcedureParameters PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PARAMTER_NAME 
adSchemaProcedures PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PROCEDURE_TYPE 
adSchemaProviderSpecific 参见说明 
adSchemaProviderTypes DATA_TYPE
BEST_MATCH 
adSchemaReferentialConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME 
adSchemaSchemata CATALOG_NAME
SCHEMA_NAME
SCHEMA_OWNER 
adSchemaSQLLanguages <无> 
adSchemaStatistics TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME 
adSchemaTableConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE 
adSchemaTablePrivileges TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
GRANTOR
GRANTEE 
adSchemaTables TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
TABLE_TYPE 
adSchemaTranslations TRANSLATION_CATALOG
TRANSLATION_SCHEMA
TRANSLATION_NAME 
adSchemaUsagePrivileges OBJECT_CATALOG
OBJECT_SCHEMA
OBJECT_NAME
OBJECT_TYPE
GRANTOR
GRANTEE 
adSchemaViewColumnUsage VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME 
adSchemaViewTableUsage VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME 
adSchemaViews TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME 
SchemaID   OLE DB 规范没有定义用于提供者模式查询的 GUID。如果 QueryType 设置为 adSchemaProviderSpecific,则需要该参数,否则不使用它。

解决方案 »

  1.   

    你的问题应该这样解决
    Set curRecordSet = curConnection.OpenSchema(adSchemaPrimaryKeys, Array(Empty, Empty, "表名"))这样记录集中就有所有主键字段的信息
      

  2.   

    楼上说的是oracle的下面是sql server的
    有没有键?
    select OBJECTPROPERTY(OBJECT_ID(tbName) , 'TableHasPrimaryKey')
    键是什么?
    select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = tbName
      

  3.   

    楼上的大哥
    ADO的方法都是通用的
    不信你试试
    这个方法用在SQL Server上保证没问题!!
      

  4.   

    OpenSchema是可以是通用的!
      

  5.   

    OpenSchema 方法好象需要curConnection.CursorLocation=adUseClient