リンク(アタッチ)テーブルに対する Seek |
対象バージョン : 97, 2000(MDB), 2002(MDB), 2003(MDB)
最終更新日 : 2005/04/25
(オリジナル作成日 :1998/12/27)
概 要
リンクしたテーブルに対して Recordset オブジェクトを作成し、FindFirst 等の Find 系のメソッドによる検索を行うことができますが、インデックスを利用した Seek メソッドを用いた高速検索を行うことができません。
リンクテーブルの元の接続先に対して Seek を行う方法です。
解 説
リンクテーブルの TableDef オブジェクトの Connect プロパティには、接続先の mdb ファイル名の情報が、また、SourceTableName プロパティには、接続先のテーブルの名称が格納されています。
これらの情報を利用し、リンクテーブルのリンク先に対して直接 Recordset オブジェクトを作成し、これに対して Seek を行います。
Dim curdb As Database Dim lnkdb As Database Dim tbDef As TableDef Dim strDBPath As String Dim lnkrs As Recordset Set curdb = CurrentDb Set tbDef = curdb.TableDefs("対象のリンクテーブル") strDBPath = tbDef.Connect strDBPath = Mid(strDBPath, InStr(strDBPath, "DATABASE=") + 9) Set lnkdb = DBEngine(0).OpenDatabase(strDBPath) Set lnkrs = lnkdb.OpenRecordset(tbDef.SourceTableName, dbOpenTable) lnkrs.Index = "PrimaryKey" lnkrs.Seek "=", 検索値
補 足
改定履歴