Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизКак выбрать из DataSet то что мне нужно Найти похожие ветки
← →
yk © (2005-05-30 08:51) [0]Уважаемые Мастера!
Помогите решить следующую задачу:
У меня есть датасет, в котором выбраны записи из справочной таблицы.
А мне надо выбрать записи (в DBLookupComboboxEh - хотя возможно, это не важно куда) не все, а допустим у которых некоторое поле =1 или по другому признаку, который можно задать типа (where fileld=num and ...)
Посылать запрос в базу мне кажется неудобным, ведь эти данные уже есть в моём датасете.
Подскажите, как выкрутиться.
← →
ЮЮ © (2005-05-30 08:57) [1]См. DataSet.Filter
← →
yk © (2005-05-30 09:39) [2]DBLookupComboboxEh1.ListSource.DataSet.Filter:=" поле=true" ;
DBLookupComboboxEh1.ListSource.DataSet.Filtered:=true;
DBLookupComboboxEh1.ListSource.DataSet.Active:=false;
DBLookupComboboxEh1.ListSource.DataSet.Active:=true;
И... никакой реакции :(
Даже не ругается... :(
← →
Anatoly Podgoretsky © (2005-05-30 09:46) [3]yk © (30.05.05 08:51)
Делай запрос и не мучайся
← →
yk © (2005-05-30 09:50) [4]
> Делай запрос и не мучайся
Запрос я всегда успею сделать,
просто мне кажется некрасиво при каждом фильтре - запросы посылать.
А что если - "классика" - поиск по подстроке.
Что же всё время запросы посылать?
Наверно можно и покрасивше это сделать. ИМХО.
А т.к. таки задачи встают ИМХО довольно часто, то должны же умные люди их красиво решать. Может и меня, глупую, научат :)
← →
-=XP=- © (2005-05-30 09:52) [5]"[поле]<>false"
Учите матчасть.
← →
-=XP=- © (2005-05-30 09:54) [6]P.S. По секрету: Переоткрывать НД не надо.
← →
Sergey13 © (2005-05-30 09:55) [7]2[2] yk © (30.05.05 09:39)
А зачем ты делаешь Active:=false; Active:=true;? Ты же как раз запрос переоткрываешь?
Компоненты IBX? Так там Filter не реализован вроде. Надо через onFilterRecord делать.
← →
yk © (2005-05-30 09:57) [8]
> Учите матчасть.
вот и папа мой то же говорит (он бортинжинер между прочим)
> P.S. По секрету: Переоткрывать НД не надо.
Это я от безысходности (иначе зачем [4]), ведь не работает :(
И даже
> "[поле]<>false"
не работает
← →
yk © (2005-05-30 09:58) [9]
> Компоненты IBX?
Да
> Так там Filter не реализован вроде.
Похоже вы правы
> Надо через onFilterRecord делать.
Щас попробую ....
← →
yk © (2005-05-30 10:14) [10]работает.
Accept := DataSet["поле"] =true;
Теперь наделаю разных фильтров и буду их использовать :)
Правда Borland не приводит примеров на случай join из датасетов.
Это вообще можно сделать:
в одном датаасете - одна справочная таблица, в другом - другая.
Их join например в третий датасет и пофильтровать?
← →
yk © (2005-05-30 10:14) [11]
> Их join например в третий датасет
Првада как это сделать?
← →
Виталий Панасенко (2005-05-30 10:23) [12]Какой из трех НД сортировать то нужно ?
← →
yk © (2005-05-30 10:31) [13]Итоговый например - тот в который идет результат join-ов двух других датасетов.
Но вопрос в том - как выбрать в датасет данные из других датасетов?
← →
-=XP=- © (2005-05-30 10:35) [14]Lookup поля
← →
yk © (2005-05-30 10:41) [15]
> Lookup поля
непоняла?
как lookup поля помогут мне запихнуть в датасет результат объединения НД двух других датасет?
← →
-=XP=- © (2005-05-30 10:51) [16]Через Lookup все что угодно запихнуть можно.
Lookup - программная реализация реляционной модели данных.
← →
yk © (2005-05-30 11:02) [17]
> Через Lookup все что угодно запихнуть можно.
> Lookup - программная реализация реляционной модели данных.
Я задумчиво чешу голову 8( (ничего не поняла)
А где про это можно почитать?
Кстати а можно задать order by
через фильтр датасет. Если да, то как или где можно почитать?
Судя по справке - вроде нельзя :(
← →
Anatoly Podgoretsky © (2005-05-30 11:07) [18]yk © (30.05.05 11:02) [17]
> Lookup - программная реализация реляционной модели данных.
Я задумчиво чешу голову 8( (ничего не поняла)
> Lookup - внешняя реализация реляционной модели данных.
← →
yk © (2005-05-30 11:13) [19]
> Anatoly Podgoretsky ©
От повторения шутка становиться понятнее (так любит повторять Хомячок)
Собственно вопрос в том: как выбрать из датасетов с помощью запроса?
← →
app © (2005-05-30 11:24) [20]Почему шутка, это просто более точная формулировка.
Запрос примерно такойSELECT * FROM LookupDataset WHERE "некоторое поле" = 1
← →
-=XP=- © (2005-05-30 11:24) [21]Кстати а можно задать order by через фильтр датасет
order by и filter - разные сущности.
"order" определяет порядок следования записей в НД.
"filter" определяет то, какие записи попадут в результирующий НД.
Как видим, одно не включает и не исключает другого.
Для сортировки НД обычно используются индексы.
← →
Anatoly Podgoretsky © (2005-05-30 11:25) [22]Забыл сменить учетную запись. Использование запроса благоприятно повлияеет на быстродействие и плюс удобства для пользователя.
← →
Anatoly Podgoretsky © (2005-05-30 11:26) [23]-=XP=- © (30.05.05 11:24) [21]
Для SQL? :-)
← →
-=XP=- © (2005-05-30 11:31) [24]Для SQL? :-)
Ну, автор несколько путает, или смешивает понятия методов TDataSet (Filter, IndexFields) и параметров SQL (Where, Order By). Я вот не знаю, разбираться с этим вопросом, или автор сам разберется?
Классика: "Не опускайтесь до уровня вопрошающего, а подымайте его до требуемого уровня".
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c