Проблема с параметрами запросов

Обсуждение Stimulsoft Reports.NET
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

По ошибке с параметрами.

Тестирую на Windows XP SP3 Eng. NET Framework 3.5 SP1.
Все делал на своей рабочей машине + еще две машины + еще две виртуальные.
ОС везде одинаковая.
ODP 11.1.06.21 и 11.1.07.20
Stimulsoft Reports.Net 2009.2.500 и 2009.3.511
У себя на машине чистил ГАК, переустанавливал версию Stimulsoft Reports.Net.
На все машинки кроме моей копировал папку \Stimulsoft Reports.Net 2009.2\Bin и запускал Browser.exe или Designer.exe.

Результат одинаковый. Ошибка та же.

PS. Не понял почему, но на чисто установленной WinXP SP3 + NET Framework 3.5 SP1 на виртуалке отсутствует библиотека "adodb.dll". Без нее не поднимается окно параметров OleDb соединения. Пришлось копировать файл отдельно.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

Обратил внимание, что работает одинаково как при наличии файла Stimulsoft.Report.OracleClient.dll так и без него.
Сейчас я экспериментирую исключительно с вашими программами, которые идут в комплекте.

В инструкции по установке Oracle Database Pack написано следующее:
To attach the file to the Designer.exe just put the file assembly into the same
directory where the Designer.exe is located. Besides you should provide access
to the assembly of the provider of the database.
Я так и делаю. Файл лежит вместе с программами в одной папке.
Как понять, используется ли Oracle Database Pack?
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

В качестве клиентской части я использую
Oracle Data Access Components (ODAC)
он же ODP.NET (Oracle Data Provider for .Net)
Я использовал версии 11.1.06.21 и 11.1.07.20 в составе которых идет Oracle Instant Client 11.1.0.6.0 и Oracle Instant Client 11.1.0.7.0 соответственно.

Может проблема именно с версией клиента?
Какой Вы используете?
Я попробую поставить у себя и проверить.

Какой провайдер Вы используете при создании отчета?
Oracle Provider for OLEDB или Microsoft OLEDB Provider for Oracle?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Проблема с параметрами запросов

Сообщение Edward »

Здравствуйте,

Спасибо за такой подробный анализ, мы обязательно докопаемся до сути проблемы и найдем решение.
В качестве клиентской части я использую
Oracle Data Access Components (ODAC)
он же ODP.NET (Oracle Data Provider for .Net)
Я использовал версии 11.1.06.21 и 11.1.07.20 в составе которых идет Oracle Instant Client 11.1.0.6.0 и Oracle Instant Client 11.1.0.7.0 соответственно.
Мы не использовали эти версии клиента, начинаем их тестировать.
Может проблема именно с версией клиента?
Какой Вы используете?
Я попробую поставить у себя и проверить.

Какой провайдер Вы используете при создании отчета?
Oracle Provider for OLEDB или Microsoft OLEDB Provider for Oracle?
Мы используем стандартные провайдеры.
Работает и Oracle Provider for OLEDB и Microsoft OLEDB Provider for Oracle.

В отличии используемых провайдеров y нас с Вами наверное и кроется проблема.

Спасибо.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

Похоже, что проблема действительно в версиях Oracle Client или ODP.NET.

Скажите, какие версии Вы используете?
Если у Вас все работает, я хочу проверить у себя.

И второй вопрос.
Работают ли именованные параметры в запросах через соединение типа "Microsoft OLEDB Provider for Oracle"?
Если да, то какой синтаксис Вы используете?
У меня не получается.
Пробовал следующие варианты:
запрос:
select * from dual where :a = 1
параметр: "a", ":a", "@a" (без кавычек, конечно)
Всегда ошибка: ORA-01008: not all variables bound
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Проблема с параметрами запросов

Сообщение Edward »

Мы используем стандартные провайдеры.

Oracle Provider for OLEDB (видимо он ставится с Oracle 10g)
и
Microsoft OLEDB Provider for Oracle

В случае с Microsoft OLEDB Provider for Oracle работали только неименованные параметры:

?

Вот ссылка, где пример их использования:

http://www.stimulsoft.com/livedemos/Rep ... ers_2.html

и
http://forum.stimulsoft.com/Default.aspx?g=posts&t=504

Спасибо.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

Уточните, пожалуйста, версию.
Если смотреть здесь:
http://www.oracle.com/technology/softwa ... index.html
то там есть такие варианты для 10g:
1) Oracle 10g ODAC 10.1.0.4.0
-Oracle Data Provider for .NET 10.1.0.4.0
2) Oracle Developer Tools for Visual Studio .NET with Oracle 10g Release 2 ODAC 10.2.0.2.21
-Oracle Data Provider for .NET 1.x 10.2.0.2.20
-Oracle Data Provider for .NET 2.0 10.2.0.2.20

Похоже, вариант 1 только под Net 1.x.
Во втором варианте есть две версии. Для .NET 1.x и .NET 2.0.

И скажите версию библиотеки Oracle.DataAccess.dll в GAC.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Проблема с параметрами запросов

Сообщение Edward »

Здравствуйте,

Версия библиотеки в GAC 10.2.0.100.

Provider стандартный который шел с Oracle 10g похоже предыдущая версия.

Спасибо.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

Проверил
- Oracle 10g Release 2 ODAC (Oracle Data Provider for .NET 2.0 10.2.0.2.20)
- Oracle 10g ODAC (Oracle Data Provider for .NET 10.1.0.4.0)

При использовании соединения Oracle Provider for OLEDB вообще запросы с параметрами не работают.
Даже с одним. Ошибка та же.
fantomus
Сообщения: 215
Зарегистрирован: 22 апр 2009, 06:41
Откуда: Kyiv, Ukraine

Проблема с параметрами запросов

Сообщение fantomus »

Все. Разобрался.

1. Ваши программы Browser и Designer не умеют использовать Stimulsoft.Report.OracleClient.dll из Oracle Database Pack, хотя в инструкции написано следующее:
To attach the file to the Designer.exe just put the file assembly into the same
directory where the Designer.exe is located. Besides you should provide access
to the assembly of the provider of the database.
Это меня и сбило с пути истинного :).
Или уберите этот абзац, или исправьте программы (желательно обе).

2. Если в свой проект добавить
StiConfig.Services.Add(new Stimulsoft.Report.Dictionary.StiOracleAdapterService());
StiConfig.Services.Add(new Stimulsoft.Report.Dictionary.StiOracleDatabase());
то в программе при открытии дизайнера есть новый тип соединения "Oracle соединение" (как и должно быть!).
Но, при создании такого соединения в окне "Новое Oracle соединение" нет кнопки "Построить..." и строку соединения приходится заполнять вручную.
Например так:
User ID=user1;Password=1234;Data Source=srv1
И все правильно работает с параметрами!
Подскажите почему нет кнопки, а то вводить строку вручную не удобно.

3. Я скомпилировал Stimulsoft.Report.OracleClient.dll под ODP.NET.
Нужно только заменить using System.Data.OracleClient на using Oracle.DataAccess.Client и OracleType на OracleDbType.
Это на первый взгляд. Может есть другие нюансы, но я сильно не тестил. Простые запросы с параметрами работают нормально.
Вообще то я бы создал отдельный коннектор для ODP.NET с новым именем.
Типа Stimulsoft.Report.OracleClientODP.dll.
И типы с новыми именами: StiOracleODPAdapterService, StiOracleODPDatabase.
В этом случае можно было бы сознательно подключать оба провайдера (от MS и от Oracle).
Но тут Вам решать.

Спасибо!
Ответить