Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Как выбрать из 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
1-1118749464
GEEK
2005-06-14 15:44
2005.07.11
В чем ошибка? Можно ли сравнить две TPoint?


3-1117645602
Shuric
2005-06-01 21:06
2005.07.11
Oracle через ODBC


3-1117428662
yk
2005-05-30 08:51
2005.07.11
Как выбрать из DataSet то что мне нужно


14-1118157101
D-S@nt
2005-06-07 19:11
2005.07.11
как раскрыть скобки?


1-1119446600
Aleksandr.
2005-06-22 17:23
2005.07.11
Как проверить вхождение числа в перечисляемый тип?