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