Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.044 c
11-1098430854
Владимир Кладов
2004-10-22 11:40
2005.07.11
Fast Type Expert


3-1117201369
Lex_!
2005-05-27 17:42
2005.07.11
SQL - запрос с параметрами


1-1118563903
acsoft
2005-06-12 12:11
2005.07.11
Возможно ли считать свой собственный код?


3-1117703774
Леонид
2005-06-02 13:16
2005.07.11
Неполучается сделать update записи.


14-1118052395
Ozone
2005-06-06 14:06
2005.07.11
Файл ответов для MSI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский