|
29.03.2005, 12:57 | #1 |
Участник
|
Доступ к Navision Attain Database через C/ODBC из ASP.NET приложения
Игорь Кудряшов В 2002 году компания Navision Software была куплена корпорацией Microsoft. И теперь продукты Navision поддерживаются и разрабатывается Microsoft Business Solutions вместе с другими приложениями, такими как Microsoft Great Plains, Solomon, Microsoft Retail Management System и Microsoft CRM. Navision Attain имеет чрезвычайно сильные позиции не рынке среднего бизнеса в России, Европе и США, к тому же плюс Navision Attain включает превосходный модуль управления производством (Manufacturing Solution). Наша цель помочь отделам информационных технологий поддерживать и настраивать Navision используя свои внутренние ресурсы. Темой данной статьи является демонстрация возможности доступа к данным Navision Attain с помощью ASP.NET приложения через интерфейс C/ODBC. Целью наших действий будет являться создание страницы доступа к данным Navision Customers. Итак, приступим: 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. Далее нам необходимо создать небольшую хранимую процедуру для выборки по продажам. Текст процедуры приведен ниже: SET ANSI_NULLS ON SET ANSI_WARNINGS ON GO CREATE PROCEDURE NavisionCustomers AS DBCC TRACEON(8765) SELECT No_, Name, Address, City, Contact FROM OPENQUERY(NAVISION, 'SELECT * FROM Customer') RETURN Поясним некоторые моменты. Директива 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 открывает связанный сервер и передает ему запрос на выполнение, возвращая после этого выбранные данные. Необходимым условием для создания хранимой процедуры является задание директив ANSI_NULLS и ANSI_WARNINGS – они позволяют использовать в хранимых процедурах выполнение гетерогенных запросов. Проверить корректность работы процедуры можно дав команду в MS SQL Query Analizer – EXEC NavisionCustomers 5. Теперь приступим к собственно созданию ASP.NET приложения. Для разработки воспользуемся свободно распространяемой RAD средой ASP.NET WebMatrix. Ознакомиться с ней и загрузить ее можно по адресу http://asp.net/webmatrix . Перед ее установкой необходимо иметь установленный .NET SDK 1.1 6. Запустив WebMatrix, выберем создание Data Pages -> Editable Data Grid в окне визарда. Предлагаемые параметры оставим по умолчанию. В появившейся созданной странице доступа изменим заголовок на Navision Attain Customers, для таблицы доступа установим стиль Verdana и необходимый размер шрифта. Далее, расположим на странице компонент SqlDataSourceControl и настроим его – Connection String зададим как server='(local)'; database='Alba';trusted_connection=true (заменив адрес сервера и имя базы на актуальные значения), а SelectCommand – как EXEC NavisionCustomers 7. Для нашей Data Grid, которая будет отображать покупателей, зададим значение свойства DataSource как SqlDataSourceControl1, а DatKeyField – как No_ 8. Далее, переключаемся в режим редактирования кода и проводим следующие замены: • В методе DataGrid_Delete исправляем запрос для удаления покупателя на необходимый нам • Исправляем метод DataGrid_Delete исходя из используемых нами полей 9. Запустим созданное приложение и проверим его функционирование на корректность. Это все! Желаем вам удачи в настройке 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, служащей клиентам в городах Москва, Петербург, Екатеринбург, Казань, Ростов и обслуживающей всю Российскую Федерацию. |
|