![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли получить список полей запроса не выполняя оный? [D7, IB6.x]
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