Динамическое формирование sql-запроса
Re: Динамическое формирование sql-запроса
ладно, я попробую, расскажу, что получилось
чуть позже
чуть позже
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
По просьбе gali я даю применение того что я описал выше с использованием аргументов отчета.
По сути порядок действий остается такой-же как и в предыдущем моем сообщении.
В первом отчете только добавляем аргумент, в котором будет реализована логика наполнения нашей
временной таблицы: Это значение по умолчанию для заглушки при проверке запроса
вы можете написать абсолютно любую команду, но что-бы она не отрабатывала с ошибкой.
далее код запроса во в кладке "SQL запрос":
Придерживаться необходимо именно такой последовательности.
Первая и последняя строка - усыпление бдительности проверки.
drop table и create table обязательно делать, что-бы подчиненный отчет увидел временную
таблицу. - наш аргумент в котором мы реализуем заполнение нашей временной таблицы.
Теперь пару комментариев по созданию отчетов. Так как мы используем временную таблицу, то при
закрытии Лоции она исчезнет. Поэтому:
1. При создании отчета сначала создаем первый отчет и при проверке скрипта идет его запуск
что приводит к созданию временной таблицы, после этого мы можем заниматься вторым отчетом.
2. Если нам нужно поправить второй отчет (внешний вид, колонки), но мы еще не запускали его
после запуска Лоции (временная таблица отсутствует). Надо либо зайти в скрипт первого отчета,
что-бы он запустил скрипт, либо просто его запустить и после этого приступать к наведению "красоты".
Временные таблицы должны иметь уникальное имя для каждого конкретного отчета, так как после создания
временной таблицы она становится доступной для всех отчетов в этом экземпляре запущенной Лоции.
Вопросы?
По сути порядок действий остается такой-же как и в предыдущем моем сообщении.
В первом отчете только добавляем аргумент, в котором будет реализована логика наполнения нашей
временной таблицы:
Код: Выделить всё
'insert into #tmp (str) values ('sss')'
вы можете написать абсолютно любую команду, но что-бы она не отрабатывала с ошибкой.
далее код запроса во в кладке "SQL запрос":
Код: Выделить всё
select * from LSDBO.our_dummy
drop table #tmp
create table #tmp (str char(200))
exec (:zapros)
select * from LSDBO.our_dummy
Первая и последняя строка - усыпление бдительности проверки.
drop table и create table обязательно делать, что-бы подчиненный отчет увидел временную
таблицу.
Код: Выделить всё
:zapros
Теперь пару комментариев по созданию отчетов. Так как мы используем временную таблицу, то при
закрытии Лоции она исчезнет. Поэтому:
1. При создании отчета сначала создаем первый отчет и при проверке скрипта идет его запуск
что приводит к созданию временной таблицы, после этого мы можем заниматься вторым отчетом.
2. Если нам нужно поправить второй отчет (внешний вид, колонки), но мы еще не запускали его
после запуска Лоции (временная таблица отсутствует). Надо либо зайти в скрипт первого отчета,
что-бы он запустил скрипт, либо просто его запустить и после этого приступать к наведению "красоты".
Временные таблицы должны иметь уникальное имя для каждого конкретного отчета, так как после создания
временной таблицы она становится доступной для всех отчетов в этом экземпляре запущенной Лоции.
Вопросы?
Re: Динамическое формирование sql-запроса
у меня не получилось
запрос, как и раньше, не отрабатывает
вот это: exec (:zapros)
пустой отчет
смотрю аргумент - zapros - все нормально.
Сам запрос проверила в Management Studio - работает
запрос, как и раньше, не отрабатывает
вот это: exec (:zapros)
пустой отчет
смотрю аргумент - zapros - все нормально.
Сам запрос проверила в Management Studio - работает
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
Пустой отчет первый или пустой отчет второй?
Значение по умолчанию в аргумент добавили или оставили пустым?
Связанный отчет сделали?
Значение по умолчанию в аргумент добавили или оставили пустым?
Связанный отчет сделали?
Re: Динамическое формирование sql-запроса
да, если в SQL прописать insert into ... что-нибудь
в отчете появляется это самое что-нибудь
в отчете появляется это самое что-нибудь
Re: Динамическое формирование sql-запроса
первый отчет я не настраивала (внешний вид)Юрий писал(а):Пустой отчет первый или пустой отчет второй?
Значение по умолчанию в аргумент добавили или оставили пустым?
Связанный отчет сделали?
значение по умолчанию ''
в первом отметила "связанный", выбрала второй и там еще какой-то параметр, пробовала и с одним и с другим
Re: Динамическое формирование sql-запроса
запускаю из действия первый отчет, вижу заголовок от первого, а форма отчета из второго - шапка и больше ничего
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
У меня была проблема с отображением
Я поменял тип поля во временной таблице и оно стало отображаться.
Значение по умолчанию обязательно я думаю, надо что-бы во временной таблице
уже была хотя бы одна строка данных. Иначе второй отчет по временной таблице криво генерится.
Но это мои предположения.
Я прикладываю скриншоты моих отчетов.
http://docs.google.com/Doc?id=dd9twnzr_1dc84qbc5
Я поменял тип поля во временной таблице и оно стало отображаться.
Значение по умолчанию обязательно я думаю, надо что-бы во временной таблице
уже была хотя бы одна строка данных. Иначе второй отчет по временной таблице криво генерится.
Но это мои предположения.
Я прикладываю скриншоты моих отчетов.
http://docs.google.com/Doc?id=dd9twnzr_1dc84qbc5
Re: Динамическое формирование sql-запроса
спасибо огромное
у меня почти то же самое
поставила в значение по умолчанию 'insert into #tmp_p (autor, who) values ('я', 'он')' - ругается на синтаксис.
Поменяла: 'insert into #tmp_p (autor, who) values (~'я~', ~'он~')'
прошло, и отобразилось в отчете. Но при следующем входе в SQL и сохранении ругается на строку по умолчанию
Подозреваю, что в запросе, который реально передаю через параметр тоже не проходит синтаксис
у меня почти то же самое
поставила в значение по умолчанию 'insert into #tmp_p (autor, who) values ('я', 'он')' - ругается на синтаксис.
Поменяла: 'insert into #tmp_p (autor, who) values (~'я~', ~'он~')'
прошло, и отобразилось в отчете. Но при следующем входе в SQL и сохранении ругается на строку по умолчанию
Подозреваю, что в запросе, который реально передаю через параметр тоже не проходит синтаксис
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
Тут как говорится надо поэкспериментировать... 

