Страница 2 из 4

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 12:30
gali
2юрий
а это выход
просто как-то техподдержка страшно предостерегла меня от попыток напрямую обновлять данные. Я человек впечатлительный, поэтому задушила саму мысль на корню. Но, созданием своей таблички, я вряд ли нанесу большой урон.
спасибо
гениальное все просто

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 12:33
Александр
остановитесь! :wink: :wink: :wink: и подумайте еще раз - нужно ли засорять базу своими структурами :wink: :wink: :wink: напугал???
лучше все же найти другой подход :wink: :wink: :wink:

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 12:36
Юрий
Кто говорит о постоянных таблицах? :)
Временные таблицы - это таблицы типа #имя.
Они существуют только для конкретного сеанса подключения
к базе данных и если сеанс закрывается таблица автоматически уничтожается.
Тесть никакого засорения базы.

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 12:57
gali
здОрово! пойду почитаю про временные таблицы

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 13:08
gali
[quote="Юрий"]Временные таблицы - это таблицы типа #имя.
quote]
а как же тогда имя таблицы подставить в запрос отчета? параметром? а съест ли?

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 15:03
Юрий
Если речь идет о пользовательском отчете, то я нашел хитрый ход! :)
Может кому еще пригодится. :wink:
Зная что лоция не закрывает соединение с базой можно смело использовать
временные таблицы но не забывать их чистить!

И так процесс Создаем первый отчет, который будет производить разные действия,
ставим в параметрах "Пользовательский" затем переходим в вкладку отчет, там загорается надпись
"SQL запрос", если нет нажимаем кнопку "SQL" в верху.
далее в этом окне пишем наши действия:

Код: Выделить всё

select * from LSDBO.our_dummy
create table #tmp2 (ii int)
delete #tmp2
insert into #tmp2 (ii) values (2)
insert into #tmp2 (ii) values (3)
select * from LSDBO.our_dummy
Первая и последняя строки нужны для "дурения" проверщика Лоции.
между ними можно производить любые действия по наполнению временной таблицы #tmp2
Далее нажимаем кнопку "SQL" и наш скрипт отрабатывает и у нас есть временная таблица.

Далее создаем другой отчет, который и будет производить отрисовку данных
Выставляем его в режим "Пользовательский", переходим на вкладку "Отчет"
И пишем в "SQL запрос":

Код: Выделить всё

select * from #tmp2
Затем нажимаем кнопку "SQL" и разрисовываем этот отчет.
Затем возвращаемся в первый отчет становимся на вкладку "Свойства" и выбираем наш второй отчет
в поле "Связанный отчет" Сохраняем и запускаем.
Получаем наш хитрый отчет с временной таблицей! :) :wink:

P.S.: Надо быть предельно внимательным при написании скрипта, потому что на этапе проверки он
выполняется. Поэтому нужно создать скрипт отдельно, например в квери аналайзере, а затем уже переносить
в отчет.

Интересно узнать Ваше мнение об этом? :wink:

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 15:41
gali
если это работает! тогда просто обалдеть!
надо пробовать
мне пару дней надо, чтобы закрыть текучку. потом обязательно проверю. мне кажется, это решение.
Юрий, спасибо - это не то слово
:)

Re: Динамическое формирование sql-запроса

Добавлено: 12 дек 2008, 21:52
Старик Крупский
Сейчас точно не вспомню. Может быть это вообще было в f_ExecSQLSelect. Хотя... В понедельник на работе попробую

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 10:37
Старик Крупский
Вот таким образом у меня все работает:

f_EmbeddedSQLSelect ( this , select1 + select2 , '' , 'string_arr' )
+ f_RetrieveForm ( this , '' , 'string_arr' )
+ f_FormDataToArray ( this , 'string_arr' )

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 10:44
gali
Старик Крупский, а это, пардон, в какое место? у меня возникла ассоциация с формами в workflow. хотя... возможно, виной понедельник

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 10:45
Anderyt
это уже мы начали говорить о докобороте?
select1 и select2 - это как раз куски запросов, да?
и что, можно в зависимости от значений каких то параметров включать и выключать определенные куски в итоговом запросе, так что ли?

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 16:51
Старик Крупский
to gali:
...и я попыталась втолкнуть часть запроса в параметр. Понимаю, глупо, но так нужно!
Это я к этому. Ну и ессно в формы докоборота

to Anderyt:
Ну да, вроде. Меня gali попросила вспомить, как из кусков запрос слепить, вот я и вспомнил. Теперь получается, что на твой вопрос положительный ответ.
Кстати, здесь сильно помогло то, что Лоция отключила проверку запросов в редакторе выражений. Раньше проверяли и что-то там не срасталось. Переменные на момент проверки были без значений и запрос определялся как ошибочный. Сейчас стало удобнее. Проверить запрос ведь можно и другими средствами.

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 17:02
Anderyt
хе-хе, ну это тоже очень хорошо, что в докобороте можно :-)
а у меня проблема была в отчетах.. есть отчеты для поиска каких-либо объектов с помощью запроса, и вот надо было при построении запроса учитывать, какие аргументы заданы..
я так понимаю, f_EmbeddedSQLSelect для отчетов не подойдет?..

Re: Динамическое формирование sql-запроса

Добавлено: 15 дек 2008, 17:12
gali
2Anderyt
а ты не обратил внимание на совет Юрия? Мне кажется, это выход. Я просто не могу сейчас попробовать, буквально еще день

Re: Динамическое формирование sql-запроса

Добавлено: 16 дек 2008, 09:47
Anderyt
нет, не обратил.. то ли просто не понял, о чем речь (реально не понял, кстати), то ли не понял, как это может помочь решить мою задачу...