Страница 2 из 4
Re: Динамическое формирование sql-запроса
Добавлено: 12 дек 2008, 12:30
gali
2юрий
а это выход
просто как-то техподдержка страшно предостерегла меня от попыток напрямую обновлять данные. Я человек впечатлительный, поэтому задушила саму мысль на корню. Но, созданием своей таблички, я вряд ли нанесу большой урон.
спасибо
гениальное все просто
Re: Динамическое формирование sql-запроса
Добавлено: 12 дек 2008, 12:33
Александр
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
Юрий
Если речь идет о пользовательском отчете, то я нашел хитрый ход!

Может кому еще пригодится.
Зная что лоция не закрывает соединение с базой можно смело использовать
временные таблицы но не забывать их чистить!
И так процесс Создаем первый отчет, который будет производить разные действия,
ставим в параметрах "Пользовательский" затем переходим в вкладку отчет, там загорается надпись
"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 запрос":
Затем нажимаем кнопку "SQL" и разрисовываем этот отчет.
Затем возвращаемся в первый отчет становимся на вкладку "Свойства" и выбираем наш второй отчет
в поле "Связанный отчет" Сохраняем и запускаем.
Получаем наш хитрый отчет с временной таблицей!
P.S.:
Надо быть предельно внимательным при написании скрипта, потому что на этапе проверки он
выполняется. Поэтому нужно создать скрипт отдельно, например в квери аналайзере, а затем уже переносить
в отчет.
Интересно узнать Ваше мнение об этом?

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
нет, не обратил.. то ли просто не понял, о чем речь (реально не понял, кстати), то ли не понял, как это может помочь решить мою задачу...