Главная страница
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.029 c
1-1105983045
Dimon 33321
2005-01-17 20:30
2005.01.30
Послать сообщение Paint форме


4-1102333739
UFO
2004-12-06 14:48
2005.01.30
2 нити при старте программы


14-1105487402
pika
2005-01-12 02:50
2005.01.30
Готов ли ты это сделать !!!


1-1105791814
L.E.E.
2005-01-15 15:23
2005.01.30
Карта города с объектами - домами?


6-1097826165
alex732
2004-10-15 11:42
2005.01.30
IdSMTP, вложения и кодировка...