Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли получить список полей запроса не выполняя оный? [D7, IB6.x]


Страницы:   1 2

sohat ©   (2004-01-13 12:11:00) 

Мне нужно вытащить поля запроса, но при этом запрос не выполнять (вдруг он будет здоровый :))) или параметры еще чего доброго попросит ). Можно ли это сделать и как?


sohat   (2004-01-13 15:02:00) [21]

Табличка полей действительно имеется, но записи туда подставляются при настройки системы, как раз на основе того самого списка полей который я никак не могу получить.

по поводу второго - запросы довольно сложные, и анализировать их мне неохота, я думал можно получить список полей посредством TDataSet


Vlad   (2004-01-13 14:52:00) [22]

Во первых непонятно, если уже есть готовая табличка с описанием полей запроса, то почему нельзя список полей вытащить из этой таблицы ?
Во вторых, обрати внимание на Vlad © (13.01.04 13:12) [10]
в этом примере как раз с параметром.
Даже если секция where хранится отдельно в таблице, то ее нетрудно модифицировать на клиенте, добавив в конец " and 0=1"


sohat   (2004-01-13 14:44:00) [23]

Короче говоря все сходятся в том, что запрос все одно придется выполнить, предварительно видоизменив его, вписав секцию where.
А как быть если у книть запроса будут параметры?

Может ежели поясню задачку кто нить, что более дельное предложить.
Есть некая табличка с запросами, и табличка с описанием полей этого запроса (русская интерпритация поля, ширина поля в гриде, цвет, ....). При настройке приложения, после создания запроса, удовлетворяющего определенным нуждам, нужно описать поля данного запроса. Вот и возник вопрос, как получить список полей. Естественно, что запросы могут быть любыми, и секция where во многих из них может быть прописана. кроме того могут использоваться параметры.


Vemer   (2004-01-13 13:58:00) [24]

To Ega23
Она не только в Мускуле есть. Но так ты получишь не все данные... ТOP хорош, когда "золотую" десятку клиентов/товаров вывести надо...


Ega23   (2004-01-13 13:35:00) [25]

в MS SQL есть такая штука
Select top N* from ....


Vlad   (2004-01-13 13:12:00) [26]


> Desdechado © (13.01.04 13:03) [6]
> про and (1=0) - согласен, изяшный вариант, но не для всех
> запросов (особенно фраза "добавь в конце")
> если всякие having, order, join будут ...

что мешает написать что-то вроде:
select <поля>
from <таблицы>
where <условие связки> and :MyParameter = 0
group by...
order by...

Подставляй вместо :MyParameter или 0 или 1 в зависимости от желаемого результата


Vemer   (2004-01-13 13:11:00) [27]

Если ты боишся, что вывалится слишком длинный запрос - напиши ХП, которая будет возврщать Count строк в таком запросе, и на основе этого числа принимай решение...


Плохиш_   (2004-01-13 13:08:00) [28]

Можно ли получить список полей запроса не выполняя оный?

В обшем случае нет


Sandman25   (2004-01-13 13:06:00) [29]

фраза "добавь в конце" означала добавление в секцию where. Впрочем, это уже детали.


Desdechado   (2004-01-13 13:03:00) [30]

ну, * использовать, имхо, дурной тон
sum - отдельное поле, обзывай как хочешшь
as вполне можно обработать

парсер вовсе несложный выходит ;)

про and (1=0) - согласен, изяшный вариант, но не для всех запросов (особенно фраза "добавь в конце")
если всякие having, order, join будут ...


Reindeer Moss Eater   (2004-01-13 12:36:00) [31]

TDataSet.FieldDefs.Update


Sandman25   (2004-01-13 12:32:00) [32]

Добавьте в конце and (1=0) и запрос выполнится очень быстро :)


Vlad   (2004-01-13 12:31:00) [33]

select <нужные поля> from <нужные таблицы> where 1=0
выполнится мгновенно :-)
список полей будет в свойстве TDataSet.FieldList.


sohat   (2004-01-13 12:27:00) [34]

ага, со всеми *, as, sum() ... энтак можно свой sql сервер написать :)))


Desdechado   (2004-01-13 12:21:00) [35]

а запрос-то откуда берется?
это ж строка, вот и проверь все между SELECT и FROM


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо