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

Alba Spectrum Technologies
(095) 918-3314, (095) 918-3111,
help@albaspectrum.com
В
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.
Итак, приступим:
-
Для
нашей
работы
мы
используем Navision Attain 3.6
в
составе
Navision Database Server, Navision
Application Server и
Navision Client.
Данные компоненты установлены на
Windows
XP.
Для обеспечения работы через C/ODBC
интерфейс также необходимо установить соответствующий компонент с
дистрибутивного диска Navision
Attain.
-
Создадим
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
-
Откроем
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.
-
Далее нам необходимо создать
небольшую хранимую процедуру для выборки по продажам. Текст процедуры приведен
ниже:
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
-
Теперь приступим к собственно
созданию ASP.NET
приложения. Для разработки воспользуемся свободно распространяемой
RAD
средой ASP.NET
WebMatrix.
Ознакомиться с ней и загрузить ее можно по адресу
http://asp.net/webmatrix . Перед ее установкой необходимо иметь
установленный .NET SDK
1.1
-
Запустив
WebMatrix,
выберем
создание
Data Pages ->
Editable Data Grid
в окне
визарда.
Предлагаемые параметры
оставим по умолчанию. В появившейся созданной странице доступа изменим
заголовок на Navision
Attain
Customers,
для таблицы доступа установим стиль
Verdana и необходимый
размер шрифта. Далее, расположим на странице компонент
SqlDataSourceControl
и настроим его – Connection
String
зададим как server='(local)'; database='Alba';trusted_connection=true (заменив
адрес сервера и имя базы на актуальные значения), а
SelectCommand
– как EXEC
NavisionCustomers
-
Для нашей
Data
Grid,
которая будет отображать покупателей, зададим значение свойства
DataSource
как
SqlDataSourceControl1, а
DatKeyField
– как No_
-
Далее, переключаемся в режим
редактирования кода и проводим следующие замены:
-
В методе
DataGrid_Delete
исправляем запрос для удаления покупателя на необходимый нам
-
Исправляем метод
DataGrid_Delete
исходя из используемых нами полей
-
Запустим созданное приложение и
проверим его функционирование на корректность. Это все!
Желаем вам
удачи в настройке 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,
служащей клиентам в городах Москва, Петербург, Екатеринбург, Казань, Ростов и
обслуживающей всю Российскую Федерацию.

