|
■No67477 (パル さん) に返信 > MDBファイル内に含まれるテーブルの更新日を取得したく、以下のようにしてみました。
DAO を用いる場合: tbl = db.TableDefs["TBL1"]; dt1 = tbl.Properties["DateCreated"].Value; // テーブルの作成日時 dt2 = tbl.Properties["LastUpdated"].Value; // テーブルレイアウトの最終更新日時 ※実際にはReleaseComObject への対応のため、各オブジェクトを変数に受けて処理する必要があります。
System.Data.OleDb.OleDbConnection を用いる場合(その1): tbl = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, "TBL1"}); if( tbl.Rows.Count > 0 ) { dt1 = tbl.Rows[0]["DATE_CREATED"]; // テーブルの作成日時 dt2 = tbl.Rows[0]["DATE_MODIFIED"]; // テーブルレイアウトの最終更新日時 }
System.Data.OleDb.OleDbConnection を用いる場合(その2): tbl = con.GetSchema("Tables", new string[] { null, null, "TBL1"} ); if( tbl.Rows.Count > 0 ) { dt1 = tbl.Rows[0]["DATE_CREATED"]; // テーブルの作成日時 dt2 = tbl.Rows[0]["DATE_MODIFIED"]; // テーブルレイアウトの最終更新日時 }
ADODB を用いる場合: rs = con.OpenSchema(SchemaEnum.adSchemaTables, new object[] {null, null, "TBL1"} ); if( !rs.EOF ) { dt1 = rs.Collect["DATE_CREATED"]; // テーブルの作成日時 dt2 = rs.Collect["DATE_MODIFIED"]; // テーブルレイアウトの最終更新日時 } rs.Close(); ※別途、ReleaseComObject への対応が必要です。
ADOX を用いる場合: tbl = cat.Tables["TBL1"]; dt1 = tbl.DateCreated; // テーブルの作成日時 dt2 = tbl.DateModified; // テーブルレイアウトの最終更新日時 ※実際には ReleaseComObject への対応のため、各オブジェクトを変数に受けて処理する必要があります。
> 'MSysObjects' の読み取り権限がないので、レコードを読み取ることができません。 OleDbConnection に対して、"User ID=Admin;" を追加してみるのはどうでしょうか。
|