Re: Динамическое формирование sql-запроса
все равно не получается
после передачи в качестве параметра запроса: select ... into Into #tmp_p from ...
в таблицу ничего не попадает. Причем, запрос упростила до примитива (проверила в SQL Server Management Studio- работает).
Что примечательно, когда я билась со значением по умолчанию для параметра, прошел вариант с двойными кавычками для всего значения:
"insert into #tmp_p (id, autor, who, what) values(1, 'я', 'он', 'вставка по умолчанию')"
с запросом этот номер не прошел
после передачи в качестве параметра запроса: select ... into Into #tmp_p from ...
в таблицу ничего не попадает. Причем, запрос упростила до примитива (проверила в SQL Server Management Studio- работает).
Что примечательно, когда я билась со значением по умолчанию для параметра, прошел вариант с двойными кавычками для всего значения:
"insert into #tmp_p (id, autor, who, what) values(1, 'я', 'он', 'вставка по умолчанию')"
с запросом этот номер не прошел
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
Нельзя делать select ... into Into #tmp_p from ...
Эта команда пытается создать временную таблицу, а она у нас есть
ошибка просто подавляется системой и ничего не происходит.
Можно заполнять только insert into #tmp_p (.....) select .... from .....
Эта команда пытается создать временную таблицу, а она у нас есть
ошибка просто подавляется системой и ничего не происходит.
Можно заполнять только insert into #tmp_p (.....) select .... from .....
Re: Динамическое формирование sql-запроса
я пробовала закомментарить craete перед exec - результат такой же.
спасибо, попробую так
спасибо, попробую так
Re: Динамическое формирование sql-запроса
оказывается собака вот где порылась: я выбирала id и пыталась затолкать его в поле, типа int
поменяла тип и изменила имя столбца
ВСЕ ЗАРАБОТАЛО!
это РЕАЛЬНО работает!
Юрий, Вы гений!
спасибо
поменяла тип и изменила имя столбца
ВСЕ ЗАРАБОТАЛО!
это РЕАЛЬНО работает!
Юрий, Вы гений!
спасибо
-
- Активный участник
- Сообщения: 239
- Зарегистрирован: 13 янв 2005, 14:30
- Используемое ПО: Lotsia PDM PLUS LT
- Откуда: Украина, Донецк
- Контактная информация:
Re: Динамическое формирование sql-запроса
Та не за что, не за что...
Обращайтесь если что...



Обращайтесь если что...

