У меня есть таблица из 5 столбцов с первичным индексом из 2 столбцов. Допустим, индекс определен как (Col1, Col2).
В следующем фрагменте Api.TrySeek возвращает значение false, и я не уверен, почему:
Api.JetSetCurrentIndex(session, table, null);
// this should match on Col1 = colVal1 and Col2 = *
Api.MakeKey(session, table, colVal1, MakeKeyGrbit.NewKey | MakeKeyGrbit.FullColumnStartLimit);
if (Api.TrySeek(session, table, SeekGrbit.SeekEQ)) // why is this false??
{
Api.MakeKey(session, table, colVal1, MakeKeyGrbit.NewKey | MakeKeyGrbit.FullColumnEndLimit);
if (Api.TrySetIndexRange(session, table, SetIndexRangeGrbit.RangeUpperLimit | SetIndexRangeGrbit.RangeInclusive))
{
<loop through entries in index range>
Однако это возвращает true, если я использую SeekGrbit.SeekGE. Может кто-нибудь объяснить, почему? Разве SeekEQ не работает с подстановочными столбцами, а SeekGE?
В l oop я дважды проверил, что все записи имеют Col1 == colVal1, чтобы исключить возможность того, что он просто находит записи где Col1> colVal1.