> 如何取得 schema infomation? Schema 資訊是由 OLE DB Provider 所提供,TADOConnection 有下列方 法可以使用: GetTableNames 取得資料表名稱 GetFieldNames 取得指定資料表的欄位名稱 GetProcedureNames 取得預儲程序名稱 OpenSchema 取得指定的 schema 資訊 函式原型: procedure OpenSchema( const Schema: TSchemaInfo; const Restrictions: OleVariant; const SchemaID: OleVariant; DataSet: TADODataSet); 參數 Restrictions 為限制條件,各種 Schema 有不同的限制條件可以 設定,在 MSDN 中輸入 SchemaEnum 關鍵字即可找到相關說明,其中 Constraint Columns 就是各 Schema 所能設定的限制條件。 範例: 取得一般資料表(此範例無法取得 MS Access97 的資料表,若 使用 GetTableNames 方法則沒問題)。 procedure GetTableNames(cnn: TADOConnection; dat: TADODataSet); var aField: TField; begin cnn.OpenSchema( siTables, VarArrayOf([Null, Null, Null, 'TABLE']), // 只取得一般資料表 EmptyParam, dat // OpenSchema 會將此資料集開啟成唯讀的資料集 ); aField := dat.FieldByName('TABLE_NAME'); while not dat.Eof do begin Writeln(aField.AsString); dat.Next; end; end; 若要取得 Views 則可以將 Restrictions 參數設定為 VarArrayOf([Null, Null, Null, 'VIEW'])