Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.037 c
3-1103765055
Vader
2004-12-23 04:24
2005.01.30
ADO и dbExpress использование для локальных БД


1-1105967931
rolex
2005-01-17 16:18
2005.01.30
Как сделать чтобы hint не убирался ч/з определённое время?


1-1106117795
Гость
2005-01-19 09:56
2005.01.30
daysBetween


1-1105690836
vladimir24
2005-01-14 11:20
2005.01.30
многооконный WebBrowser


1-1105942449
Mishenka
2005-01-17 09:14
2005.01.30
Как в DateTimePicker е увеличить шаг изменения времени?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский