При создании отчета в Fast Report использую ADO подключение.
Но при добавлении фильтра в отчет возникает ошибка
"Объект TSObjectLibrary.ADODataset не поддерживает интерфейс IDBDataset"

Прошу помочь.

Нравится

7 комментариев

Евгения, по скриншоту видно, что Вы пытаетесь добавить поле из ADODataset во встроенное окно фильтрации отчета FastReport.
Ошибка возникает в результате того, что Filter Builder не может работать с ADODataset (так как к нему нельзя построить SQL запрос).

Наталия, спасибо за ответ.
Я поняла, что добавить фильтацию через Filter Builder к полю ADODataset с этом случае нельзя.

Из темы http://www.community.terrasoft.ua/forum/topic/6590 было создано собственное окно фильтации. Но в моем случае при запуске отчета с собственным окном фильтрации возникает ошибка :

"Невозможно редактировать сервис 'Offerings\General\Main Grid\fr_FastReport'. Объект TSObjectLibrary.ADODataset ({5119679C-DF62-4F33-ABD8-CD2BA96A64EA}) не поддерживает интерфейс IDBDataset ({B77D78C1-40FD-4A5A-9592-DC0A6072AA3B}) «Call Stack»"

Вопрос - Как же тогда сделать фильтрацию?!

Поскольку ADODataset возвращает уже готовые данные, фильтровать его для отчета можно одним из двух способов:
1. Создать в ADODataset набор параметров, в которые будут передаваться значения из окна фильтрации.
При нажатии на кнопку "Ок" заполнять параметры и открывать ADODataset:

var dsSource = Services.GetSingleItemByUSI('ads_Test');
SetParameterValue(dsSource.Parameters, 'pIndex', IndexValue);
dsSource.Open();

2. При нажатии на кнопку "Ок" получить экземпляр MemoryDataset, передать через атрибуты в MemoryDataset значения полей окна фильтрации и ADODataset.
В событии OnDatasetAfterOpen MemoryDataset открывать ADODataset, выполнять прохождение по всем его записям и в случае, если запись соответствует значению поля окна фильтрации, заполнять MemoryDataset. В отчете FastReport уже будет не ADODataset, а MemoryDataset.

Спасибо за ответ.
Наталия, прошу вас написать еще подробнее, если можете, то со скриншотами, пожалуйста.

Евгения, какой из способов описать подробнее?

Рассмотрим последовательно:
1. В теле функции обработки события нажатия на кнопку "Ок" окна фильтрации реализовать:

- считывание значений полей окна фильтрации:

var CashAccountID = edtCashAccount.Value;
var CurrencyID = edtCurrency.Value;

- получение экземпляра MemoryDataset:

var dsReport = frpMain.DatasetByUSI('mds_CashBreak');

- передача через атрибуты в MemoryDataset значения полей окна фильтрации:

dsReport.Attributes('CashAccountID') = CashAccountID;
dsReport.Attributes('CurrencyID') = CurrencyID;

2. У MemoryDataset следует создать обработчик события OnDatasetAfterOpen, в теле функции которого реализовать:

- считывание значений полей окна фильтрации:

var CashAccountID = Dataset.Attributes('CashAccountID');
var CurrencyID = Dataset.Attributes('CurrencyID');

- заполнение MemoryDataset, см. http://www.community.terrasoft.ua/forum/topic/5397

Показать все комментарии

Помогите, пожалуйста!

Поставила ODBC драйвер FB, при тестировании соединения не видит базу.

