![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
несколько запросов [D7, XP]
Armond © (2008-04-02 08:59:00)Добрый день !!! Подскажите как сделать !!! Сделал один запрос,т.е. выбрал нужные записи, потом если понадобится, то необходимо выполнить еще один запрос, но уже из того набора данных, который уже выбрали !!
Reindeer Moss Eater (2008-04-02 10:28:00) [61]Это даже не третично.
TDataSet
property Filter: string;
Kolan (2008-04-02 10:26:00) [62]> Использую MS SQL, компоненты ADO
Очень даже не вторично. Смотри свойство Filter.
Specifies the text of the current filter for a recordset.
Reindeer Moss Eater (2008-04-02 10:20:00) [63]нестандартное средство:
выполняем первый запрос, получаем датасет.
превращаем его в xml датапакет.
делаем по нему запрос икспасом, получаем список нодов.
трансформируем их в новый дата пакет и грузим в клиент датасет, получаем новый надор данных.
В общем чума. Дешевле и проще локальный фильтр, или вообще динамическая серверная фильтрация через клиентский грид (по типу грида в Ehlib)
ANB (2008-04-02 10:19:00) [64]
> Использую MS SQL, компоненты ADO
Тады читай 13. Но примеров не дам, т.к. с мс скл не работаю.
ЗЫ. Хотя чисто принципиально ИШ прав. Из набора данныхсделать выборку еще раз стандартными средствами невозможно. Приведенный мной способ - лишь иммитация этого.
ANB (2008-04-02 10:16:00) [65]
> то есть не то что он хочет.
Именно то. :)
Иногдаприходится применять такой способ.
Классика - основной запрос довольно тяжел и доп условия совсем ломают план (да и на кажный чих замучаешься оптимизить). А к первой выборке юзеры хотят обратиться и так и эдак. Вобщем, почти олап получается :)
Armond (2008-04-02 10:16:00) [66]
> Компоненты - это вторично. Мы ничего не знаем про СУБД.
Использую MS SQL, компоненты ADO
Reindeer Moss Eater (2008-04-02 10:10:00) [67]Это то же самое как если у первому запросу добавить условие в where и повторно выполнить запрос на сервере.
то есть не то что он хочет.
ANB (2008-04-02 10:08:00) [68]Компоненты - это вторично. Мы ничего не знаем про СУБД.
> Стандартными средствами нельзя.
Мона и довольно тривиально.
1) под первый набор данных завести таблицу (мона временную).
2) insert into tmp_table1 select . . .
3) Показать первую выборку - select * from tmp_table1
4) Если понадобилось - сделать выборку из первой выборки
select * from tmp_table1 where . . .
Тока для такого извращения нужны серьезные основания.
Игорь Шевченко (2008-04-02 10:01:00) [69]
> Сделал один запрос,т.е. выбрал нужные записи, потом если
> понадобится, то необходимо выполнить еще один запрос, но
> уже из того набора данных, который уже выбрали
Стандартными средствами нельзя.
Kolan (2008-04-02 10:01:00) [70]Что за компоненты ты используешь?
Reindeer Moss Eater (2008-04-02 10:00:00) [71]Общий набор под сервером и он может выполнять запросы.
А выбранное уже у тебя и запросы над выбранным выполнять кроме тебя уже некому.
Armond (2008-04-02 09:50:00) [72]Ну можно фильтр, можно запросы, но надо чтобы не из общего набора данных выбиралось, а уже из выбранного
Kolan (2008-04-02 09:39:00) [73]
> [7] ANB (02.04.08 09:35)
Ну почему, может он хочет фильтр сделать
ANB (2008-04-02 09:35:00) [74]
> но уже из того набора данных, который уже выбрали !!
ИМХО : плохо продумано решение. Для клиент-серверных систем - совершенно неудачная задумка. Не имеет смысла выбирать сначала кучу, а потом уже из нее выбирать кусочек.
Sergey13 (2008-04-02 09:32:00) [75]> [4] Armond © (02.04.08 09:27)
Так как же я тебе что-то подскажу, если я НИЧЕГО не знаю о твоей проблеме?
Kolan (2008-04-02 09:28:00) [76]Тебе же ответили в [1]. Какие вопросы осталсь?
Armond (2008-04-02 09:27:00) [77]Вариантов нет, может подскажешь как грамотно и правильно справиться с такой задачкой ?
Sergey13 (2008-04-02 09:25:00) [78]> [2] Armond © (02.04.08 09:21)
Значит наверное неправильно пробовал. Или есть еще варианты?
Armond (2008-04-02 09:21:00) [79]
> Или фильтровать данные локально на клиенте.
Попробовал так, но он все равно берет весь набор данных
Sergey13 (2008-04-02 09:03:00) [80]Оформить первоначальный запрос в виде подзапроса.
Или фильтровать данные локально на клиенте.