Теоретический вопрос о функции Locate

Michael Longneck
Дата: 29.04.2011 16:43:28
Должна ли эта функция находить первую по порядку индекса запись либо же она может искать какую-то соответствующую запись. Dataset индексирован.
Anatoly Podgoretsky
Дата: 29.04.2011 16:49:53
Ей все равно как и где искать, если есть возможность использовать индекс, она его использует, если нет, то последовательный поиск.
schi
Дата: 29.04.2011 16:51:48
Michael Longneck,

У сферического датасета в вакууме Locate должна находить первую запись, список значений полей у которой удовлетворяет заданным значениям. Так как Locate виртуальный метод, то как конкретные наследники реализуют, так и будет, по индексу, обратным перебором, и т.п.
Michael Longneck
Дата: 29.04.2011 16:53:31
Ввиду того, что я сам пишу её реализацию для TTable - аналога, то я бы хотел узнать именно на поставленный вопрос ответ.
DimaBr
Дата: 29.04.2011 16:56:13
Как напишите поиск, так и будет
Michael Longneck
Дата: 29.04.2011 16:58:14
ОК, тогда переформулируем вопрос - у BDE всегда ищется первая запись? Потому что гора кода расчитана на определённое поведение, а я с BDE не имел дела всерьёз ... никогда.
schi
Дата: 29.04.2011 17:02:17
Michael Longneck
ОК, тогда переформулируем вопрос - у BDE всегда ищется первая запись? Потому что гора кода расчитана на определённое поведение, а я с BDE не имел дела всерьёз ... никогда.


RTFS: DBTables.pas,

function TBDEDataSet.LocateRecord(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions;
SyncCursor: Boolean): Boolean;
Michael Longneck
Дата: 29.04.2011 17:06:52
Сей файл я крайне внимательно читал. Однако

DbiGetRecordForKey никак не объясняет как она ищет. При поиске фильтром яснее, там точно первая запись.
Гаджимурадов Рустам
Дата: 29.04.2011 17:09:58
По сабжу: да, первую, да, инлексирует. Но я бы сделал это
опциональным, ибо велик шанс, что в будущем понадобится.

schi
RTFS: DBTables.pas,

function TBDEDataSet.LocateRecord
Интересно, что это ему даст... Сами бы хоть попробовали...
Anatoly Podgoretsky
Дата: 29.04.2011 19:13:40
Michael Longneck
ОК, тогда переформулируем вопрос - у BDE всегда ищется первая запись? Потому что гора кода расчитана на определённое поведение, а я с BDE не имел дела всерьёз ... никогда.

Locate не имеет отношения к БДЕ