(драйвер отсюда - http://www.firebirdsql.org/en/odbc-driver/, ставила Firebird_ODBC_2.0.1.152_x64)

Думаю, что все дело в драйвере.

Что делать? Что посоветуете? В чем может быть проблема?
Помогите, пожалуйста.

Нравится

6 комментариев

Посмотрите тут все подробно описано

Здравствуйте.
На одной ли машине установлен FIreBird и драйвер? Какая ОС используется? Если это разные компьютеры, то какие ОС на каждой из них? FireBird установлен из дистрибутива Террасофт или сторонний? Какая версия Террасофт? Я устанавливал такой драйвер, правда на XP 32-bit - всё подключается. Ставил давно, сейчас точно не вспомню источник, из которого брал драйвер. Но это точно был не официальный сайт.
С уважением, Terrasoft Support Team.

Александр, FireBird установлен на сервере удаленно.
Драйвер устанавливаю на терминале сервера.
ОС - MS Windows Server 64
Террасофт - XRM+Service Desk 3.3.2.215

Здравствуйте.
Я пробовал на х64 - тоже не подключается. Хотя на х86 - подключается. Проблема нетривиальна и требует тестирования. Попробую проверить.
С уважением, Котенко Александр.

farshes, какие проблемы возникли с инструкцией которую я дал?
В пути к базе данных, попробуйте задать сетевой путь для доступа к файлу БД Firebird

"Котенко Александр" написал:Я пробовал на х64 - тоже не подключается. Хотя на х86 - подключается. Проблема нетривиальна и требует тестирования. Попробую проверить.
С уважением, Котенко Александр.

"Яворский Алексей" написал:Запускаем
Для x32 %windir%\system32\odbcad32.exe
( Панель управления\Все элементы панели управления\Администрирование\Источники данных (ODBC) )

Для x64 %windir%\SysWOW64\odbcad32.exe
Замечание для Windows 7 x64 принципиально запускать именно 32х битную версию утилиты работы с ODBC

Здравствуйте.
Нашел драйвер на http://www.ibprovider.com (правда триальный). Проверил. Всё работает.
С уважением, Котенко Александр.

Показать все комментарии

Возникла задача с помощью объекта ADODB.Connection подключиться к базе 1С и выполнить несколько запросов.
Все никак не получалось составить строку подключения к базе, которая работает под MS SQL 2005. Нашел решение вот здесь.

Метод довольно простой. Нужно создать текстовый файлик, поменять у него расширение с txt на udl.
Затем запустить его и у вас откроется следующее окно:
Выбор поставщика данных
В открывшемся окне на вкладке [Поставщик данных] нужно выбрать Microsoft OLE DB Provider for SQL Server.
На вкладке [Подключение] нужно заполнить имя сервера, способ входа на сервер и выбрать базу данных, к которой будет происходить подключение. Например:
Параметры подключения
Чтобы сохранился пароль в настройках, нужно отметить галочку "Разрешить сохранение пароля".

Удобство состоит в том, что сразу же можно проверить подключение с введенными настройками (кнопка [Проверить подключение]).

Чтобы получить итоговую строку подключения нужно сохранить настройки и открыть файл в текстовом редакторе. Вы увидите свою строку подключения. Например:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Password=supervisor;Persist Security Info=True;User ID=supervisor;Initial Catalog=TDC;Data Source=TERRASOFT\terrasoft

Нравится

Поделиться

0 комментариев
Показать все комментарии

Пролог
Записи в моём блоге буду разделять с помощью уточнений в теме... (Раздел : номер записи : тема записи в разделе)
Сегодня открываю раздел "Решения" (Решения : запись №1 : Подключение к MySQL из ADO)
В этом разделе я хотел бы публиковать решения, которые не были найдены мною на комьюнити, но жизнено необходимы для разработки.

Итак, поехали:
Первым таким решением стало подключение к базе MySQL из ADO сервисов Terrasoft.
Зачем это нужно?
Дело в том, что на комьюнити предлагается использовать Microsoft OLE DB Provider for SQL Server.
Но к сожаления у меня он напрочь отказался подключаться к базе MySQL, выпадая с сообщением о том что "Сервер базы данных не найден или нет прав доступа".

Решение:
Для начала убедитесь в том что вы создали пользователя с доступом к своей базе MySQL и разрешили ему доступ % с любого хоста или правильно указали хост с которого будет производится подключение. - Внешний IP адресс сервера на котором установлена база TSCRM. Детали можно уточнить у вашего хостинг-провайдера.
После чего скачайте и установите коннектор для базы MySQL: http://dev.mysql.com/downloads/

В результате мы получаем драйвер доступа к MySQL. Идем в Панель управления(Control Panel) -> Администрирование(Administrative tools) -> Источники данных ODBC(Data Sources). Открываем вкладку System DSN и жмем Add(Добавить). Там выбираем наш устанновленный коннектор и жмем ОК. В коннекторе указываем параметры подключения, т.е. название вашего подключения(DSN) - оно выбирается произвольно, хост с БД, порт(по умолчанию 3306), логин/пароль для доступа к серверу БД и, конечно, имя самой базы. Делаем Test connection и получаем долгожданное "Проверка подключения выполнена".

Эпилог:
Далее можно создать ADOConnection в Terrasoft CRM, выбрать поставщика данных Microsoft OLE DB Provider for ODBC Drivers. Нажать далее и на вкладке Подключение в поле "Имя источника данных" выбрать созданый вами источник данных. После чего дмём ОК и используем данное ADOConnection в ADODataset и ADOCommand.

Нравится

Поделиться

2 комментария

Недавно столкнулся с проблемой при настройке подключения для MySQL на Win7 x64.

Решение оказалось довольно простым – для Terrasoft CRM обязательно необходимо установить 32-битную версию ODBC драйвера (до этого стояла только 64-битная версия).

Сергей, спасибо большое, тоже месяц назад столкнулся с той же проблемой но забыл указать здесь.

Показать все комментарии