インデックスを選択
Api.JetSetCurrentIndex(sesid, tableid, "indexName");これでインデックス順にソートされます。Api.TryMoveFirst と Api.TryMoveNext で反復します。
インデックスで 1 レコードを検索
Api.JetSetCurrentIndex(ses.JetSesid, Streams.JetTableid, "Id");Api.MakeKey(ses.JetSesid, Streams.JetTableid, Id, MakeKeyGrbit.NewKey);
Api.TrySeek(ses.JetSesid, Streams.JetTableid, SeekGrbit.SeekEQ)
これでいけるはずです。SeekGrbit.SeekGE などの場合は、値も比較すると良いかも。
UInt32 RealId = Api.RetrieveColumnAsUInt32(ses.JetSesid, Streams.JetTableid, C.Streams_Id) ?? 0U;
if (RealId == Id) { ... }
絶対レコード位置を取得
byte[] tmpMark = new byte[1024];int cbMark = tmpMark.Length;
Api.JetGetBookmark(sesid, tableid, tmpMark, tmpMark.Length, out cbMark);
絶対レコード位置へ移動
Api.JetGotoBookmark(sesid, tableid, vr.mark, vr.mark.Length);Note: EsentNoCurrentRecordException を食らう場合があります。
レコードを更新
Api.JetPrepareUpdate(ses.JetSesid, Folders.JetTableid, JET_prep.Replace);Api.SetColumn(ses.JetSesid, Folders.JetTableid, C.FLDCOL_PARENT, FLDCOL_IDto);
Api.JetUpdate(ses.JetSesid, Folders.JetTableid);