![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в бд
Л.Д. © (2009-10-20 13:15:00)Нужно проверить существует ли определенное значение поля в таблице БД. Использую FindKey, но указатель записи при True перемещается на эту запись, как сделать без перемещения указателя.
Сергей М. (2009-10-20 13:29:00) [1]Или, если это TClientDataSet, делай клон НД и ищи ключ в клоне - курсоры оригинального и клонированного НД независимы.
Сергей М. (2009-10-20 13:28:00) [2]
> не нравиться с точки зрения оптимальность
Правильно не нравится.
Делай закладку, после этого ищи ключ и в случае нахождения возвращайся на сохраненную закладку, после чего уничтожай ее.
Сергей М. (2009-10-20 13:26:00) [3]Никак.
clickmaker (2009-10-20 13:26:00) [4]> как сделать без перемещения указателя
SQL
if exists (select ... )
Л.Д. (2009-10-20 13:25:00) [5]Сделал так, но не нравиться с точки зрения оптимальность:
function TDM.SectionExists(SectionId: Integer): Boolean;
var
OldItemId: Integer;
begin
OldItemId := Ffield_item_id.AsInteger;
Result := (SectionId = const_HomeSectionId)
or (cmp_TableByKey_.FindKey([SectionId]) and (Ffield_group_id.AsInteger = 0)
and (Ffield_flags.AsLargeInt <> 1));
cmp_TableByKey_.FindKey([OldItemId]);
end;