Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Принцип работы TDataset.Locate   Найти похожие ветки 

 
pasha_golub ©   (2005-01-17 15:37) [0]

Как задумана работа Locate в Датасете?

Пример. Имеем два индекса: PK , Index1.
Датасет открыт по PK, юзер ищет по Index1.

Должно вернуть?
1. Строку с наименьшим PK удовлетворяющим критериям
2. Строку с наименьшим Index1 вне зависимости от PK

То есть работа будет выглядеть как:
1. Не меняя резалт сета пробегаем по нему и ищем
2. Создаем доп. резалт сет по Index1, в нем ищем, а потом синхронизируем c PK

Надеюсь понятно


 
pasha_golub ©   (2005-01-17 15:38) [1]

Упс, не в ту конфу... В Базы перенесите, плиз


 
Ega23 ©   (2005-01-17 15:40) [2]

Имхо, должно вернуть первое совпадение значения по Index1. А как DataSet внутри отстортирован - смотри Order By.

З.Ы. Могу ошибаться.


 
pasha_golub ©   (2005-01-17 15:52) [3]

Ega23 ©   (17.01.05 15:40) [2]
З.Ы. Могу ошибаться.
Вот и я склоняюсь к этой мысли. Ведь если юзерь хотит по Index1, пущай и открывает резалт сет по нему. А так ведь он наверно хочет получить строку в зависимости от PK...


 
pasha_golub ©   (2005-01-18 14:27) [4]

Ну, люди, ну просветите же меня, пжлста. Надо реализовать эту штуку, боюсь чтобы не через зад... :(


 
Ega23 ©   (2005-01-18 14:32) [5]

Ну возьми и проверь.

Обычно я пользователю даю возможность самому Order By сформировать.
А метод Locate, по крайней мере по моему опыту, работает с DataSet-ом как с обычным массивом. Т.е. первое вхождение - позиционирование на эту строку.
Да, кстати, Locate сразу по нескольким полям работать может.


 
pasha_golub ©   (2005-01-18 14:52) [6]

Ega23 ©   (18.01.05 14:32) [5]
Как его проверить, если его реализовать надо? :)

А метод Locate, по крайней мере по моему опыту, работает с DataSet-ом как с обычным массивом. Т.е. первое вхождение - позиционирование на эту строку.

Во,во и я так думаю, но блин не хочется потом переделывать, блин..

Обычно я пользователю даю возможность самому Order By сформировать.
БЕз вопросов, юзерь и формирует.

Да, кстати, Locate сразу по нескольким полям работать может.
Та ты шо? ;0) До чего техника дошла.


 
Ega23 ©   (2005-01-18 15:08) [7]

Паш, ну тут только в исходниках TDataSet ковыряться, другого не дано...


 
pasha_golub ©   (2005-01-18 15:51) [8]

Ega23 ©   (18.01.05 15:08) [7]
Шо самое интересное, ковырялся. Дык, вот это просто обертка над методом движка, который всю эту кухню обрабатывает. А движок ессно, БДЕ имеется ввиду, фиг... Кстати, если у кого вдруг есть BDE.pas, то я просто буду ЩЩаслив.


 
atruhin ©   (2005-01-18 15:54) [9]

В датасете нет реализации Locate вообще. Она возложена целиком на потомков. Соответственно в каждом потомке разработчик волен реализовать ее как он считает нужным. В некоторых потомках есть возможность сортировки и работы Locate по методу половинного поиска. Там она может вернуть любое совпавшее значение


 
Ega23 ©   (2005-01-18 15:59) [10]

Ты вот что... Посмотри DBTables.pas, может подойдёт.


 
pasha_golub ©   (2005-01-18 16:10) [11]

atruhin ©   (18.01.05 15:54) [9]
Тоже кстати верно...



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
3-1104085944
Vir
2004-12-26 21:32
2005.01.30
TADOQuery обновление


4-1102945089
sashas
2004-12-13 16:38
2005.01.30
активизация окна


9-1098094575
Некто
2004-10-18 14:16
2005.01.30
Подключение OpenGL в Builder е


14-1105019399
VEG
2005-01-06 16:49
2005.01.30
ОС будущего - как вы ее себе представляете?


3-1104080244
dvp
2004-12-26 19:57
2005.01.30
Автоинкремент