Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание отчетов из postgres / 15 сообщений из 15, страница 1 из 1
21.01.2020, 16:14
    #39916868
Kapadastra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Приветствую всех, уже гуглил перегулил по этому прошу помощи.)))
Раньше работал с mssql и создавал отчеты в MS Report Builder. Сейчас в проекте используется СУБД postgresql. У меня получилось в Report Builder соединиться через драйвер ODBC с БД postresql, но использовать параметры в отчетах не получается. Сам запрос используемый в отчете ругается на параметр (запрос вида where поле=@start_date)
ошибка:
ERROR [42703] ERROR: column "start_date" does not exist;
No query has been executed with that handle
т.е. почему то ищет поле, а не воспринимает как параметр.

Я с данной СУБД сталкиваюсь первый раз, подскажите пожалуйста, дружит ли вообще postgresql с report builder или надо использовать другой генератор отчетов? Или может я не понимаю как использовать параметры(переменные) в postgres?
Заранее спасибо)
...
Рейтинг: 0 / 0
21.01.2020, 16:22
    #39916871
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Kapadastra,

может стоит попробовать :start_date или $1
или создать функция с параметром foo(start_date)
и вызывать функцию
...
Рейтинг: 0 / 0
21.01.2020, 16:22
    #39916872
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Не понятно при чем тут PostgreSQL, подстановкой параметров должно заниматься отчетное средство

"For Transact-SQL queries, different data sources support different syntax for parameters ... " ( C ) MSDN

как я понимаю, мало того, параметры в запросах не обязательно должны совпадать с параметрами отчета

p.s.
"нормальные" СУБД обычно : для параметров используют
...
Рейтинг: 0 / 0
21.01.2020, 17:06
    #39916888
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
By the way,
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/2c7ee3dc-1f46-4c18-95ae-6e594efecd10/cannot-use-parameter-on-postgres-query?forum=sqlreportingservices

Named Parameter like @MyParam can only be used with a .NET data provider. In SSRS in common OleDB data provider is used and here you have to use the question mark ? as placeholder for a Parameter


p.s. С продуктами MS не работал, желательно читать документацию
...
Рейтинг: 0 / 0
22.01.2020, 09:29
    #39917126
Kapadastra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Troglodit,

Пробовал использовать :start_date или $1 ругается.
С функцией конечно попробую, но просто думал что будет как в MSSQL там можно в самом dataset в запросе указать в условии where o.created_at between @start_date and @end_date. Тут такое не прокатывает.((
...
Рейтинг: 0 / 0
22.01.2020, 09:58
    #39917137
Kapadastra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Leonid Kudryavtsev,
"Не понятно при чем тут PostgreSQL, подстановкой параметров должно заниматься отчетное средство" и я так думал, но при указании в условии переменной @start_date в запросе, ругается только с postgres, c mssql работает такое условие с переменной
...
Рейтинг: 0 / 0
22.01.2020, 10:45
    #39917161
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Kapadastra,

Попробуйте установить параметр драйвера
UseServerSidePrepare = 0
...
Рейтинг: 0 / 0
22.01.2020, 10:49
    #39917163
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Kapadastra#22064162,

? в запросе пробывали?

а дальше, как я понимаю, ручками соединить параметры запроса с параметрами Report'а
...
Рейтинг: 0 / 0
22.01.2020, 11:00
    #39917168
Kapadastra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Leonid Kudryavtsev,

Только собрался выложить решение, как вы ответили)))
Нашел такую ссылку https://dba.stackovernet.com/ru/q/40188, все дело в ODBC не поддерживает он именные параметры, сделал where поле between ? and ? при этом каждый вопрос это переменная по порядку, как использовать одну переменную с двумя условиями, буду разбираться.
...
Рейтинг: 0 / 0
22.01.2020, 11:20
    #39917185
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Поиск по И-нет'у еще находит
https://www.npgsql.org/index.html

Опять таки, ни с чем из этого не работал
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.02.2022, 13:22
    #40134499
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Хех! А у меня похожая проблема, только с OLEDB.

Вызвать из отчёта функцию при ODBC подключении как раз получилось, именно благодаря этой теме (сплошные знаки вопроса в общем, жуть). Но оказалось, что ODBC весьма медленно работает при больших выборках. Поэтому решено было изучить как работает OLEDB.

И вот тут как раз загвоздка. Никак не могу найти какой синтаксис передачи параметров при вызовах процедур нужно использовать.

В результате вылезает:

автор** ERROR: Failed to parse statement: select *
from public."TestParameterGet" (TestString := @TestString, TestWord := @TestWord);

Как я только не пробовал. И "TestString := @TestString", и "TestString => @TestString", и просто перечисление параметров как у мс_сиквела (@TestString, @TestWord), и синтfксис ODBC.

А документацию найти тоже не могу. Поэтому прошу подсказать.
...
Рейтинг: 0 / 0
18.02.2022, 12:06
    #40135103
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Оказалось, что синтаксис вполне стандартный, хоть и убогий. Почти такой же как в ODBC.


авторselect *
from public.TestParameterGet(?,?,?);

Где знаки вопроса - это параметры формы.

Почему не такой же, а почти? Потому что ODBC умеет распознать явное определение типа данных, а OLEDB нет!

авторselect *
from public.TestParameterGet(?::date,?::text,?::int);

Так OLEDB не может!

И вишенкой на торте, что по умолчанию все параметры считаются текстом... Т.е. по факту вы не можете использовать ничего кроме строковых параметров. Что делает использование OLEDB невозможным на практике, потому что большинство отчётов имеет среди параметров хотя бы одну дату...


В общем и целом вывод такой: если у вас есть хотя бы малейшая возможность избежать использования связки SSRS + Postgres воспользуйтесь ею.
...
Рейтинг: 0 / 0
18.02.2022, 13:56
    #40135141
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
P.S. Так же ODBC не понимает кавычки в имени сущности!


т.е. сделать

авторselect *
from "MyFunction" (?, ?)

не получится. Со всеми вытекающими.
...
Рейтинг: 0 / 0
18.02.2022, 15:21
    #40135165
Misha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Кесарь
имеет среди параметров хотя бы одну дату...

что мешает принимать строковый параметр и в процедуре преобразовывать в дату?
...
Рейтинг: 0 / 0
21.02.2022, 19:42
    #40135722
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчетов из postgres
Misha111
Кесарь
имеет среди параметров хотя бы одну дату...

что мешает принимать строковый параметр и в процедуре преобразовывать в дату?


Технически ничего. Но ввод данных, форматируемых на стороне клиента, придуман не зря. Люди же будут косячить неизбежно.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание отчетов из postgres / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]