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

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

Добавлено: 02 ноя 2009, 10:15
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 соединения. Пришлось копировать файл отдельно.

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

Добавлено: 02 ноя 2009, 10:43
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?

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

Добавлено: 02 ноя 2009, 11:17
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?

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

Добавлено: 02 ноя 2009, 15:33
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 нас с Вами наверное и кроется проблема.

Спасибо.

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

Добавлено: 03 ноя 2009, 09:05
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

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

Добавлено: 03 ноя 2009, 11:08
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

Спасибо.

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

Добавлено: 03 ноя 2009, 11:21
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.

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

Добавлено: 03 ноя 2009, 12:35
Edward
Здравствуйте,

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

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

Спасибо.

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

Добавлено: 04 ноя 2009, 08:45
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 вообще запросы с параметрами не работают.
Даже с одним. Ошибка та же.

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

Добавлено: 04 ноя 2009, 09:33
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).
Но тут Вам решать.

Спасибо!