Показать сообщение отдельно
Старый 29.03.2005, 12:54   #1  
Ronix is offline
Ronix
Участник
 
8 / 10 (1) +
Регистрация: 29.03.2005
Navision Attain C/ODBC и Crystal Report

Игорь Кудряшов

Microsoft Business Solutions Navision является основным ERP пакетом для Европейского, Бразильского рынков плюс он служит вертикальным сегментам рынка США, таким как мелкое и среднее производство, POS, CRM. Как показывает наш опыт – внедрение Navision требует гораздо больше настройки в сравнении с другим решением от Microsoft Business Solutions, например Microsoft Great Plains. Наша цель – популяризация продуктов Microsoft Business Solutions, показать вам возможности настройки Navision под ваши конкретные нужды своими собственными силами, без привлечения внешних консультантов.

Темой этой статьи является работа с C/SIDE Navision Attain Databases через интерфейс C/ODBC, в частности, создание Linked Server в среде MS SQL Server 2000 и генерация отчета по продажам в Crystal Reports 10. Давайте начнем:
1. Для нашей работы мы используем Navision Attain 3.6 в составе Navision Database Server, Navision Application Server и Navision Client. Данные компоненты установлены на Windows XP. Для обеспечения работы через C/ODBC интерфейс, необходимо установить соответствующий компонент с дистрибутивного диска Navision Attain.
2. Создадим ODBC DSN для доступа к нашим Navision данным. Для этого выберем Start -> Control Panel -> Administrative Tools -> Data Sources (ODBC). Затем выбираем вкладку System DSN и нажимаем кнопку Add. Мы будем использовать C/ODBC 32-bit драйвер для доступа к данным. Зададим Data Source Name как Navision, Connection оставим Local. В качестве базы данных (кнопка Database) выберем \Program Files\Navision Attain\Client\database.fdb (демонстрационная база данных). Затем нажмем на кнопке Company – единственной доступной компанией для демонстрационной базы является CRONUS. Ее и будем использовать. Важным условием для корректной работы с C/SIDE базами данных является корректное выставление опций для C/ODBC соединения. Нажмем кнопку Options и посмотрим на доступные опции – нас будет интересовать параметр Identifiers – он определяет вид идентификаторов, которые будут переданы клиентской программе. Для корректной работы MS SQL Server 2000 с C/ODBC источником мы будем использовать тип “a-z,A-Z,0-9,_”. На этом создание источника данных завершено. Приступим к организации Linked Server
3. Откроем SQL Server Enterprise Manager. Откройте дерево сервера, который вы собираетесь использовать, в нем выберите пункт Security и подпункт Linked Servers. Правой кнопкой в контекстном меню выберите New Linked Server. В появившемся диалоговом окне, в меню Provider Name выберем Microsoft OLE DB Provider for ODBC Drivers. Пусть наш Linked Server называется NAVISION. В строке Data Source введем имя ODBC источника – у нас он назывался также NAVISION. Linked Server готов! Выберем в нем список таблиц и увидим данные из баз Navision Attain.
4. Далее нам необходимо создать небольшую хранимую процедуру для выборки по продажам. Текст процедуры приведен ниже:
CREATE PROCEDURE NavisionSalesReport AS

DBCC TRACEON(8765)
SELECT * FROM OPENQUERY(NAVISION, 'SELECT * FROM Sales_Line sls, Customer cust WHERE sls.Sell_to_Customer_No_ = cust.No_')

RETURN
GO

Поясним некоторые моменты. Директива TRACEON(8765) позволяет откорректировать работу с данными переменной длины, возвращаемыми C/ODBC драйвером. Без нее мы не сможем выбирать поля из таблиц Navision – мы будем получать ошибки типа:

OLE DB error trace [Non-interface error: Unexpected data length returned for the column: ProviderName='MSDASQL', TableName='[MSDASQL]', ColumnName='Ship_to_Filter', ExpectedLength='250', ReturnedLength='1'].
Server: Msg 7347, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' returned an unexpected data length for the fixed-length column '[MSDASQL].Ship_to_Filter'. The expected data length is 250, while the returned data length is 1.

Директива OPENQUERY открывает связанный сервер и передает ему запрос на выполнение, возвращая после этого выбранные данные. Проверить корректность работы процедуры можно дав команду в MS SQL Query Analizer – EXEC NavisionSalesReport
5. Далее, запускаем Crystal Reports, используем стандартный Wizard, создаем новое OLE DB (ADO) соединение с нашим MS SQL 2000 Server и в списке выбираем хранимую процедуру NavisionSalesReport. В качестве полей отчета можно, например, воспользоваться полями Description, Quantity, Line_Amount и Discount_Amount. Группировку можно сделать по полю Name – наименование покупателя. Наш отчет готов !
Желаем вам удачи в настройке Navision и формировании отчетности и если вы хотите заручиться нашей помощью - мы всегда готовы вам помочь Позвоните нам в Москве (095) 918-3314, (095) 918-3111 , в США: 1-866-528-0577! help@albaspectrum.com

Игорь Кудряшов – ведущий специалист в Ronix Systems ( http://www.ronix.ru ), европейском подразделении Alba Spectrum Technologies ( http://www.albaspectrum.com ) – компании – партнере Microsoft Business Solutions, служащей клиентам в городах Москва, Петербург, Екатеринбург, Казань, Ростов и обслуживающей всю Российскую Федерацию.