Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизПринцип работы 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c