ADP проект и запрос с параметрами

Andrey Sk
Дата: 01.06.2004 10:31:13
Была база mdb и в ней жил сложный запрос, имеющий в источниках другие не менее простые запросы. Все они обращались к полям формы, в которых задавались даты начала и конца оцениваемого периода. Главный запрос был источником данных для соответствующего отчета за период.
Переезжаю на MSSQL 7 и проект adp. Вопрос - как быть теперь? Запросы переписал на вьюшки, но пока там вместо ссылок на поля форм стоят жесто забитые даты. Какую технологию можно использовать для динамического задания этих дат? Причем ссылки на них в запросах есть не только в разделах WHERE, но и в разделе SELECT, т.е. ServerFilter не подходит. Запрос с параметрами тоже вроде не подходит, так как параметры есть не только у главного запроса, но и у вложенных и источников. Получается, что выход в динамическом формировании запроса из строк sql в коде, но как быть с производительностью в этом случае? Такие запросы ведь не откомпилированы сервером заранее и выполняются медленнее, чем сохраненные на сервере. Или формировать временные таблицы с результатами промежуточных запросов и главный запрос основывать на них? В общем только раздумья - помогите советом, наверняка я знаю не все технологии решения такой проблемы.
paparome
Дата: 01.06.2004 10:34:39
автор
Какую технологию можно использовать для динамического задания этих дат?

UDF ?

Дочитал до конца :)
Однозначно UDF - ну или ХП :)
АлексейК
Дата: 01.06.2004 10:36:44
во первых большая ошибка в выборе сервера

пока не поздно ставь sql 2000. (отдельная тема, просто поверь так надо)

кстати в случае с sql 2000 проблема с предкомпиляцией динамического sql тоже решается - в 2000 есть соответствующий механизм
paparome
Дата: 01.06.2004 10:39:22
2 АлексейК
Зачем человеку советовать динамику, если (ИМХО) можно и без нее - проблем с правами будет меньше :) (Опять же ИМХО)
paparome
Дата: 01.06.2004 10:39:55
Да - а про MSSQL 2000 полностью согласен :)
Andrey Sk
Дата: 01.06.2004 10:42:10
автор
пока не поздно ставь sql 2000. (отдельная тема, просто поверь так надо)

нельзя, уже поставлен 7.0 и не только моя программа его использует, контора большая.
автор
UDF ?

Дочитал до конца :)
Однозначно UDF - ну или ХП :)

В 7.0 по-моему нет UDF? Или я не прав?

Неужели такая неразрешимая проблема для mssql 7.0????
paparome
Дата: 01.06.2004 10:43:57
автор
В 7.0 по-моему нет UDF? Или я не прав?

Не знаю, врать не буду - хотя странно :(
Но уж ХП-то, там точно есть :)
АлексейК
Дата: 01.06.2004 10:59:16
автор
нельзя, уже поставлен 7.0 и не только моя программа его использует, контора большая.


это неверное мнение - ставь на тот же комп дополнительный ИНСТАНС SQL2000

будет на одной машинке крутиться и 7 и (можно несколько инстансов SQL2000 )

сможешь пользоваться и UDF и каскадными удалениями и работает шустрее

а в строке коннекта вместо сервера указываешь

servername - это к семерке
servername/instancename - это к 2000 инстансу

в запросах:
Select * from AnotgherServerName.AnotgherBaseName.Dbo.TABLE
Andrey Sk
Дата: 01.06.2004 11:30:55
автор
Не знаю, врать не буду - хотя странно :(
Но уж ХП-то, там точно есть :)

папаром - подскажи чем мне помогут тут хп? У меня есть главный запрос
SELECT .... FROM view1 INNER JOIN view2 ON ...
Есть эти самые view1 и view2, обращающиеся в свою очередь к view3 и view4. В недрах всех этих view есть ссылки на DateBegin и DateEnd и не по одному разу. Не врублюсь как тут хп прикрутить? Брось примерчик, плиз.
автор
это неверное мнение - ставь на тот же комп дополнительный ИНСТАНС SQL2000

Алексей, спасибо за подсказку, обсужу это с админом mssql, но вопрос это в первую очередь организационный и в большой конторе решается ой как не быстро.
paparome
Дата: 01.06.2004 11:40:34
Ну - замени все view1(2,3,4) на ХП

И пользуй результаты ХП3 в ХП1 через временную таблицу (Insert Into #t Exec ХП3 @Dbeg, @DEnd)

Да - гемор, а что делать - если нет UDF?

Или Insert Into ... Exec ... в семерке тоже нет?