Элемент управления data и объекты доступа к данным


Содержание

Элемент управления data и объекты доступа к данным

Введение в объект управления данными — Data Control

Само название этого объекта говорит о том, что предназначен он для работы с данными. С помощью Data Control можно быстро создавать простые приложения для работы с базами данных практически без написания программного кода. А используя этот элемент управления вместе с объектами доступа к данным (Data Access Objects или DAO) можно создавать достаточно мощные по своим функциональным возможностям программные комплексы, предназначенные для обработки информации из баз данных.

Объект управления данными — это компонент Visual Basic, который позволяет получить доступ и манипулировать данными, хранящимися в файлах баз данных различных форматов. Как уже отмечалось выше, используя объект Data, вы можете достаточно быстро создавать работоспособные Windows-приложения практически без написания кода программы. Перечислим основные действия, которые объект управления данными позволяет выполнять без вмешательства программиста (точнее, почти без вмешательства):

Подключение (connect) к базе данных.

Открытие таблицы базы данных или определение при помощи соответствующего SQL-запроса критерия выбора записей из полей базы данных.

Передача данных из полей базы данных к связанным элементам управления, расположенным на форме (например, поле редактирования), где данные можно просматривать или изменять.

Добавление новых записей, удаление записей и обновление содержимого базы данных (здесь, правда, без написания нескольких строк кода не обойтись).

Закрытие базы данных.

Применение объекта Data дает возможность разработчику использовать в своих приложениях базы данных в наиболее распространенных в настоящее время форматах, таких как Microsoft Access, dBASE, FoxPro, Paradox, Btrieve, а также файлы электронных таблиц Microsoft Excel и Lotus 1-2-3. Кроме того, можно использовать в качестве источника данных обычные текстовые файлы (с расширением txt) или базы данных, доступные через интерфейс Open Database Connectivity (ODBC).

Объект управления данными обозначен на панели инструментов интегрированной среды разработки Visual Basic 5 пиктограммой, показанной на рис.3.1.

Рис.3.1. Пиктограмма объекта Data на панели инструментов Visual Basic 5.

Внешний вид объекта Data на вашей экранной форме показан на рис.3.2. При его выделении, в углах и на серединах сторон появляются маркеры, с помощью которых можно изменять линейные размеры этого элемента управления по вашему вкусу. Объект Data содержит заголовок и четыре кнопки, предназначенные для перемещения по записям базы данных, а точнее, по созданному им набору записей (что такое набор записей вы узнаете несколько позднее). В качестве заголовка лучше использовать текст, каким-либо образом характеризующий данные, с которыми вы предполагаете работать. Заголовок определяется свойством Caption объекта Data.

Рис.3.2. Вид объекта Data на экранной форме.

Чтобы использовать объект управления данными в приложении, необходимо выполнить, по крайней мере, четыре действия:

  1. Выбрать объект Data на панели инструментов, перенести его на экранную форму и установить требуемые размеры.
  2. Определить имя файла базы данных, с которым вы собираетесь работать, установкой свойства DatabaseName объекта Data.
  3. Определить источник данных установкой свойства RecordSource объекта Data.
  4. Определить тип набора записей установкой свойства RecordsetType объекта Data (этот пункт не обязателен, так как по умолчанию будет создан набор записей динамического типа).

Если приложение должно работать с несколькими источниками данных, то можно одновременно разместить на экранной форме и использовать целый ряд объектов Data.

Установить имя базы данных во время разработки (design time) приложения можно в окне свойств (Properties) объекта управления данными. При выборе свойства DatabaseName в правом столбце окна свойств появится кнопка с многоточием. При нажатии на нее откроется диалоговое окно просмотра файлов DatabaseName, при помощи которого необходимо выбрать требуемую для работы базу данных. Кроме того, если вы хорошо знаете полный путь к файлу, то можете просто ввести имя файла в окне свойств, используя клавиатуру компьютера. Здесь следует особо подчеркнуть, что имя должно включать в себя полный путь к файлу базы данных.

Рис.3.3. Диалоговое окно просмотра файлов баз данных.

Рис.3.4. Вы можете просто ввести имя файла.

После определения имени файла базы данных, в том же окне свойств надо определить источник данных.

Свойство RecordSource объекта Data определяет, из какой таблицы базы данных требуется использовать данные. Имя таблицы можно ввести с использованием клавиатуры компьютера, или выбрать из списка таблиц, которая появится после нажатия кнопки со стрелкой в правом столбце окна свойств.

Если требуется использовать данные из нескольких таблиц, для определения требуемого источника данных можно использовать язык структурированных запросов (SQL). Описанию языка запросов будут посвящены несколько уроков на данном сайте.

Рис.3.5. Установка свойства RecordSource.

Теперь пришло время определить понятие набора записей (Recordset). Объект управления данными не работает напрямую с базой данных, а создает в памяти компьютера именованную область, которая используется как буфер между файлом базы данных и объектом Data. В этой области памяти и содержится информация из базы данных. Данные для объекта Recordset определяются свойствами RecordSource и RecordsetType объекта Data.

Таким образом, набор записей представляет собой некоторое подмножество записей из одной или нескольких таблиц базы данных (или из нескольких баз данных). При этом, он может содержать как полную копию таблицы, так и ее часть. Если источник данных определен с помощью языка SQL, то набор записей будет содержать строки из базы данных, удовлетворяющие соответствующему SQL-запросу.

Объект Recordset (как и любой другой объект в Visual Basic) имеет вполне конкретные свойства и методы, которые подробно будут рассмотрены позднее в уроках, посвященных объектам доступа к данным (DAO).

В пятой версии Visual Basic поддерживаются пять типов наборов записей. Но наиболее широко используются только три типа: набор записей динамического типа или динамический набор записей, набор записей типа таблица и статический набор записей. Их краткое описание приведено в таблице 3.1.

Тип набора записей Описание
Table Набор записей, представляющий собой всю таблицу базы данных. Используя такой набор записей, можно добавлять, изменять или удалять записи, причем доступ возможен только к одной таблице.
Dynaset Динамический набор записей представляет собой таблицу базы данных или результат запроса, содержащего поля одной или нескольких таблиц. Можно добавлять, изменять или удалять записи и изменения будут отражаться в соответствующей базе данных.
Snapshot Статическая копия таблицы, которую можно использовать, например, для поиска данных или для составления отчетов.

По умолчанию объект управления данными создает набор записей динамического типа.

Использование набора записей типа таблица по своему действию аналогично прямому открытию таблицы. При этом в память компьютера загружается только содержимое текущей записи. Из этого и вытекают преимущества и недостатки табличного набора записей. Используя его, вы можете работать только с одной таблицей, причем таблица открывается вся целиком, что может потребовать значительных ресурсов памяти.. Основным преимуществом такого набора записей является возможность использования индексов для упорядочения и поиска данных в таблице.

Из всех трех доступных типов наборов записей наиболее гибким в использовании является динамический набор записей (не зря же именно он создается объектом Data по умолчанию). Фактически, набор записей динамического типа представляет собой ряд ссылок на информацию в базе данных, поскольку использует ключевые поля, однозначно определяющие каждую строку в базе данных. Использование ключей увеличивает скорость загрузки данных и уменьшает нагрузку на сеть при работе приложений многопользовательской среде. Содержимое Memo-полей и полей, содержащих OLE-объекты не загружается до тех пор, пока не возникнет необходимость их использования, например, вывода их на экран. Все это позволяет использовать динамические наборы записей при работе с большими таблицами и таблицами, содержащими OLE-объекты и Memo-поля. Самым существенным недостатком набора записей динамического типа можно считать невозможность использования индексов. При каждом изменении способа упорядочения записей динамический набор должен пересоздаваться заново.

При использовании статического набора записей, в отличие от табличного и динамического наборов, вся информация из базы данных (определенная свойством RecordSource объекта Data) заносится в память компьютера. Статический набор может содержать данные из одной или нескольких таблиц базы данных, при этом обновление данных невозможно. Поэтому, он может использоваться в случаях, не требующих обновления данных в исходной таблице, например, для поиска определенной записи или для составления отчетов. Так как содержимое записей статического набора находится в памяти, то все операции с ним выполняются гораздо быстрее, чем при использовании динамического или табличного наборов записей. При этом платой за высокую скорость является потребность в значительных ресурсах памяти.

Объекты — наборы записей, создаваемые программно, могут быть связаны со свойством Recordset объекта управления данными при помощи оператора Set:

Таким же образом набор записей, созданный одним объектом управления данными может быть связан с другим объектом управления данными во время выполнения (run time) приложения:

В каждый момент времени текущей является только одна запись из набора и содержимое полей именно этой записи отображается в связанных элементах управления на вашей экранной форме. Нажатие кнопок со стрелками на объекте Data эквивалентно соответствующему перемещению указателя текущей записи по данным из объекта Recordset.

Когда вы программируете какие-либо операции с данными из набора записей, вы всегда должны быть уверены, что текущая запись является допустимой (valid). Это условие является необходимым, так как, например, удаленная запись является недопустимой (invalid) и любая попытка доступа к ней записи вызовет ошибку. Такие свойства объекта Data, как BOFAction и EOFAction, предоставляют некоторый контроль над состоянием текущей записи, но вы также можете создать программный код для проверки свойств BOF (начало файла) и EOF (конец файла) объекта Recordset. Установка этих двух свойств и определяет состояние текущей записи. В таблице 3.2 представлены возможные состояния свойств BOF/EOF объекта Recordset.

Свойство BOF/EOF объекта Recordset Описание
BOF и EOF равны False Указатель текущей записи является допустимым (valid) до тех пор, пока вы не удалите последнюю запись в наборе записей.
BOF = True Текущая запись установлена перед первой записью. Указатель текущей записи является недопустимым (invalid).
EOF = True Текущая запись установлена за последней записью. Указатель текущей записи является недопустимым (invalid).
BOF и EOF равны True В наборе записей нет строк. Указатель текущей записи является недопустимым (invalid).

При разработке приложений такие действия как открытие базы данных, определение источника данных и др. возлагаются на объект управления данными. Однако, для создания полноценного приложения совершенно необходимым является наличие у разработчика средств визуализации самих данных. Для решения этой задачи в Visual Basic предусмотрены, так называемые, связанные с данными элементы управления (Data-bound Controls). Другими словами, в связанных элементах управления, расположенных на экранной форме, отображается содержимое полей текущей записи из базы данных (точнее, из набора записей).

В качестве связанных объектов управления могут выступать некоторые стандартные объекты Visual Basic, например такое как Text box (текстовое окно).

Кроме свойств, присущих обычным элементам управления Visual Basic, эти элементы управления имеют несколько общих свойств, специально предназначенных для связи с базами данных:

DataField — Определяет имя поля в наборе записей, созданном объектом управления данными.

DataSource — Определяет имя объекта управления данными, с которым связывается элемент управления.

DataChanged — Показывает, было ли изменено содержимое связанного элемента управления.

Таким образом, чтобы добавить связанный элемент управления в приложение, необходимо выполнить следующие действия:

Перетащите необходимый объект управления из панели инструментов на вашу экранную форму и установите требуемые размеры.

Установите свойство DataSource для связи с объектом управления данными.

Установите свойство DataField для связи с требуемым полем набора записей.

Кроме стандартных связанных элементов управления, в Visual Basic предусмотрено несколько специальных связанных элементов управления, которые, кроме как для работы с данными обычно не используются:

Data-bound combo box,

Тот факт, что они используются вместе с данными, отражен в самих их названиях. Их детальное описание и примеры использования в приложениях будут рассмотрены в отдельнх уроках.

Источником данных для любого связанного элемента управления всегда является объект управления данными. Когда пользователь при помощи кнопок со стрелками на объекте Data перемещает указатель текущей записи с одной записи на другую, обновление данных в связанных элементах управления происходит автоматически. Любое изменение данных в связанных элементах управления, сделанное пользователем, немедленно отображается в наборе записей и затем в базе данных (если, конечно, не предусмотреть специальных мер).

В таблице 3.3 представлены типы данных, которые могут отображаться в связанных объектах управления.

Название объекта Типы данных
Picture box Long Binary
Image Binary
Label Text, Numeric, Date
Text box Text, Numeric, Date
Check box True/False, Yes/No
List box Text, Numeric, Date
Combo box Text, Numeric, Date
Data bound list box Text, Numeric, Date
Data bound combo box Text, Numeric, Date
Data bound grid Text, Numeric, Date
Masked edit Text, Numeric, Date

Для демонстрации использования объекта управления данными и связанных элементов управления создадим очень простое приложение, которое, тем не менее, позволит нам просматривать библиографическую информацию из базы данных BIBLIO.MDB. Для этого вы должны последовательно выполнить следующие действия:

1. Откройте новый проект и измените свойство Caption формы Form1 на “Книги по программированию”.

2. Перенесите из панели инструментов на форму объект управления данными Data1.

3. В окне свойств объекта Data1 измените свойство Caption на “Книги”.

4. В окне свойств объекта Data1 установите свойство DatabaseName, как имя файла базы данных с указанием полного пути C:\VB5\BIBLIO.MDB.

5. В окне свойств объекта Data1 определите свойство RecordSource, как следующий SQL-запрос:

SELECT * FROM TITLES, AUTHORS, PUBLISHERS, [TITLE AUTHOR] WHERE TITLES.ISBN = [TITLE AUTHOR].ISBN AND [TITLE AUTHOR].AU_ >

Этот запрос выбирает все поля из всех четырех таблиц базы данных BIBLIO.MDB, связанных между собой с помощью совпадающих значений ключевых полей.

6. Разместите на форме восемь меток и, соответственно, восемь текстовых окон как показано на рис.3.6 и установите их свойства следующим образом:

Модель объектов доступа к данным

Дата добавления: 2015-07-09 ; просмотров: 1571 ; Нарушение авторских прав

Другой большой класс объектов, используемых из программ VBA, составляют объекты доступа к данным. С помощью объектов доступа к данным обеспечивается взаимодействие VBA и ядра базы данных Jet. К объектам непосредственного доступа к данным относятся таблицы, запросы, связи, индексы. Объекты DAO обеспечивают доступ и обработку данных в базах данных, управление базами данных и их объектами с помощью свойств и методов, а также позволяют создавать новые объекты, изменять структуру базы данных. На верху модели объектов доступа к данным стоит объект DBEngine, представляющий ядро базы данных. В него входят объекты, представляющие рабочие области – Workspace. Каждая рабочая область Workspace, в свою очередь, включает семейство из одного или нескольких объектов баз данных – Database. Каждый объект Database содержит семейство из одного или нескольких объектов-таблиц – TableDef, запросов – QueryDef, наборов записей – Recordset и т.д. (рис.7.2). Таким образом, каждый объект может содержать семейства более низкого уровня в иерархии.

Рис. 1.2. Модель объектов доступа к данным

Работа с открытой базой данных ведется с помощью объекта Database и его методов и свойств. Например, используя для объекта метод OpenRecordset, можно выполнить запрос на выборку и создать объект Recordset; используя методы CreateTableDef и CreateRelation – создать таблицы и связи.

Семейство Recordsets содержит все открытые объекты Recordset (рис.1.3). Каждый объект Recordset включает семейство полей Fields. Объекты Recordset используются для обработки данных в базе данных на уровне записи. При работе с объектами доступа к данным почти все операции выполняются с помощью объектов Recordset.

Существуют объекты Recordset нескольких типов, в том числе:

объект Recordset типа таблицы – это представление таблицы базы данных, которое используется для добавления, изменения или удаления записей из нее;

объект Recordset типа динамического набора записей – это набор обновляемых записей, полученный в результате выполнения запроса. В объекте Recordset этого типа могут содержаться поля из одной или нескольких таблиц базы данных. Этот объект используется для добавления, изменения или удаления записей в одной или нескольких таблицах.

Новый объект Recordset автоматически добавляется в семейство Recordsets при открытии объекта и автоматически удаляется из семейства при закрытии объекта. Если созданный объект Recordset содержит записи, то текущей становится первая запись. Изменить положение указателя текущей записи позволяют методы MoveNext, MovePrevious, MoveFirst, MoveLast. При выполнении цикла по всем записям с помощью методов Move свойства BOF и EOF используются для проверки начальной и конечной границ объекта Recordset.

Семейство TableDefs содержит объекты TableDef с определениями таблиц базы данных. Объект TableDef включает два семейства: полей – Fields и индексов – Indexes (рис.7.3).

Рис. 1.3. Иерархия семейства и объектов таблицы и набора записей

Заметим, что семейство Fields содержит сохраненные объекты Field не только объекта TableDef, но и объектов Index, QueryDef, Recordset, Relation.

Семейство Fields объектов TableDef, Index, QueryDef, Relation содержит спецификации полей, входящих в эти объекты. Семейство Fields объекта Recordset представляет объекты Field, содержащиеся в записи. Объекты Field, входящие в объект Recordset, используются для чтения и задания значений полей в текущей записи объекта Recordset. Объект Index задает упорядочивание и однозначность значений, с помощью которых обеспечивается эффективный доступ к записям в таблицах.

Объекты доступа к данным используются как для работы с базами данных, имеющими формат .mdb, так и для доступа к таким базам данных, как FoxPro, dBASE, Paradox или к таблицам Excel, текстовым файлам. Кроме того, методы объектов доступа к данным обеспечивают доступ к серверу Microsoft SQL Server и другим базам данных, поддерживающим драйвер ODBC.

Объекты доступа к данным можно использовать в программах VBA, только если установлена ссылка на библиотеку DAO. Она устанавливается в окне редактора VBA, где командой Сервис/Ссылки (Tools|References) открывается окно со списком доступных ссылок и устанавливается флажок Microsoft DAO 3.6 Object Library.

Для объектов приложения Access устанавливается флажок Microsoft Access 9.0 Object Library.

Технология ADO (ActiveX Data Objects)

Объекты данных ActiveX, или ADO, — настоящая земля обетованная для программистов. Новая универсальная технология доступа к данным, разработанная фирмой Microsoft, включает функциональные возможности объектов DAO, RDO, а также практически любого другого метода доступа. ADO можно использовать для подключения к базам данных Access, SQL, Oracle, MS Exchange и другим источникам данных.


В ADO используется OLEDB — новый механизм подключения к базам данных, обеспечивающий ускоренный и более гибкий доступ к различным источникам, для которых ADO обеспечивает единый, удобный интерфейс. На практике это означает, что написанное вами приложение может легко переходить от однопользовательских баз данных (например, Access) к комплексным системам «клиент -сервер», в которых используется Microsoft SQL Server, Oracle или любая другая система управления базами данных, имеющая либо драйвер OLEDB, либо ODBC (рис. 8.14).

Как видно из рисунка 8.14, ADO подключается к любому источнику данных, у которого имеется драйвер OLEDB. Возможно, вы заметили, что ADO может подключаться к серверам Microsoft Exchange. Это действительно так, но, к сожалению, данная тема выходит за рамки книги.

В пользу ADO говорит многое. Универсальный механизм доступа к данным -убедительный аргумент, однако существуют и другие. Например, набор записей можно отключить от базы, поработать с ним в автономном режиме и позднее вернуть в базу — такая возможность чрезвычайно полезна в системах «клиент — сервер». При отключении набора ADO сохраняет необходимые служебные данные: имя базы данных, сервер, на котором она находится, информацию об имени и пароле пользователя и прочие сведения, не рассматриваемые в этой книге. Поскольку отключенный набор записей ADO «помнит», откуда он появился, вы можете обновить данные в автономном режиме и позднее отправить их обратно в базу, заново установив подключение. При этом снижается загрузка сервера, которая считается одной из основных проблем приложений «клиент — сервер».

Рис. 8.14. Моделъ ADO

Visual Basic содержит три средства для реализации ADO в ваших приложениях. Первое и самое простое — элемент данных ADO (ADO Data Control). Кроме того, существуют два компонента ActiveX: объект подключения ADO (ADO Connection Object) и объект набора записей ADO (ADO Recordset Object). Bce три элемента будут рассмотрены в следующих разделах.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Да какие ж вы математики, если запаролиться нормально не можете. 8427 — | 7331 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

5.5. Технология доступа к данным ADO

5. 5 Технология доступа к данным ADO

Технология доступа к данным ADO

Основные особенности технологии доступа к данным ADO

Технологии ODBC и OLE DB считаются хорошими интерфейсами передачи данных, но как программные интерфейсы имеют много ограничений, т.к. являются низкоуровневыми.

Для снятия этих ограничений была предложена технология ADO (Delphi 5).

Технология ADO представляет иерархическую модель объектов для доступа к различным OLE DB-провайдерам данных. Объектная модель ADO включает объекты, обеспечивающие соединение с провайдером данных, создание SQL-запросов к данным и т.д.

Модель объекта не содержит таблиц, среды. Здесь основными объектами являются:

объект Набор данных;

объект Соединение, создающий связь с провайдером данных;

объект Команда –выполнение процедуры.

Особенностью технологии ADO является возможность ее использования в Интернет-приложениях для доступа к различным источникам данных.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к источникам данных различных типов (рис.1).

Рис. 1. Схема доступа к данным через ADO

В целом технологию ADO можно охарактеризовать как наиболее современную технологию разработки приложений для работы с распределенными БД по технологии клиент-сервер.

Эта технология аналогична BDE по назначению и довольно близка по возможностям. Используемые компоненты для доступа к данным также довольно похожи на соответствующие компоненты BDE. Поэтому, не вдаваясь в подробности, рассмотрим только особенности компонентов ADO при работе с локальными базами данных. Главное отличие состоит в процедуре настройки связи с таблицей базы данных.

Все использующие ADO компоненты доступа к данным размещены на странице ADO палитры компонентов (рис.2).

Рис. 2. Компоненты ADO

TADOConnection аналогичен компоненту BDE TDatabase и используется для указания базы данных и работы транзакциями. С одним компонентом TADOConnection может быть связанно несколько компонентов TADOTable и TADOQuery.

TADOTable используется для доступа к хранилищам данных ADO и представляет полученную информацию в виде таблицы.

TADOQuery позволяет выполнять SQL-запросы при работе с данны­ми через ADO. Соединение с хранилищем данных осуществляется стандарт­ным методом. Текст запроса содержится в свойстве SQL.

TADOStoredProc позволяет обращаться к хранимым процедурам, содержащимся в базах данных. Имя хранимой процедуры определяется свойством ProcedureName.

TADODataSet предназначен для представления набора данных из хранилища ADO.

TADOCommand и TADODataSet являются наиболее общими компонентами для работы с ADO, но и наиболее сложными в работе. Оба компонента позволяют выполнять команды на языке провайдера данных (так в ADO называется драйвер базы данных).

Установление связи с объектом ADO

В ADO компонентах для доступа к БД используется, так называемая строка подключения ConnectionString: WideString. В строке подключения указываются параметры подключения к БД такие как местоположение и имя БД, провайдеры, пароли необходимые для подключения и т.д. Запомнить состав строки и ее синтаксис довольно сложно, поэтому для ее настройки используется специальный мастер.

Первый шаг задания свойства ConnectionString, это выбор способа определения подключения. База данных может быть указана двумя способами: через файл формата Microsoft Data Link (расширение UDL) либо прямым заданием параметров соединения (рис. 3).

Рис. 3. Выбор способа определения строки подключения

При прямом задании соединения значение свойства ConnectionString может быть задано напрямую в поле ввода окна диалога ConnectionString. Однако обычно проще использовать специальный мастер, вызываемый щелчком на кнопке с многоточием в конце поля ввода. При этом открывается окно диалога Data Link Properties, в котором выбираются тип базы данных, ее местоположение и параметры соединения (см. рисунок 4). Данное окно диалога содержит четыре вкладки:

на вкладке Provider (Поставщик данных) выбирается тип БД. Базы данных Microsoft Access доступны через драйверы Microsoft Jet OLE DB Provider и Microsoft OLE DB Provider for ODBC. Базы данных dBase, Paradox и FoxPro доступны только через ODBC;

Рис. 4. Диалоговое окно настройки параметров соединения: выбор провайдера

состав элементов управления вкладки Connection (Подключение) зависит от выбранного типа БД (рис. 5). Рассмотрим вариант выбора соединений Microsoft Jet 4.0 OLE DB Provider:

флажок Blank password подавляет отображение окна диалога для ввода идентификатора и пароля пользователя при установлении соединения, если поле пароля пустое;

флажок Allow saving password сохраняет пароль в строке параметров соединения. Если флажок не установлен, то введенный пароль будет использоваться только при выполнении тестового соединения;

кнопка Test Connection позволяет проверить правильность и полноту параметров;

переключатель Use data source name позволяет ввести предустановленный псевдоним ODBC, а в положении Use connection string вводится как псевдоним, так и тип ODBC драйвера и параметры соединения;

путь к базе данных задается в поле ввода Select or enter a database name для соединения Microsoft Jet OLE DB Provider или в поле ввода Use data Source name для соединения Microsoft OLE DB Provider for ODBC. Причем в первом случае при щелчке на кнопке с многоточием, расположенной справа от поля ввода, появится окно диалога открытия файла, с помощью которого выбирается необходимый файл базы данных. Во втором случае путь к базе данных приходится вводить вручную;

Рис. 5 – Окно диалога Data Link Properties (вкладка Подключение)

на вкладке Advanced (Дополнительно) (рис.6) расположены дополнительные параметры, с помощью которых устанавливаются уровень доступа к файлу базы данных, время ожидания сетевого соединения (то есть время, через которое связь будет считаться потерянной, если сервер не отвечает) и уровень защиты соединения;

Рис. 6 – Окно диалога Data Link Properties (вкладка Дополнительно)

на вкладке All (Все) (рис. 7) можно отредактировать все параметры с предыдущих страниц и параметры, зависящие от выбранного соединения, не помещенные на вкладку Connection. Редактирование осуществляется путем ввода значений параметров в текстовой форме. Описание этих параметров можно найти в следующих документах: MSDN Data Access Services, Microsoft Data Access Components (MDAC) SDK, Microsoft ActiveX Data Objects (ADO), Microsoft ADO Programmers Reference, Using Providers with ADO.

Рис. 7 – Окно диалога Data Link Properties (вкладка Все)

В остальном, работа с компонентом ADOTable и ADOQuery практически ничем не отличается от работы аналогичных компонентов использующих механизм доступа BDE.

Документация

Создайте объекты доступа к данным OPC Toolbox

Обзор к объектам

Первый шаг во взаимодействии с Сервером OPC от MATLAB должен установить связь между программным обеспечением OPC Toolbox™ и сервером. Вы создаете объекты клиента opcda , чтобы управлять связью между Сервером OPC и тулбоксом. Затем вы создаете объекты dagroup управлять наборами объектов daitem , и затем вы создаете сами объекты daitem , которые представляют серверные элементы. Серверный элемент соответствует физическому устройству или к месту хранения в системе SCADA или DCS.

Необходимо создать объекты тулбокса в порядке, описанном выше. Соединитесь с OPC Data, который описывает доступ к Серверам, как создать объект клиента opcda . В этом разделе рассматриваются, как создать и сконфигурировать объекты daitem и dagroup .

Иерархия объектов тулбокса для стандарта доступа к данным

Программное обеспечение OPC Toolbox DA реализовано с помощью трех основных объектов, разработанных, чтобы помочь вам справиться со связями с серверами и наборами серверных элементов. Три объекта располагаются в определенной иерархии, показанной в следующей фигуре.

Доступ к OPC Data к Объектам клиента (клиент opcda object s ) представляет определенный экземпляр OPC-клиента, который может связаться только с одним сервером. Вы задаете сервер с помощью свойств Host и ServerID . Свойство Host задает компьютер, на котором установлен сервер. Свойство ServerID задает >(Проценуроз) сервера, созданного, когда сервер был установлен на том хосте. Объект клиента opcda действует как контейнер для нескольких объектов группы и справляется со связью с сервером, связью с сервером и просмотром пробела имени сервера.

Объекты Data Access Group (объекты dagroup ) представляют контейнеры для одного или нескольких серверных элементов (точки данных на сервере.) Объект dagroup справляется, как часто элементы в группе должны быть считаны, должна ли историческая информация элемента храниться, и также справляется с созданием и удалением элементов. Группы не могут существовать без объекта клиента opcda . Вы создаете объекты dagroup с помощью функции addgroup объекта клиента opcda .

Объекты Элемента Доступа к данным (объекты daitem ) представляют серверные элементы. Элементы заданы ID элемента , который исключительно задает тот серверный элемент в пространстве имен сервера. Объект daitem имеет Value , Quality и TimeStamp , представляя информацию, собранную сервером от инструмента или точки данных в системе SCADA. Value , Quality и свойства TimeStamp представляют информацию, известную серверу, когда сервер в последний раз попросили получить доступ к информации от того инструмента.

Объект dagroup может только существовать “в” объекте клиента opcda . Точно так же объект daitem может только существовать в объекте dagroup . Вы создаете объекты dagroup с помощью метода addgroup объекта клиента opcda . Вы создаете объекты daitem с помощью метода additem объекта dagroup .

Как объекты тулбокса относятся к серверам DA OPC

Использование программного обеспечения OPC Toolbox возражает, чтобы задать сервер, который клиент должен соединить с, и расположение элементов в группах. Следующие данные показывают отношение между объектами Доступа к данным OPC Toolbox и Сервером OPC.

Объект клиента opcda устанавливает связь между программным обеспечением OPC Toolbox и Сервером OPC, с помощью OPC Data доступ к стандартам Спецификации. Стандарты основаны на стандартах функциональной совместимости Microsoft ® COM/DCOM.

Объекты daitem представляют определенные серверные элементы. Обратите внимание на то, что клиент обычно требует только подмножества целого пространства имен сервера в порядке действовать эффективно. В фигуре выше, только PV и элементы SP FIC01 и элемент LIT01 , требуются для той конкретной группы. Другая группа может только содержать один объект daitem , представляя один серверный элемент.

Примечание

Объект dagroup не имеет никакого эквивалента на Сервере OPC. Однако сервер ведет учет каждой группы, которую клиент создал и использует то название группы, чтобы связаться с информацией о клиенте об элементах в той группе.

Создайте объекты группы доступа к данным

Если вы создали объект клиента opcda , можно добавить группы в клиент. Объект dagroup управляет несколькими объектами daitem . Используя объект dagroup , можно считать данные из всех элементов в той группе в одном действии, записать данные к элементам в группе, задать действия, чтобы взять, когда любой из элементов в той группе изменяет значение или данные логов для всех элементов в той группе для анализа и обработки.

Чтобы создать объект dagroup , вы используете функцию addgroup , задавая объект клиента opcda , что вы хотите добавить группу в, и дополнительное название группы. Смотрите Задают Название группы для правил об определении вашего собственного названия группы.

Пример ниже создает объект клиента opcda , подключения, которые возражают против сервера, и добавляет две группы в клиент. Первую группу автоматически называет сервер, и второй группе дают указанное имя.

Задайте название группы

Требуется, что у каждой группы, созданной под определенным объектом клиента, есть уникальное имя. Это позволяет Серверу OPC однозначно определять группу, когда клиент делает запрос к серверу с помощью той группы. Имя может быть любым непустым вектором символов.

Вы не должны задавать название группы для каждой группы, которую вы добавляете в клиент. Если вы не зададите имя, Сервер OPC автоматически присвоит название группы для вас. Каждый Сервер OPC задает различные правила для автоматического именования групп.

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

Смотрите Удаляют Объекты для получения информации о том, как группы автоматически называют, когда вы создаете группы с разъединенным клиентом.

Просмотрите сводные данные объекта группы

Чтобы просмотреть сводные данные характеристик объекта dagroup , вы создали, введите имя переменной, которое вы присвоили объекту в командной строке. Например, это — сводные данные для объекта grp1 .

Элементы в этом списке соответствуют пронумерованным элементам в объектных сводных данных:


Заголовок Summary включает имя объекта dagroup . В примере это — присвоенное серверу имя Group0 .

Раздел Object Parameters перечисляет значения свойств объектов ключа dagroup . Эти свойства описывают тип группы, объекты daitem сопоставили с группой, именем родительского объекта клиента opcda группы и свойствами, которые управляют, как сервер обновляет информацию об элементе для этой группы. В примере любые элементы, созданные в этой группе, будут обновлены в полувторых интервалах с мертвой зоной 0%. Для получения информации о том, как сервер обновляет информацию об элементе, смотрите События Изменения Данных и Подписку.

Илон Маск рекомендует:  min-width в CSS

Раздел Object Status перечисляет текущее состояние объекта. Объект dagroup может быть в одном из нескольких состояний:

Состояние Active задает, применяется ли какая-либо операция на группе к элементу.

Состояние Subscription задает, произведут ли изменения в значении или качестве элемента событие изменения данных. Смотрите События Изменения Данных и Подписку для получения дополнительной информации о свойстве Subscription .

Состояние Logging описывает, регистрирует ли группа или нет. Смотрите Регистрируют Данные о Сервере OPC для получения информации о как к данным логов.

Раздел Logging Parameters описывает значения свойств журналирования для той группы. Журналирование свойств управляет как данные логов объекта dagroup , включая длительность задачи журналирования и место назначения записанных данных. Смотрите Регистрируют Данные о Сервере OPC для получения информации о журналировании данных с помощью объектов dagroup .

Используйте объект группы

Объект dagroup без элементов не выполняет полезных функций. Если вы добавили элементы в группу, можно использовать группу для

Считайте данные из и запишите данные к, Сервер OPC. Смотрите Чтение и запись данных для получения дополнительной информации.

Управляйте, как Сервер OPC уведомляет MATLAB об изменениях в любом элементе, сопоставленном с объектом dagroup . Смотрите События Изменения Данных и Подписку для получения дополнительной информации.

Данные логов от всех элементов в той группе, для дальнейшей обработки и анализа. Регистрируйте Данные о Сервере OPC, описывает, как управлять журналированием.

Создайте объекты элемента доступа к данным

Объект dagroup обеспечивает контейнер для сбора одного или нескольких объектов daitem . Объект daitem обеспечивает ссылку на определенный серверный элемент. Объект daitem задает, как вы хотите получить и сохранить клиентское значение серверного элемента, и также хранит последние полученные данные с сервера для того серверного элемента. Можно использовать объект daitem считать данные из сервера для того серверного элемента или записать значения в тот серверный элемент на сервере.

Пример ниже основывается на примере в Объектах Create Data Access Group путем добавления объекта daitem в первую группу, созданную в том примере. Серверный элемент, сопоставленный с этим элементом, называется ‘Random.Real8’ .

Задайте локальный тип данных для элемента

Когда вы создаете объект daitem , вы создаете объект, который хранит значение серверного элемента локально на клиенте. Можно указать, что локальный тип данных устройства хранения данных отличается от типа данных устройства хранения данных сервера. Например, можно указать, что значение сохранило на сервере как целое число быть сохраненным в MATLAB как с двойной точностью значение с плавающей точкой, потому что вы знаете, что будете выполнять с двойной точностью вычисления со значением того элемента.

Несмотря на то, что возможно изменить тип данных элемента после того, как это создается, можно также создать элемент с определенным типом данных путем определения типа данных как третьего параметра к функции additem . Спецификация типа данных должна быть вектором символов, описывающим тот тип данных. Допустимые типы OPC Data являются любым типом числовых данных MATLAB плюс ‘char’ и ‘logical’ . Смотрите работу с Различными типами данных для получения дополнительной информации о поддерживаемых типах данных.

Пример ниже добавляет другой элемент в группу grp1 , созданный примером в Объектах Create Data Access Group. >’Random.UInt2′ , который сохранен на сервере как 16-битное целое число без знака. Путем определения типа данных как ‘double’ значение будет возвращено к MATLAB и сохранено локально как с двойной точностью число с плавающей запятой.

Примечание

Процесс преобразования от типа данных сервера до типа данных элемента выполняется сервером, используя правила преобразования Microsoft COM Variant. При попытке преобразовать значение в тип данных, который не имеет области значений того значения, Сервер OPC возвратит ошибку при попытке обновить значение того элемента. Необходимо затем изменить тип данных на тот, который имеет ту же или большую область значений, чем тип данных серверного элемента. Смотрите работу с Различными типами данных для получения дополнительной информации.

Задайте активное состояние объекта элемента

Можно опционально задать состояние Active объекта daitem путем передачи вектора символов как четвертого параметра к функции additem . Состоянием Active может быть ‘on’ или ‘off’ . Элемент с состоянием Active ‘off’ ведет себя, как будто элемент никогда не создавался: Никакие обновления сервера значения элемента не произойдут, и чтение или запись с тем элементом перестанут работать. Вы используете состояние Active , чтобы временно отключить элемент, не удаляя тот элемент из MATLAB. Для получения дополнительной информации о состоянии Active смотрите страницу с описанием для свойства Active .

Просмотрите сводные данные объекта элемента

Чтобы просмотреть сводные данные характеристик объекта daitem , вы создали, введите имя переменной, которое вы присвоили объекту в командной строке. Например, это — сводные данные для объекта itm1 .

Элементы в этом списке соответствуют пронумерованным элементам в объектных сводных данных:

Заголовок Summary включает полностью определенный >’Random.Real8′ .

Раздел Object Parameters перечисляет значения свойств объектов ключа daitem . Эти свойства описывают имя группы Parent элемента и Access Rights , рекламируемый сервером.

Раздел Object Status перечисляет Активное состояние объекта. Состояние Active задает, применяется ли какая-либо операция на родительской группе к элементу, и хотите ли вы быть уведомленными относительно любых изменений в значении элемента.

Раздел Data Parameters перечисляет Data Type , используемый объектом daitem сохранить значение, и Value , Quality и TimeStamp последнего значения, полученного из сервера для этого элемента. Для получения дополнительной информации о Value Quality и TimeStamp элемента, видят OPC Data: Значение, Качество и TimeStamp.

Используйте объект элемента

Вы создаете объект daitem запросить значение связанного серверного элемента или записать значения в тот серверный элемент. Можно записать значения в один элемент и считать значения из одного элемента, с помощью объекта daitem . Для получения дополнительной информации о чтении и записи значений, смотрите Рида и запись данных.

Можно также использовать родительский объект dagroup считать и записать значения для всех объектов daitem , содержавшихся в той группе или регистрировать изменения в значении элемента сроком на время. Смотрите Регистрируют Данные о Сервере OPC для получения информации о регистрации данных.

Создайте иерархию объектов с разъединенным клиентом

Когда вы создаете объекты со связанным клиентом, программное обеспечение OPC Toolbox подтверждает те объекты с Сервером OPC прежде, чем создать их на клиенте. Например, при добавлении группы в клиент, использующий функцию addgroup , процесс валидации гарантирует, что никакая другая группа с тем же именем не существует на сервере, и что сервер примет группу. При добавлении элемента ID элемента проверяется, чтобы быть допустимым серверным элементом.

Иногда можно хотеть создать иерархию объектов тулбокса, не соединяясь с сервером. Например, можно быть от сайта и хотеть сконфигурировать задачу журналирования для использования на следующий день, вместо того, чтобы ожидать, чтобы сконфигурировать объекты для той задачи, когда вы находитесь на сайте.

Программное обеспечение OPC Toolbox позволяет вам конфигурировать целую иерархию объектов тулбокса, не соединяясь с сервером. Однако без связи с сервером, тулбокс не может подтвердить созданные объекты с тем сервером. Вместо этого программное обеспечение OPC Toolbox выполнит некоторую основную валидацию на объектах, которые вы создаете и подтверждаете те объекты с сервером, когда вы соединяетесь с сервером.

Когда вы создаете объекты тулбокса с разъединенным клиентом, следующая валидация выполняется:

При добавлении группы, использующей функцию addgroup , если вы не задаете имя, программное обеспечение OPC Toolbox автоматически присваивает уникальное имя ‘group N ‘ , где N является самым низким целым числом, которое гарантирует, что название группы уникально. Например, первая группа создала, будет ‘group1’ , затем ‘group2’ , и так далее.

Когда вы зададите название группы при использовании функции addgroup , ошибка будет сгенерирована, если группа с тем же именем уже будет существовать.

При добавлении элемента в группу, использующую функцию additem , будет сгенерирована ошибка, только если элемент с тем же именем уже существует в той группе. Никакая другая проверка не выполняется на элементе.

При добавлении элемента в группу, если вы не задаете тип данных для того элемента, тип данных установлен в ‘unknown’ . Когда вы соединитесь с сервером, тип данных будет изменен на CanonicalDataType серверного элемента.

Несмотря на все проверки, описанные выше, сервер не может принять все объекты, созданные на разъединенном клиенте, когда тот клиент соединяется с сервером с помощью функции connect . Например, >connect , любых объектов, что отклонения сервера будут удалены из иерархии объектов, и предупреждение будет сгенерировано. Таким образом все объекты на связанном клиенте, как гарантируют, будут приняты сервером.

Создайте векторы объекта доступа к данным OPC Toolbox

Программное обеспечение OPC Toolbox поддерживает использование объектных векторов . Объектный вектор является одной переменной в рабочем пространстве MATLAB, содержащем ссылку больше чем на один объект. Например, все группы, добавленные к объекту клиента opcda , сохранены в свойстве Group клиента. Свойство Group содержит вектор объекта dagroup , который представляет все группы в том клиенте. Точно так же объект dagroup имеет свойство Item , которое содержит ссылку на каждый объект daitem , созданный в группе.

Можно создать векторы с помощью любого из стандартных методов конкатенации, доступных в MATLAB. Однако программное обеспечение OPC Toolbox налагает некоторые ограничения на конструкцию объектных векторов:

Объекты должны быть тем же классом. Например, можно конкатенировать два объекта dagroup , но вы не можете конкатенировать объект dagroup с объектом daitem .

У группы и объектов элемента должен быть тот же родительский элемент.

Одна из размерностей полученного массива должна быть скаляром. Можно создать вектор — столбец ( m-1 объекты) или вектор — строка (объекты 1 на n ), но не матрица m на n .

Программное обеспечение OPC Toolbox не заполняет недостающие элементы в векторе. Вместо этого ошибка сгенерирована. Например, вы не можете присвоить скалярный объект в 4-м индексе к скалярному объекту.

Следующие разделы обсуждают, как создать и использовать векторы объекта тулбокса:

Создайте Объектные Векторы, описывает, как создать объектные векторы.

Отобразитесь Сводные данные Объектных Векторов описывают, как объектные векторы отображены в командной строке.

Используйте Объектные Векторы, описывает, как можно использовать объектные векторы с программным обеспечением OPC Toolbox.

Создайте объектные векторы

Можно создать объектный вектор с помощью любого из следующих методов:

Используя конкатенацию списков переменных отдельного объекта

Используя индексируемое присвоение

Используя свойства объектов, чтобы получить объектные векторы

Создайте Объектные Векторы Используя Конкатенацию. Чтобы создать вектор объекта OPC Toolbox Data Access использование конкатенации, вы используете нормальный синтаксис MATLAB для конкатенации. Создайте список всех объектов, вы хотите создать, и окружить тот список квадратными скобками ( [] ). Разделите каждый элемент объектного вектора или запятой () чтобы создать вектор — строку или точку с запятой (;) чтобы создать вектор — столбец.

Следующий пример создает три фиктивных объекта клиента opcda и конкатенирует их в вектор — строку.

Создайте Объектные Векторы Используя Индексируемое Присвоение. Индексируемое присвоение относится к созданию векторов путем присвоения элементов определенным индексам в векторе. Следующий пример создает тот же трехэлементный вектор объекта клиента opcda как в предыдущем примере, с помощью индексированного присвоения.

Создайте Объектный Вектор Используя Свойства объектов. Можно получить объектный вектор, если вы присваиваете свойство Group объекта клиента opcda или свойство Item объекта dagroup , к переменной. Если у клиента есть больше чем одна группа, или у группы есть больше чем один элемент, получившееся свойство является объектным вектором.

Для получения информации о получении свойств объектов, вид на море Значение Конкретного Свойства.

Отобразите сводные данные объектных векторов

Чтобы просмотреть сводные данные объектного вектора, введите имя объектного вектора в командной строке. Например, это — сводные данные клиентского вектора dav .

Итоговая информация для каждого класса объекта Доступа к данным OPC Toolbox отличается. Однако основное отображение подобно.

Используйте объектные векторы

Вы используете объектные векторы так же, как вы были бы переменная обычного объекта. К функции, которую вы вызываете с объектным вектором просто, применяются все объекты в векторе. Например, передавая клиентский вектор dav функции подключения соединяет каждый объект в векторе к его Серверу OPC.

Примечание

Некоторые функции OPC Toolbox не принимают объектные векторы как аргументы. При попытке использовать объектный вектор с функцией, которая не принимает объектные векторы, ошибка будет сгенерирована. Консультируйтесь с соответствующей страницей ссылки на функцию для получения информации о том, поддерживает ли функция объектные векторы.

Если необходимо извлечь элементы объектного вектора, используйте стандартное обозначение индексации MATLAB. Например, следующий пример извлекает второй элемент от клиентского вектора dav .

Работа с общедоступными группами

OPC Data доступ к Спецификации обеспечивает механизм для совместного использования настройки группы среди многих клиентов. Обычно, у клиента есть частный доступ к группе; никакой другой клиент, соединенный с тем же сервером, не видит, что группа и элементы сконфигурировали в той группе. Однако клиент может задать группу как общественность , позволив другим клиентам, соединенным с тем же сервером получать доступ к той группе.

Примечание

OPC Data доступ к Спецификации задает поддержку общедоступных групп как дополнительную. Следовательно, некоторые Серверы OPC не поддержат общедоступные группы.

Общедоступная группа отличается от частной группы следующими способами:

Если группа задана как общественность, вы не можете добавить элементы в ту группу, ни удалить элементы из группы. Это ограничение гарантирует, что каждый клиент, использующий ту общедоступную группу, имеет доступ к тем же элементам и не должен волноваться об элементах, добавляемых или удаленных из той группы. Необходимо гарантировать, что элементы группы правильны прежде, чем обнародовать ту группу.

Каждый клиент, который получает доступ к общедоступной группе, может установить ее собственные свойства группы, такие как UpdateRate , DeadbandPercent , Active и свойства Subscription . Например, один клиент может задать UpdateRate секунд 10 для общедоступной группы, в то время как другой клиент задает UpdateRate как секунды 2 .

У каждой общедоступной группы, заданной на сервере, должно быть уникальное имя. При попытке создать общедоступную группу с именем, которое совпадает с общедоступной группой на сервере, ошибка сгенерирована.

У одного клиента не может быть общедоступной группы и частной группы с тем же именем. Например, вы не можете соединиться с общедоступной группой под названием ‘LogGroup’ и затем создать частную группу под названием ‘LogGroup’ .


Используя программное обеспечение OPC Toolbox, можно задать и опубликовать собственные общедоступные группы или подключение к существующим общедоступным группам. Вы также запрашиваете, чтобы общедоступные группы были удалены из Сервера OPC. Следующие разделы иллюстрируют, как можно работать с общедоступными группами, использующими программное обеспечение OPC Toolbox:

Задайте New Public Group, описывает, как можно создать новые общедоступные группы.

Соединитесь с Existing Public Group, описывает, как можно использовать общедоступную группу, которая уже задана на сервере.

Remove Public Groups с Сервера описывает, как можно удалить общедоступные группы из Сервера OPC.

Задайте новую общедоступную группу

Вы задаете новую общедоступную группу путем создания частной группы нормальным способом (описанный в Объектах Create Data Access Group) и затем преобразования что частная группа в общедоступную группу.

Вы используете функцию makepublic , чтобы преобразовать частную группу в общедоступную группу. Единственный аргумент к функции makepublic является объектом группы, который вы хотите преобразовать в общедоступную группу.

Следующий пример создает частную группу с определенными элементами в той группе. Группа затем преобразована в общедоступную группу.

Можно проверять тип группы с помощью свойства GroupType .

Доступ к данным

Мастеры и средства конструирования позволяют легко обращаться к данным из программ на Visual J++. Добавив на свою форму соответствующие WFC-элементы, Вы быстро настроите их, чтобы они считывали и отображали данные так, как Вам надо. Кроме того, можно просто запустить Data Form Wizard, и он автоматически сгенерирует форму, связанную с данными.

Visual J+ + предоставляет элементы управления, которые обращаются к данным через ADO (ActiveX Data Objects) — модель доступа к данным, используемую в WFC-приложениях. К основным ADO-объектам относятся Connection, Command и Recordset, позволяющие подключаться к базе данных и извлекать из нее наборы записей. В ADO предусмотрен также компонент DataSource, объединяющий функциональность объектов Connection, Command и Recordset.

Примечание На панели Toolbox в Forms Designer доступен лишь элемент управления DataSource — объектами Connection, Command и Recordset можно пользоваться только в самом коде. О программировании с применением ADO-объектов см. раздел «ADO Tutorial (VJ++)» в электронной документации Visual Studio (в части, относящейся к Microsoft ActiveX Data Objects).

ADO поддерживает простое связывание с данными через компонент DataBinder, который связывает поле, указанное с помощью Recordset или DataSource, со свойством WFC-элемента. Кроме того, в Visual J+ + имеются элементы управления, обеспечивающие комплексное связывание с данными, например DataGrid и DataNavigator, — они взаимодействуют с набором записей напрямую. Подробнее о связывании с данными см. главу 18 «Связывание с данными в WFC». Для организации доступа к данным Вы можете либо запустить Data Form Wizard, либо выполнить в Forms Designer следующие операции:

  • считать набор записей;
  • связать данные с элементом управления DataBinder или DataGrid;
  • просмотреть записи.

Подробнее об ADO см. раздел «Getting Started with ADO 2.0» в электронной документации Visual Studio (в части, относящейся к Microsoft ActiveX Data Objects). О предоставляемых Visual Studio средствах доступа к данным через СОМ см. раздел «Choosing the Right Data Access Technology» в электронной документации Visual Studio.

Работа с Data Form Wizard

Data Form Wizard позволяет автоматически генерировать форму, связанную с полями базы данных. Он извлекает данные через ADO и поддерживает базы данных Microsoft Access (MDB-файлы) по механизму ODBC.

Чтобы запустить Data Form Wizard:

  1. В окне Project Explorer щелкните правой кнопкой мыши нужный узел проекта или папок.
  2. Выберите из контекстного меню команду Add, а из подменю -команду Add Form.
  3. В диалоговом окне Add Item дважды щелкните значок Data Form Wizard.
  4. В поле Name введите имя формы.
  5. Щелкните кнопку Open.

Примечание Data Form Wizard запускается и в том случае, когда Вы создаете связанное с данными приложение, используя Application Wizard.

  1. На стадии Introduction Вы можете выбрать из раскрывающегося списка нужный Вам профиль. (Если требуемого профиля в списке нет, щелкните кнопку с многоточием, чтобы найти и открыть его.) Подробнее о профилях см. главу 5 «Знакомство с мастерами и средствами сборки».
  2. Щелкните кнопку Next, чтобы указать тип базы данных.

Стадия Database Type

На стадии Database Type работы мастера Data Form Wizard Вы задаете формат своей базы данных.

Чтобы задать формат базы данных:

  1. Для доступа к любому MDB-файлу Microsoft Access выберите Access, щелкните кнопку Next и укажите конкретный файл базы данных.
  2. Для доступа к базе данных через ODBC — например, к базе данных типа ISAM (dBase, FoxPro или Paradox) или удаленному источнику данных (SQL Server или Oracle) — выберите ODBC, щелкните кнопку Next и укажите информацию, необходимую для подключения к данным по механизму ODBC.

Примечание Хотя к базе данных Microsoft Access можно подключиться через драйвер Microsoft Access ODBC, выбор формата Access на стадии Database Type обеспечит большую эффективность.

Если на стадии Database Type Вы выбрали формат Access, Data Form Wizard перейдет на стадию Database, что позволит задать конкретный MDB-файл.

Чтобы указать MDB-файл:

  1. В поле Database Name введите полное (вместе с путем) имя нужного MDB-файла или щелкните кнопку Browse и найдите его.
  2. Щелкните кнопку Next и сообщите мастеру параметры создаваемой формы.

Стадия Connect Information

Если на стадии Database Type Вы выбрали формат ODBC, Data Form Wizard перейдет на стадию Connection Information, что позволит указать информацию, необходимую для подключения к данным по механизму ODBC, в том числе имя источника данных (DSN), базу данных и драйвер.

В следующих процедурах описаны разные способы подключения к базе данных через ODBC.

Чтобы подключиться к базе данных, используя созданный Вами DSN:

  1. В списке DSN выберите имя источника данных ODBC. (Если Вам нужно создать такой источник, дважды щелкните значок ODBC в Windows Control Panel.)
  2. Если с этим источником данных сопоставлены идентификатор пользователя и пароль, введите соответствующую информацию в поля UID (идентификатор пользователя) и PWD (пароль).

Чтобы подключиться к базе данных, используя базовое DSN:

  1. В списке DSN выберите базовое имя источника данных, например FoxPro Files.
  2. В поле Database введите полное (вместе с путем) имя файла базы данных.

Чтобы подключиться к базе данных, используя определенный драйвер:

  1. В поле Database введите полное (вместе с путем) имя файла базы данных.
  2. В списке Driver выберите нужный драйвер, например Microsoft FoxPro Driver (*.dbf).

Чтобы подключиться к серверной базе данных:

  1. В поля UID и PWD введите соответственно идентификатор пользователя и пароль.
  2. В поле Database наберите имя файла базы данных.
  3. В списке Driver выберите нужный драйвер, например SQL Server или Oracle.
  4. В поле Server введите имя сервера.

Указав всю информацию, необходимую для подключения, щелкните кнопку Next и сообщите мастеру параметры создаваемой формы.

На стадии Form мастер Data Form Wizard позволяет задать имя формы и определить ее разметку.

Чтобы указать параметры формы:

  1. В поле Form name введите или отредактируйте имя формы.
  2. В списке Form layout выберите один из следующих вариантов:
    • Single record — вариант по умолчанию. Форма единовременно отображает одну запись. Каждое небулево поле базы данных связывается с элементом управления Edit, а Булево — с CheckBox. С каждым элементом, связанным с данными, сопоставляется элемент управления Label, показывающий имя поля;
    • Grid (Datasheet) — форма отображает несколько записей через DataGrid;
    • Master/Detail — форма отображает данные из двух связанных таблиц (или запросов), отношения которых обычно определены как «один-ко-многим». Форма показывает одну запись из главной таблицы (master table) и несколько записей из зависимой таблицы (detail table) через DataGrid.
  3. В разделе Database Connection выберите один из переключателей:
    • Controls — предлагается по умолчанию. Для доступа к Вашей базе данных форма использует ADO-элемент DataSource. Он совместим с Forms Designer: если Вы захотите изменить значения свойств данного элемента управления уже после того, как Data Form Wizard создаст форму, то сможете сделать это прямо в Forms Designer. (DataSource — невизуальный элемент управления, который видим на форме лишь на этапе разработки.);
    • Code — для доступа к Вашей базе данных форма использует ADO-компоненты Connection и Recordset. Они не поддерживаются Forms Designer, все операции с ними осуществляются только программно.
  4. Щелкните кнопку Next и укажите источник записей для соответствующих элементов управления.

Стадия Record Source

На стадии Record Source Вы выбираете поля, связываемые с элементами управления на форме.

Примечание Если на стадии Form Вы выбрали разметку Master/ Detail Data Form Wizard предлагает стадии Master Record Source и Detail Record Source. В этом случае на стадии Master Record Source действуйте в соответствии со следующей процедурой, затем щглкните кнопку Next и повторите ту же процедуру на стадии Detail Record Source.

Чтобы задать связываемые поля:

  1. В списке Record source выберите таблицу с нужными Вам полями. (Определяя источник главных записей для формы с разметкой Master/Detail, выберите сначала таблицу, записи в которой однозначно идентифицируются общим полем. А в качестве источника зависимых записей укажите таблицу, связанную с главной.)
  2. В списке Available fields показываются имена полей в выбранной таблице. Эти поля будут связаны с Вашей формой в том порядке, в каком они перечислены в списке Selected fields. Для перемещения полей между этими списками используйте кнопки, описанные ниже.

Перемещает поле, выбранное в списке Available fields, в список Selected fields. Это поле будет связано с элементом управления на форме.

Перемещает все поля из списка Available fields в список Selected fields. Они будут связаны с элементами управления на форме.

Перемещает поле, выбранное в списке Selected fields, в список Available fields. Это поле не будет связано с элементом управления на форме.

Перемещает все поля из списка Selected fields в список Available fields. Никакие поля с элементами управления на форме не связываются.

Примечание Data Form Wizard не связывает поля с двоичными данными.

  1. Если Вы хотите изменить порядок связываемых полей, выделите в списке Selected fields нужный элемент и сместите его, щелкая кнопки со стрелками.
  2. Для соргировки данных, отображаемых на форме, выберите какое-нибудь поле в списке Column to sort by.
  3. Если Вы выбрали для формы разметку Single record или Grid (Datasheet), щелкните кнопку Next, чтобы добавить на форму дополнительные элементы управления.

Если Вы выбрали для формы разметку Master/Detail и закончили выбор источников главных и зависимых записей, щелкните кнопку Next, чтобы определить отношение «главная таблица — зависимая таблица».

Стадия Record Source Relation

Если на стадии Form Вы выбрали разметку Master/Detail, Data Form Wizard перейдет на стадию Record Source Relation, где Вы сможете определить отношение «один-ко-многим» между источниками главных и зависимых записей.

Чтобы определить отношение между главной и зависимой таблицей:

  1. В списке Master выберите реляционное поле. Оно должно однозначно идентифицировать каждую запись в главной таблице.
  2. В списке Detail выберите реляционное поле.
  3. Щелкните кнопку Next, чтобы добавить на форму дополнительные элементы управления.

Стадия Control Selection

Нa стадии Control Selection мастер Data Form Wizard позволяет выбрать дополнительные элементы управления, размещаемые на форме. Любой код, необходимый для этих элементов, генерируется автоматически.

Чтобы поместить на форму дополнительные элементы управления:

  1. В разделе Available controls выберите элементы управления, которые Вы хотите добавить на форму.

Add button Позволяет добавлять новые записи в базу данных. Delete button Позволяет удалять записи из базы данных. Update button Позволяет обновить базу данных в соответствии с изменениями, произведенными на форме. Refresh button Позволяет обновить форму в соответствии с последними изменениями в базе данных. Close button Позволяет закрыть форму. Data navigator Позволяет «пролистывать» записи. 1, чтобы перейти на заключительную стадию.

На стадии Summary Вы можете просмотреть сводку выбранных Вами параметров и сохранить их.

Чтобы просмотреть и сохранить выбранные параметры:


  1. Для сохранения параметров в существующем профиле выберите его в раскрывающемся списке, а для сохранения параметров в новом профиле щелкните кнопку с многоточием и укажите имя файла. (Подробнее о профилях см. главу 5 «Знакомство с мастерами и средствами сборки».)
  2. Для просмотра параметров щелкните кнопку View Report. Если Вы хотите сохранить отчет, щелкните кнопку Save в диалоговом окне View Report.
  3. Щелкните кнопку Finish, чтобы включить форму в проект.

Data Form Wizard — средство, ускоряющее разработку формы с элементами управления, связанными с полями базы данных. Если Вы хотите самостоятельно создать такую форму, начните со вставки на нее элемента управления DataBinder или DataGrid.

Выборка набора записей

Для доступа к данным Visual J++ предоставляет в Forms Designer элемент управления DataSource, который позволяет подключаться к базе данных и извлекать наборы записей.

Примечание Для программной выборки набора записей можно также использовать объекты Connection, Command и Recordset. Но Forms Designer поддерживает только DataSource. О программировании с применением ADO-компонентов см. раздел «ADO Tutorial (VJ++)» в электронной документации Visual Studio (в части, относящейся к Microsoft ActiveX Data Objects).

Чтобы извлечь данные с помощью элемента управления DataSource:

  1. В окне Project Explorer дважды щелкните имя своей формы — она откроется в Forms Designer.
  2. На панели Toolbox активизируйте вкладку WFC Controls. Щелкните сначала элемент DataSource, затем — форму, чтобы добавить на нее этот элемент управления.

Примечание Поскольку элемент DataSource позволяет лишь считывать, но не отображать данные, он невидим в период выполнения Вашей программы.

  1. Для подключения к базе данных установите свойство connection-String элемента управления DataSource:
    • выберите DataSource на форме;
    • в окне Properties щелкните свойство connectionString, а затем — кнопку с многоточием, чтобы открыть диалоговое окно Data Link Properties.
  2. Для доступа к источнику данных ODBC:
    • перейдите на вкладку Provider и выберите Microsoft OLE DB Provider for ODBC Drivers;
    • перейдите на вкладку Connection. В первом разделе выберите переключатель Use’ data source name и укажите в списке свой источник данных. А во втором — введите имя пользователя и пароль (если требуется)

Для прямого доступа к MDB-файлу Microsoft Access без ODBC:

  • перейдите на вкладку Provider и выберите Microsoft Jet 3.51 OLE DB Provider;
  • перейдите на вкладку Connection. В первом разделе введите полное (вместе с путем) имя своей базы данных или щелкните кнопку с многоточием и найдите нужный файл. А во втором — введите имя пользователя и пароль (если требуется).
  1. Щелкните кнопку» ОК, чтобы установить связь с базой данных.
  2. Для создания запроса запишите в свойство commandText элемента управления DataSource необходимую Вам SQL-строку. Например, чтобы извлечь все записи из таблицы Products, введите Select * from Products.
  3. Если Вы хотите, чтобы набор записей можно было обновлять, установите свойство lockType как Optimistic.

Теперь, когда Вы считали набор записей, свяжите его с элементом управления DataBinder или DataGrid.

Связывание данных с элементом управления DataBinder

DataBinder связывает поле из набора записей со свойством другого элемента управления. В результате этому свойству автоматически присваивается значение поля из текущей записи. Следующая процедура показывает, как связать поле с текстовым свойством элемента управления Edit.

Чтобы связать элемент управления DataBinder с набором записей:

  1. Добавьте на форму элемент управления DataSource для выборки данных. О том, как это делается, см. предыдущий раздел.
  2. Вставьте на форму элементы управления Edit и DataBinder.

Примечание Как и DataSource, DataBinder в период выполнения не виден, поскольку он лишь связывает с данными другие элементы.

  1. Щелкните элемент DataBinder на форме и установите его свойство dataSource:
    • в окне Properties щелкните свойство dataSource;
    • раскройте список и выберите имя элемента DataSource. Свойство bindings элемента DataBinder идентифицирует связи, определенные на данный момент. Вы можете установить это свойство, используя либо страницу свойств элемента DataBinder, либо редактор его связей.

Чтобы определить связи, применяя страницу свойств:

  1. Щелкните элемент DataBinder на форме, а в окне Properties — кнопку Property Pages панели инструментов.
  2. В списке Data Field на странице свойств выберите имя нужного поля данных.
  3. В списке Control выберите имя элемента Edit.
  4. В списке Property выберите текстовое свойство (в данном случае — text).
  5. Щелкните кнопку Add — текстовое свойство связывается с полем данных.
  6. Если Вы хотите определить другие связи, повторите всю процедуру. Закончив, щелкните кнопку ОК.

Чтобы определить связи через редактор связей:

  1. Щелкните элемент DataBinder на форме, а в окне Properties — свойство bindings и кнопку с многоточием.
  2. Добавьте связь в редакторе связей, щелкнув кнопку Add. (Это нужно делать для каждой добавляемой связи.)
  3. Щелкните кнопку ОК.
  4. В окне Properties раскройте свойство bindings. Связи перечисляются по индексу — он определяет порядок, в котором были добавлены связи. (Индекс первой связи равен 0.)
  5. Теперь определите связь, раскрыв требуемый индекс.
  6. Щелкните fieldName и выберите в списке имя нужного поля данных.
  7. Щелкните target и выберите в списке имя элемента Edit.
  8. Щелкните propertyName и выберите в списке текстовое свойство (в данном случае — text).

Определив все связи, добавьте на форму элемент управления DataNavigator для перехода по записям. Кроме того, Вы можете указать формат для связей с числовыми данными, датами или Булевыми значениями.

Более подробную информацию об элементе управления DataBinder и примеры его программирования см. в разделе «Компонент DataBinder» главы 18 «Связывание с данными в WFC».

Связывание данных с элементом управления DataGrid

DataGrid связывается с полями из набора записей и отображает содержащиеся в них данные в виде таблицы. Он автоматически получает данные, как только Вы записываете в его свойство dataSource имя элемента управления DataSource.

Данные, отображаемые в DataGrid, всегда синхронизируются с данными в наборе записей (и наоборот). Свойства cursorType и lockType набора записей определяют, будут ли данные в этом наборе динамически отражать состояние базы данных и можно ли его модифицировать.

Чтобы связать элемент управления DataGrid с набором записей:

  1. Добавьте на форму элемент DataSource, который считывает данные. О том, как это делается, см. раздел «Выборка набора записей» ранее в этой главе.
  2. Добавьте на форму элемент DataGrid.
  3. Установите свойство dataSource элемента DataGrid:
    • в окне Properties щелкните свойство dataSource;
    • в раскрывающемся списке выберите имя элемента DataSource. Заметьте, что DataGrid показывает данные даже на этапе разработки. Текущую запись в наборе идентифицирует маркер в заголовке соответствующей строки сетки (таблицы). Для ускорения перехода по строкам в сетке можно добавить на форму элемент DataNavigator.

О программном управлении элементом DataGrid см. Microsoft Visual J++ 6.0 WFC Library Reference, Part 1 («DataGrid Control» в пакете com.ms.wfc.data.ui).

Обращение к свойствам колонки

Устанавливая свойства элемента DataGrid в окне Properties, Вы настраиваете его внешний вид и функциональность. Свой набор свойств есть и у каждой колонки сетки; Вы обращаетесь к нему через свойства самой сетки.

Чтобы получить доступ к свойствам колонки:

  1. В окне Properties раскройте свойство columns элемента DataGrid. Колонки перечисляются по индексу в сетке — он определяет порядок, в котором показываются колонки. (Индекс первой колонки равен 0.)
  2. Теперь, чтобы увидеть свойства колонки, раскройте нужный индекс. По умолчанию DataGrid содержит столько колонок, сколько полей в соответствующем наборе записей, причем в том же порядке. Но при желании можно добавить, удалить или переупорядочить колонки, а также задать определенный формат для колонок с датами и числовыми или Булевыми значениями.

Добавление, удаление и переупорядочение колонок

С этой целью в DataGrid предусмотрен редактор колонок. Чтобы добавить, удалить и переупорядочить колонки в сетке:

  1. Откройте редактор колонок, щелкнув сначала свойство columns элемента DataGrid в окне Properties, а затем кнопку с многоточием.
  2. Для добавления колонки щелкните кнопку Add.

Примечание Только что добавленная колонка ни с,чем не связана. Поэтому укажите в ее свойстве boundFieldName имя поля из набора записей. (О том, как получить доступ к свойствам колонки, см. предыдущий раздел.)

  1. Для удаления колонки щелкните кнопку Remove.

Примечание Если Вы хотите лишь временно скрыть, а не окончательно удалить колонку из сетки, установите ее свойство visible как false.

  1. Для переупорядочения колонок выберите колонку, которую Вы хотите переместить, и щелкайте кнопки Up или Down.
  2. Закончив все операции, щелкните кнопку ОК.

Связывая данные с DataBinder или DataGrid, Вы можете задать определенный формат отображения дат, а также числовых и Булевых значений. У каждой связи, поддерживаемой DataBinder, и у каждой колонки в DataGrid имеется свойство dataFormat, которое и позволяет определить формат.

Чтобы получить доступ к свойству dataFormat:

    Если Вы используете DataBinder, раскройте его свойство bindings в окне Properties.

Если Вы используете DataGrid, раскройте его свойство columns в окне Properties.

  • Связи или колонки перечисляются по индексу — его значение определяет их порядок в элементе управления, к которому они относятся. (Индекс первой связи или колонки равен 0.)
  • Раскройте индекс нужной связи или колонки и щелкните свойство dataFormat.
  • Чтобы отформатировать числовые значения:

    1. Установите свойство dataFormat как NumberDataFormat.
    2. Раскройте свойство dataFormat и задайте для свойства format строку, определяющую числовой формат. Информацию на эту тему см. в Microsoft Visual J+ + 6.0 WFC Library Reference, Part 1 («NumberDataFormat.setFormat» в пакете com.ms.wfc.data.ui).

    Чтобы отформатировать значения дат (или времени):

    1. Установите свойство dataFormat как DateDataFormat.
    2. Раскройте свойство dataFormat, щелкните свойство format и выберите из списка одно из следующих значений.

    Даты форматируются в соответствии с параметрами Long Date в диалоговом окне Regional Settings Properties, открываемом из Windows Control Panel. (Длинный формат даты изначально предлагается в виде, например, Monday, March 9, 1998.)

    Формат по умолчанию. Даты форматируются в соответствии с параметрами Short Date в диалоговом окне Regional Settings Properties,

    открываемом из Windows Control Panel. (Краткий формат даты изначально предлагается в виде, например, 3/9/98.)

    Время форматируется в соответствии с параметрами Long Time в диалоговом окне Regional Settings Properties, открываемом из Windows Control Panel. (Длинный формат времени изначально предлагается в виде, например, 2:45:05 P.M.)

    Даты или время отображаются в нестандартном формате. Присвойте строку, определяющую этот формат, свойству customFormat. Информацию на эту тему см. в Microsoft Visual J+ + 6.0 WFC Library Reference, Part 1 («DateDataFormat.setCustomFormat» в пакете com.ms.wfc.data.ui).

    Примечание Значение свойства customFormat используется, только когда свойство format установлено как Custom. Иначе значение свойства customFormat просто игнорируется.

    Чтобы отформатировать Булевы значения:

    1. Установите свойство dataFormat как Boolean Data Format.
    2. Раскройте свойство dataFormat и установите следующие свойства:
      • falseValue — определяет строку, показываемую, когда значение равно false. Строка по умолчанию — False;
      • nullValue — определяет строку, показываемую, когда значение равно null. Строка по умолчанию — (null);
      • trueValue — определяет строку, показываемую, когда значение равно true. Строка по умолчанию — True.


    Переход по записям

    Элемент управления DataNavigator позволяет осуществлять смену текущей записи в наборе записей. Используйте этот элемент совместно с другим элементом, связанным с данными, — например, DataBinder. Последний связывает поле из набора записей со свойством другого элемента управления. Это свойство получает данные из текущей записи, каковой по умолчанию является первая запись в наборе. Используя DataNavigator, связанный с тем же набором записей, можно перейти к другой записи.

    Чтобы переходить по записям в наборе с помощью элемента управления DataNavigator:

    1. Добавьте на форму элемент DataSource, который считывает данные. О том, как это делается, см. раздел «Выборка набора записей» ранее в этой главе.
    2. Свяжите с DataBinder и Edit данные из набора записей, сопоставленного с DataSource. О том, как это делается, см. раздел «Связывание данных с элементом управления DataBinder» ранее в этой главе.
    3. Добавьте на форму элемент DataNavigator.
    4. Укажите в его свойстве dataSource имя элемента DataSource.
    5. Для «пролистывания» данных используйте кнопки элемента Data-Navigator.

    Доступ к данным в Windows-формах с использованием элемента управления DataGrid

    В данном разделе объясняется последовательность создания Windows-формы и отображение данных, хранящихся в MS SQL Server. В качестве элемента отображения данных используется сетка (DataGrid).

    Один из наиболее общих сценариев в разработках прикладных программ — отображение данных о форме посредством элемента управления DataGrid, сетки данных. Дальнейший пример иллюстрирует простую Windows-форму, которая отображает в сетке содержимое несвязанной таблицы базы данных. Сетка позволяет редактировать данные, и затем с помощью других объектов вы сможете внести сделанные изменения в базу данных. Этот пример иллюстрирует основные процедуры, которые нужно использовать при доступе к данным в Windows-формах.

    Для того чтобы реализовать данный пример, нужно иметь доступ к базе данных Pubs, которая автоматически устанавливается при инсталляции MS SQL Server. Вам предстоит выполнить следующие шаги:

    □ создать Windows-проект и, соответственно, Windows-фому;

    □ создать соединение с базой данных Сonnection;

    □ создать объект доступа к базе данных DataAdapter;

    □ создать и сконфигурировать набор данных DataSet;

    □ добавить на форму элемент управления DataGrid и связать его с набором данных DataSet;

    □ добавить программный код для заполнения набора данных DataSet;

    □ добавить программный код, который вернет в базу данных все изменения пользователя.

    По завершению этого примера вы должны получить форму, которая выглядит подобно приведенной на рис 4.6.

    Рис. 4.6. Форма с элементом управления DataGrid

    Создание проекта и формы

    Для создания проекта и формы сделайте следующие шаги.

    1. Выберите меню File,укажите пункт New и затем выберите Project.

    2. В левой области открывшегося окна Project Types выберите Visual Basic Projectsили Visual C# Projects изатем в правой области Templatesщелкните на Windows Application.

    3. Если у вас уже открыто какое-либо приложение, то необходимо установить переключатель Close Solution,чтобы автоматически закрыть его.

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

    4. Когда вы назначили имя проекта, щелкните кнопку ОК.

    Visual Studio создаст новый проект и отобразит Windows-форму в окне дизайнера.

    4.3.2. Создание набора данных DataSet

    Основным способом работы с базами данных в Windows-формах является использование набора данных DataSet. В приложениях DataSet — это некий контейнер (кэш), содержащий интересующие записи. Чтобы создать ‘ набор данных нужно выполнить ряд шагов.

    □ Создать элементы, обеспечивающие доступ к базе данных: Connection и DataAdapter. Адаптер доступа к данным фактически содержит SQL-запросы, используемые для чтения, добавления, удаления и обновления информации в базах данных. Мастер поможет вам выполнить подключение к базе данных и сформировать набор необходимых запросов.

    □ Создать схему данных. На этом этапе вы будете использовать Visual Studio для создания структуры DataSet, включающей набор таблиц и связей между ними.

    Важно, чтобы вы прошли последовательно все процедуры примера из данного раздела. В противном случае вы не получите набора данных DataSet, который будет использоваться не только в этом, но и в последующих примерах.

    Создание и конфигурирование элементов доступа к данным Connection и DataAdapter

    Чтобы получить данные на компьютер пользователя необходимо создать соединение с базой данных и элемент DataAdapter, который содержит SQL-запросы и используется для заполнения данными элемента DataSet. Для создания и конфигурирования этих элементов будет использоваться соответствующий мастер Visual Studio.

    Для создания элементов Connection и DataAdapter выполните следующие действия.

    1. Из вкладки Dataокна Toolboxперетащите мышью на форму объект OleDbDataAdapter (рис. 4.7).

    Рис. 4.7. Объект OleDbDataAdapter в окне Toolbox

    Запустится Data Adapter Configuration Wizard,который поможет вам создать и сконфигурировать Два объекта Connection и DataAdapter.

    2. В мастере сделайте следующие действия.

    • На второй странице выберите существующую (или создайте) связь с таблицей Pubs базы данных SQL Server (рис. 4.8).

    • На третьей странице определите, что вы хотите использовать SQL- запросы для доступа к базе данных Use SQL statements(рис. 4.9).

    Рис. 4.8. Выбор или создание соединения с базой данных

    Рис. 4.9. Выбор способа доступа к данным

    • На четвертой странице создайте следующий SQL-запрос:

    SELECT authors.* FROM authors

    • Для помощи в создании SQL-запроса, щелкните на кнопку Query Builderдля вызова построителя запросов (рис. 4.10).

    • В построителе запросов выберите в списке доступных таблиц базы данных pubs таблицу authors и нажмите кнопку Add, щелчком на кнопке Close закройте окно Add Table (рис. 4.11).

    • В главном окне построителя запросов установите флажок All Columns. Это значит, что вы желаете получить значения всех столбцов исходной таблицы и нажмите кнопку ОК (рис. 4.12).

    Рис. 4.10. Вызов построителя запросов

    Рис. 4.11. Выбор таблицы

    Рис. 4.12. Выбор столбцов

    • В окне Data Adapter configuration Wizard появится текст сформированного запроса (рис. 4.13).

    • В пятом окне мастер конфигурации покажет перечень сгенерированных им элементов объекта DataAdapter (рис. 4.14).

    • Нажмите на кнопку Finish для завершения работы мастера. После этого объекты оleDbConnection1 и оleDbDataAdapter1 будут добавлены в вашу форму.

    3. Мастер создаст объект оleDbConnection1, содержащий информацию о том, как получить доступ к базе данных, и объект оleDbDataAdapter1, который содержит запрос, указывающий, какие колонки какой таблицы требуется получить из базы данных. Причем оба объекта не содержат самих данных. Следующим шагом необходимо создать еще один объект, который и примет выбранные из базы данные.

    Рис. 4.13. Текст запроса

    Рис. 4.14. Перечень элементов, созданных мастером конфигурации адаптера

    Создание объекта DataSet

    После того, как вы задали к какой базе данных необходимо подключиться и определись с информацией, которую желаете получить (через SQL-запросы адаптера данных), вы можете создать объект, который будет содержать сами данные — DataSet. При этом Visual Studio сгенерирует набор данных автоматически, базируясь на запросе, который был определен в адаптере данных.

    Для создания набора данных выполните следующие действия.

    1. В меню Data выберите пункт Generate DataSet.

    После этого появиться диалоговое окно Generate Dataset(рис. 4.15).

    Рис. 4.15. Диалоговое окно Generate DataSet

    2. В появившемся окне вам предложено создать новый DataSet с именем DataSetl, который будет принимать из oleDbDataAdapterl таблицу authors.

    3. Убедитесь, что установлен флажок Add this dataset to the designer,и нажмите кнопку ОК.

    В результате Visual Studio сгенерирует класс DataSet1 и схему, которая его описывает — файл DataSet1.xsd. Этот файл можно увидеть в окне Solution Explorer.

    Витоге Visual Studio добавит к форме компонент DataSet1.

    Итак, вы сделали абсолютно все, чтобы получить требуемую информацию из базы данных (при этом не написали ни строчки программного кода). Теперь необходимо добавить на форму элемент, который позволит отобразить полученную информацию — DataGrid.

    4.3.3. Добавление элемента управления DataGrid для отображения данных

    В этом разделе вы добавите на форму традиционный элемент управления DataGrid, который обычно используется для отображения всех записей, содержащихся в наборе данных. Как альтернативный вариант отображения информации можно использовать элементы управления TextBox, однако это потребует добавления на форму элементов, позволяющих выполнять навигацию (перемещение) по записям набора данных. При использовании DataGrid в этом нет необходимости.

    Для добавления элемента управления DataGrid на форму выполните следующие действия.

    1. Щелкните левой кнопкой мыши в любом свободном месте формы Forml,чтобы форма стала активной и получила фокус.

    2. Из вкладки All Windows Formsокна Toolbox,перетащите элемент DataGrid на форму (рис. 4.16).

    Рис. 4.16. ЭлементDataGrid в окне Toolbox

    3. Нажмите клавишу для перехода в окно свойств элемента DataGrid.

    4. В свойстве DataSource выберите DataSet1 в качестве источника данных (не выбирайте DataSetll.authors).

    5. В Свойстве DataMember выберите таблицу authors.

    Установив эти два свойства, вы фактически связали DataGrid с таблицей authors из набора данных DataSet1. После этих действий в сетке данных DataGrid появились столбцы с заголовками полей выводимых данных.

    6. Измените размер DataGrid так, чтобы в сетке данных было видно несколько колонок и строк (рис. 4.17).

    Рис. 4.17. Расположение элемента DataGrid на форме

    4.3.4. Заполнение элемента управления DataGrid данными


    Несмотря на то, что между элементом DataGrid и набором данных DataSet на этапе проектирования установлена связь, заполнение сетки данными автоматически не происходит. Вы должны инициировать этот процесс, вызвав соответствующие методы в программном коде.

    Для заполнения DataGrid данными необходимо выполнить следующие действия.

    1. Из вкладки Windows Forms окна Toolbox перенесите на форму элемент управления Button.

    2. Измените свойство кнопки Text с Button1 на Загрузить.

    3. Двойным щелчком на кнопке создайте заготовку модуля обработки события Click.

    1. Очистите набор данных dataSet11 методом Сlear, затем заполните его данными, используя метод Fill элемента oleDbDataAdapter1.

    Следующий программный код (листинг 4.2) иллюстрирует вызов этих методов.

    Private Sub Buttonl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click

    private void Button1.Click(object sender, System.EventArgs e)

    Как видите, программные коды на Visual Basic и на С# практически ничем не отличаются (за исключением некоторых синтаксических особенностей С#). Запустите ваше приложение, нажмите кнопку Загрузить — и вы увидите результаты работы только что написанной программы (рис. 4.18).

    Рис. 4.18. Элемент DataGrid с загруженными в него данными

    Итак, в результате проделанной работы создана Windows-форма, в которой отображена информация, полученная из базы данных.

    Если вас не совсем устраивает внешний вид элемента DataGrid, можете поэкспериментировать с его «раскраской». Для этого достаточно щелкнуть правой кнопкой мыши в любом месте DataGrid и из появившегося меню выбрать пункт Auto format.В открывшемся окне (рис. 4.19) можно выбрать любой из предложенных стилей и, запустив приложение, полюбоваться «своими» дизайнерскими способностями.

    Рис. 4.19. Окно форматирования Auto Format элемента DataGrid

    Дата добавления: 2020-02-15 ; просмотров: 159 ; ЗАКАЗАТЬ РАБОТУ

    Обзор систем контроля и управления доступом к неструктурированным данным — Data Access Governance (DAG)

    Как осуществлять контроль и управление доступом к неструктурированным данным? Рассмотрим системы, выполняющие эти функции (Data Access Governance — DAG), в контексте мирового и российского рынков. В статье дается определение базовой терминологии, история возникновения и развития DAG, приводятся краткие обзоры наиболее популярных решений.

    Введение

    Одной из наиболее насущных проблем в сфере ИТ сегодня, в эпоху больших данных, является бурный рост объемов неструктурированного контента. Практически в любом корпоративном центре обработки данных (ЦОД) есть файловые сервера, корпоративные порталы, папки Microsoft Exchange, сетевые и облачные хранилища, в которых находится множество различных документов, в том числе и с содержанием критически важной информации. При этом многократный рост объемов и нарастающее разнообразие хранимой и обрабатываемой информации существенно усложняют задачу управления этими данными.

    Согласно исследованиям Gartner, приведенным в отчете компании EY — Big Data & Analytics, почти 80% корпоративных данных являются неструктурированными. Это означает, что данные хранятся в неподдающемся управлению формате, в котором отсутствует формальное назначение прав приложением или процессом. Процентная доля неструктурированных данных сохраняется, но при этом объем данных постоянно растет. По оценкам многих организаций, ежегодный прирост объема данных в файловых системах составляет 30-40%. Кроме того, до 60% корпоративных хранилищ занимает информация, не приносящая организации никакой пользы: многочисленные копии документов, файлы, к которым никто не обращался несколько лет, данных больших объемов, папок с нерабочим контентом и прочий «корпоративный мусор».

    Управление такими массивами данных вызывает затруднения не столько из-за их объема, сколько из-за непрозрачности и отсутствия полноценной системы контроля над ними, в особенности за файлами с критичными данными. Зачастую владельцы бизнеса, руководители подразделений и ИТ- и ИБ-специалисты затрудняются ответить на вопросы: на каких серверах какая информация хранится, кто является владельцем этих данных, кто и как их использует. Неэффективное управление информацией ведет к увеличению рисков для бизнеса: хранение персональных данных и прочей конфиденциальной информации на общедоступных информационных ресурсах, появление подозрительных пользовательских зашифрованных архивов, нарушения политик доступа к важной информации и т. д. Таким образом, управление доступом к неструктурированным данным становится проблемой каждой крупной компании.

    Штатные средства операционных систем имеют ограниченный набор функций и не позволяют получить такую ​​информацию быстро и в полном объеме, а ручное назначение и отслеживание прав доступа требует значительных человеческих и временных затрат и не гарантирует успешного результата.

    Почти все лидирующие на российском рынке DLP-системы несколько лет назад получили функции обнаружения и анализа структурированных и неструктурированных данных. Однако они не ориентированы на управление этими данными, а являются по сути лишь инструментами аудита хранения этих данных и минимизации рисков, связанных с их случайным разглашением.

    Поэтому на рынке и стали появляться специализированные решения для контроля и управления доступом к неструктурированным данным (DAG-решения).

    Что такое контроль и управление доступом к неструктурированным данным?

    Встречаются различные англоязычные аналоги наименования решений для контроля и управления доступом к неструктурированным данным, такие как Data Access Governance (DAG), Unstructured Data Management (UDM), Data Security Governance (DSG). В этом обзоре мы будем придерживаться аббревиатуры DAG как наиболее распространенной.

    Согласно концепции Gartner, решения для контроля и управления доступом к неструктурированным данным являются сегментом более крупного рынка защиты данных — Data-Centric Audit and Protection (DCAP). Системы класса DAG также относят к рынку программного обеспечения для аналитики файлов — File Analysis (FA).

    Системы класса DAG представляют собой комплексные решения по управлению доступом к неструктурированным данным и контролю за активностями с этими данными, которые позволяют выявить, категоризировать и классифицировать ценные с коммерческой точки зрения данные, предоставляя возможность централизованно управлять, а также контролировать к ним доступ с применением целостной системы административных процессов, политик и руководств.

    Системы класса DAG направлены на защиту критичных данных, отвечают за выдачу прав доступа к ресурсам, контролируя каждую из операций, способных привести к неправомерному использованию данных. Все критичные данные должны иметь владельцев, которые обязаны нести ответственность за их сохранность. В зависимости от принятых в компании политик, контроль за данными и выдача прав доступа к ним осуществляется владельцами и/или офицером информационной безопасности.

    Принцип работы DAG основан на сборе и анализе метаданных. Системой анализируется содержимое файлов и проводится их категоризация, классификация. Собирается информация о группах и пользователях из Active Directory, LDAP, NIS, SharePoint, о разрешениях на доступ к файлам. Системой проводится аудит доступа — анализируется, какие пользователи, когда и с какими данными работали и как именно их использовали.

    Объектами контроля систем класса DAG могут быть:

    • Файловые сервера
    • Сетевые хранилища
    • Корпоративные и совместные порталы
    • Ящики электронной почты
    • Папки в облачных сервисах

    С помощью систем класса Data Access Governance решаются следующие задачи информационной безопасности:

    • Контроль над действиями пользователей с данными, мониторинг активностей с ними.
    • Контроль над массовой и аномальной активностями.
    • Контроль за доступом к критичным данным и их распространением.
    • Реализация модели наименьших привилегий в области прав доступа к ресурсам.
    • Получение актуальной матрицы доступа в разрезе пользователя и ресурса.
    • Возможность отслеживать в автоматическом режиме исполнение политики разграничения прав доступа и политики распространения критичных данных.
    • Возможность получать уведомления о критичных событиях в режиме реального времени.

    При этом основными функциями систем Data Access Governance являются: контроль активностей с данными; управление правами доступа к ресурсам, реагирование на события и отчетность. Расскажем о каждом подробнее.

    Контроль активностей с данными

    К данной группе функций систем DAG относится:

    • Поиск данных по различным параметрам.
    • Автоматическая идентификация данных по заданным критериям и последующие действия с ними по архивированию или удалению для высвобождения дискового пространства.
    • Категоризация данных (контентный и/или поведенческий анализ) и классификация данных.
    • Мониторинг всех действий пользователей при работе с данными.
    • Обнаружение аномальной активности пользователей с данными.
    • Анализ действий с данными.

    Примеры использования

    1. Определение, где находятся критичные данные компании средствами контентного поиска и поведенческого анализа, например:
      • Подпадающие под соответствие ФЗ №152, ФЗ № 323, стандарта PCI DSS, требований SOX и др.
      • Подпадающих под действие режима коммерческой тайны
      • Проектная документации
      • Документы, принадлежащие департаменту финансов
      • Коммерческие предложения
    2. Мониторинг и контроль всех действий с данными на файловых ресурсах (открытие, создание, изменение, удаление, пр.), что поможет ответить, например, на следующие вопросы:
      • Кто может читать письма генерального директора?
      • Какие конфиденциальные данные доступны для всех?
      • Кто изменял важные записи, коммерческие предложения?
    3. Поиск и автоматическое обнаружение данных по заданным критериям:
      • Данные большого объема
      • Устаревшие данные
      • Файлы определенного разрешения
      • Потерянные, удаленные папки и файлы
      • Папки с нерабочими файлами (музыка, видео, фото)
      • Неиспользуемые ресурсы и директории
      • Конфиденциальная информация
    4. Анализ всех операций с данными:
      • Совершенных определенным сотрудником
      • Произведенных в определенной папке
    5. Обнаружение и получение оповещений об аномальной активности с данными:
      • Копирование информации при увольнении
      • Массовое удаление файлов
      • Действия с данными, связанные с вирусными программами

    Управление правами доступа к ресурсам

    К данной группе функций систем DAG относится:

    • Анализ существующих прав доступа пользователей, выявление неиспользуемого и избыточного доступа и ограничение доступа к ресурсам в соответствии с принципом наименьших привилегий.
    • Запрос на предоставление/пересмотр прав доступа через портал самообслуживания.
    • Автоматизированный процесс выдачи прав доступа пользователям.
    • Пересмотр прав доступа к ресурсам на периодической или событийной основе.
    • Определение и назначение владельцев данных, ответственных за хранение и обработку данных.
    • Симуляции доступа, «что, если?». Моделирование последствий различных действий с правами доступа.
    • Рекомендации по накопленной статистике по сокращению избыточного доступа, без негативного влияния на выполнение сотрудником своих прямых обязанностей

    Примеры использования

    1. Автоматизированный процесс предоставления/изменения прав доступа к ресурсу на основании:
      • Одобренного решения на запрос
      • Пересмотра прав доступа.
    2. Уведомление сотрудника отдела информационной безопасности:
      • Об изменении прав доступа к конфиденциальным данным
      • Получение доступа в обход системы DAG.
    3. Пересылка в режиме реального времени оповещений по почте или предупреждений в SIEM о неправомерных действиях с правами доступа.
    4. Использование портала самообслуживания:
      • Для запроса нового доступа к ресурсу
      • Для запроса по пересмотру прав доступа (смена должности, департамента)
      • Для проведения плановой аттестации доступа владельцем ресурса.

    ИТ-департаменту может быть недостаточно информации для принятия верного решения по выдаче прав доступа и корректному контролю за действиями с данными. Только руководители бизнес-подразделений могут точно определить ценность информации и понимать, кто должен иметь к ней доступ в соответствии со своими должностными обязанностями. Поэтому возникают дополнительные задачи.

    1. Делегирование ответственности по управлению правами доступами на бизнес-пользователей:
      • Назначение владельцев данных
      • Ведение каталога файловых ресурсов с привязкой к бизнес-владельцам.
    2. Пересмотр прав доступа (устранения избыточных прав):
      • к папкам;
      • корпоративным порталам;
      • почтовым ящикам;
      • папкам в облачных хранилищах.
    3. Оперативное и наглядное получение информации:
      • список прав доступа для конкретного сотрудника/группы;
      • список сотрудников, имеющих права доступа к конкретной папке/файлу.
    4. Возможность смоделировать последствия действий:
      • К каким папкам сотрудник получит доступ, если добавить его в группу.
      • К каким папкам сотрудник потеряет доступ, если удалить его из группы.

    Реагирование на события и отчетность

    К данной группе функций систем DAG относится:

    • Различные настроенные оповещения в режиме реального времени.
    • Помощь в расследовании инцидентов ИБ.
    • Наглядное отображение информации в виде дашбордов, графиков.
    • Формирование отчетов в различных разрезах.

    Примеры использования

    1. Реагирование на обнаружение активности по обращению к критичным данным от пользователей в нерабочее время, выходные дни или праздники.
    2. В качестве владельца данных получать оповещения в режиме реального времени об удалении и изменении данных, определять устаревшие и неиспользуемые ресурсы и пр.
    3. Расследование инцидентов, связанных с утечкой конфиденциальных данных по вине сотрудника:
      • Наглядное отображение статистики доступа пользователя к папкам, его активность со временем.
      • Если известно только имя файла, возможен поиск по всем файловым ресурсам для получения информации по операциям со всеми файлами с похожим именем, с отображением полного пути к файлу и имени пользователя.
    4. Формирование отчетов, например:
      • об использовании критичных данных в любых разрезах;
      • о ресурсах, которые не используются более года;
      • о пользователях, которые не заходили в AD более года;
      • о папках, занимающих много места и не предназначенных для хранения на серверах компании и др.

    Мировой рынок систем контроля и управления доступом к неструктурированным данным

    Исследовательская компания Gartner в своем отчете Market Guide for Data-Centric Audit and Protection 2020 проанализировала глобальный рынок Data-Centric Audit and Protection и перечислила его представителей, разделив их на несколько сегментов: решения для контроля баз данных (DataBase), решения для контроля файловых хранилищ (File Storage), решения для работы с Big Data, решения контроля для SaaS и IaaS.

    Рисунок 1. Диаграмма Gartner распределения вендоров рынка DCAP

    В статье мы будем рассматривать представителей рынка, которые, по классификации Gartner, специализируются на файловой аналитике и осуществляют управление доступом к неструктурированным данным — Data Access Governance (решения, захватывающие сегмент File Storage на рисунке 1):

    • IBM
    • Imperva
    • Oracle
    • NextLabs
    • Informatica
    • Protegrity
    • AvePoint
    • Fasoo
    • SailPoint
    • STEALTHbits
    • Varonis
    • Veritas
    • Quest

    Как можно увидеть, выбор поставщиков на мировом рынке DAG-решений широк.

    Согласно отчету Data Governance Market by Component (Solution and Service), Application (Incident Adjustment Management, Risk Management, Sales & Marketing Optimization), Deployment, Vertical, Business Function & Region — Global Forecast to 2021, опубликованному MarketsandMarkets, рынок Data Governance, по прогнозам, вырастет с 863,2 млн долларов (2020 г.) до 2234,7 млн долларов к 2021 году. При этом среднегодовой темп роста (CARG) в течение прогнозируемого периода равен 21%. В отчете отмечается, что основными факторами, движущими рынком Data Governance, являются необходимость соблюдения требований по безопасности регуляторов, а также совершенствование и поддержание стратегического управления рисками. Согласно прогнозу на 2020-2020 годы, ожидается, что основная доля рынка Data Governance придется на страны Северной Америки.

    Основными игроками рынка Data Governance, по данным MarketsandMarkets, являются Collibra, Inc. (Брюссель, Бельгия), Informatica Corporation (Калифорния, США), SAS Institute Inc. (Северная Каролина, США), IBM (Нью-Йорк, США), Oracle (Калифорния, США), SAP SE (Вальдорф, Германия), TIBCO Software Inc. (Калифорния, США), Talend Inc. (Калифорния, США), Information Builders (Нью-Йорк, США), Varonis Systems Inc. (Нью-Йорк, США), и Orchestra Networks (Париж, Франция).

    К сожалению, мы не располагаем данными об объемах продаж и долях рынка этих компаний и поэтому не сможем в рамках данной статьи провести их ранжирование.

    Российский рынок систем контроля и управления доступом к неструктурированным данным

    Российский рынок Data Access Governance на данный момент пока на стадии развития. В основном представлены решения западных вендоров. К российским решениям, пожалуй, можно отнести только продукт НАУТИЛУС от компании Cross Technologies, который является OEM решением модуля DatAdvantage производства компании Varonis Systems с полностью русскоязычным интерфейсом. В настоящий момент рассматривается поданная заявка на внесение данного решения в реестр российского ПО. Также стоит отметить, что некоторые российские решения класса IDM частично имеют функциональность DAG решений в части управления доступом к данным, хранящихся в разделяемых папках и порталах Microsoft SharePoint, без функциональности по категоризации и контроля за активностями с этими данными. Это такие системы, как 1IDM (подробнее с продуктом можно ознакомиться здесь) и КУБ (подробнее с продуктом можно ознакомиться здесь).

    Среди западных продуктов на российском рынке представлены решения следующих вендоров:

    • Netwrix
    • SailPoint
    • Varonis
    • Veritas
    • One Identity
    • STEALTHbits

    Стоит отметить, что решение Identity Manager — Data Governance Edition компании One Identity (бывший Dell) для предоставления функциональности по управлению правами доступа к ресурсам использует свой IDM-движок (One Identity Management) для неструктурированных данных, хранящихся на файловых серверах, что позволяет считать этот продукт полноценной DAG-системой.

    Краткий обзор продуктов, представленных на российском рынке, приведен ниже.

    Краткий обзор продуктов, предназначенных для контроля и управления доступом к неструктурированным данным


    Netwrix Auditor

    Компания Netwrix предлагает продукт Netwrix Auditor для детализированного и полного контроля доступа к неструктурированным данным в корпоративных сетях.

    Netwrix Auditor — комплексное решение для аудита ИТ-инфраструктуры, анализа поведения пользователей и управления доступом к данным. Продукт предоставляет информацию по каждому инциденту: кто, что, в какой системе и когда вносил изменения, а также кто и к каким данным имеет доступ.

    Использование Netwrix Auditor позволяет предотвратить утечки данных, вызванные превышением полномочий, помогает пройти аудит и автоматизировать отчетность по аудиту изменений. Netwrix Auditor поддерживает широкий спектр систем и приложений: Microsoft Active Directory, Microsoft Exchange, Windows Server, файловые сервера, Microsoft SharePoint, VMware, SQL Server, системы хранения EMC2 и NetApp и др.

    Преимущества:

    • Непрерывный мониторинг сети и полный контроль за событиями в ИТ-инфраструктуре.
    • Отслеживание доступа к неструктурированным данным.
    • Контроль прав доступа и защита уязвимых данных.
    • Обнаружение и анализ аномального поведения пользователей, подозрительной активности на ранних стадиях, используя Enterprise Overview Dashboards.
    • Соответствие ИБ-нормативам и оптимизация ИТ-службы.
    • Инструмент для проведения расследований ИБ.
    • Двухуровневая система хранения данных аудита (БД SQL + файловый архив) AuditArchive.

    Подробнее с продуктом Netwrix Auditor можно ознакомиться здесь.

    SailPoint SecurityIQ

    SailPoint SecurityIQ — это система контроля и управления доступом к неструктурированным данным, которая позволяет выявить ценные/критичные для компании данные, предоставляя возможность централизованно управлять, контролировать, а также определять, кто из пользователей имеет к ним доступ и как они используются (например: чтение, изменение, перемещение, удаление и пр.). Решение позволяет упростить процесс предоставления пользовательского доступа к неструктурированным данным на протяжении всего цикла существования каждой учетной записи в организации, устанавливает контроль за данными, повышает продуктивность сотрудников, уменьшая время, потраченное на диагностику, исследования и на задачи по администрированию данных, а также помогает предприятиям соблюдать требования законодательства посредством предоставления информации для формирования доказательной базы при проведении аудита.

    Преимущества:

    • Обеспечивает всеобъемлющий поиск, категоризацию и мониторинг неструктурированных данных, хранящихся как внутри организации, так и в облаке.
    • Управление жизненным циклом данных, определение владельцев данных административным путем или путем проведения голосования.
    • Позволяет обнаружить редко используемые, неиспользуемые или устаревшие данные на основании сведений об их создании, размещении и характере использования, а также оповещать их владельцев о необходимости очистки дисковых ресурсов или расширения периода актуальности данных.
    • Автоматизация процессов архивирования и очистки дискового пространства.
    • Возможность совместного использования SailPoint SecurityIQ и решения класса IGA SailPoint IdentityIQ как единого комплекса по управлению доступом к структурированным и неструктурированным данным, тем самым обеспечивая централизованное администрирование и управление всеми приложениями и данными предприятия.

    Подробнее с продуктом SecurityIQ можно ознакомиться здесь.

    Varonis Data Governance Suite

    Varonis Systems предлагает комплексное решение Varonis Data Governance Suite, предоставляя организациям возможность управлять доступом к корпоративной информации, отслеживать каждую операцию по работе с данными, выявлять владельцев данных и категоризировать информацию. Varonis Data Governance Suite предлагает всеобъемлющее и эффективное решение за счет использования масштабируемого и расширяемого каркаса метаданных. Решение позволяет не только систематизировать доступ к неструктурированным массивам информации, но и оперативно оповещать администратора об аномальной активности пользователей, а также моделировать ситуацию с изменениями прав доступа по принципу «что, если».

    Преимущества:

    • Varonis DatAdvantage — модуль для автоматизированного контроля данных и управления доступом к файловым хранилищам, Sharepoint-порталам, почтовым ящикам Exchange и папкам общего доступа. Визуально отображает полную картину прав доступа, позволяет проводить аудит использования данных, выявлять их «владельцев» и формировать рекомендации по сокращению избыточного доступа.
    • Varonis DataPrivilege — дополнительный веб-интерфейс, который позволяет делегировать управление правами доступа к данным специалистам, отвечающим за них. Снижает нагрузку на ИТ-персонал и не требует реструктуризации ИТ-инфраструктуры.
    • Varonis Data Classification Framework — модуль контекстного поиска. Выявляет конфиденциальную информацию, хранимую на файловых серверах компании, показывая ее в срезе существующих прав доступа и статистики использования.

    Подробнее с продуктом Varonis Data Governance Suite можно ознакомиться здесь.

    Veritas Data Insight

    Решение Veritas Data Insight компании Veritas предназначено для отслеживания доступа и упорядочивания, структурирования и анализа информации. Продукт помогает своевременно выявлять информационные риски, оказывает помощь в их устранении, способствует соблюдению нормативных требований, чем позволяет любой организации воплотить свою стратегию управления данными.

    Преимущества:

    • Позволяет пользователям идентифицировать файлы и приложения, которые подвержены риску, и закрывать доступ к конфиденциальной информации организации.
    • Определяет типы файлов, как и кем они используются, кому принадлежат и в каком доступе находятся.
    • Составляет отчеты, включающие информацию о миграции и удалении данных, а также рекомендации о полном закрытии или частичном ограничении доступа к тем или иным данным.
    • Интеграция с Veritas Enterprise Vault позволит добиться автоматической очистки.
    • При помощи записи потока проводимых операций можно задать политику хранения информации в рабочей среде посредством тегов метаданных: Veritas Data Insight автоматически присваивает всем приложениям, файлам и папкам теги, после чего Veritas Enterprise Vault их распознает и задает политику для архивирования данных.

    Подробнее с продуктом Veritas Data Insight можно ознакомиться здесь.

    One Identity — Data Governance Edition

    Компания One Identity предлагает продукт Identity Manager — Data Governance Edition для детализированного и полного контроля доступа к неструктурированным данным в корпоративных сетях. Решение предлагает массу возможностей для автоматизации задач по назначению и контролю доступа силами самих владельцев информации, а не IT-специалистов. В результате линейные руководители могут сами контролировать, кто имеет доступ к данным, и защищать организацию, получая право на анализ, рассмотрение и исполнение запросов на доступ. Ответственные за принятие решений получают в свое распоряжение дашборд для просмотра информации в динамике, анализа хронологии и текущей активности. Кроме того, можно просматривать статус доступа для каждого сотрудника в отдельности, а отчеты, которые генерируется системой, можно использовать для подтверждения соответствия требованиям ИБ перед аудиторами без участия IT-отдела.

    Преимущества:

    • Делегирование управления доступом руководителям бизнес-подразделений.
    • Возможность просмотра статуса доступа для каждого сотрудника в отдельности.
    • Персонализированные дашборды для просмотра различных сведений и управления доступом.

    Подробнее с продуктом IdentityManager — Data Governance Edition можно ознакомиться здесь.

    STEALTHbits StealthAUDIT

    Компания STEALTHbits предлагает продукт StealthAUDIT для детализированного и полного контроля доступа к неструктурированным данным в корпоративных сетях и StealthINTERCEPT для детального мониторинга изменений в контролируемых ресурсах.

    StealthAUDIT предоставляет автоматизированную, масштабируемую и совместимую с другими информационными системами (IDM, SIEM и др.) платформу для управления неструктурированными данными (контроль активностей с данными и управление правами доступа к данным), для защиты критичных данных, с применением согласованной модели выдачи прав доступа и обеспечения ликвидации глобального доступа/выявление неиспользуемого, избыточного доступа и применения принципа наименьших привилегий/минимизация прав доступа.

    StealthINTERCEPT — это модуль мониторинга изменений и контроля в режиме реального времени, который защищает от преднамеренных и непреднамеренных изменений, внесенных в MS Active Directory, MS Exchange и файловые системы. StealthINTERCEPT предоставляет оперативную информацию об изменениях и оповещения в режиме реального времени, контролирует использование критичных данных, а также отслеживает злоупотребления, связанные с привилегированными учетными записями, и обнаруживает внесенные несанкционированные изменения.

    Преимущества:

    • Поиск, категоризация и классификация данных, исходя из их содержимого по заданным администратором правилам, определение папок, где хранятся наиболее важные и критичные для бизнеса данные, организация дополнительного контроля над ними.
    • Выявление владельцев ресурсов на основе анализа системных разрешений и истории доступа к ресурсам (папкам и файлам) защищаемых серверов.
    • Мониторинг активности пользователей при обращении к файлам и объектам и получение оповещений об аномальной активности, связанной с деятельностью инсайдеров (удаление/изменение критичных данных) или вирусных программ (вирусы-шифровальщики/вирусы-вымогатели), о неправомерных действиях с правами доступа и пр.
    • Автоматизированный процесс отзыва прав доступа пользователей к файловым ресурсам при обнаружении аномальной активности.
    • Глубокая интеграция из коробки с SIEM-системами, такими как Splunk, Q-radar и др., с возможностью вывода на единую панель SIEM-системы адаптированных дашбордов по событиям, связанных с правами доступа/активностями с данными.
    • Интеграция с IAM-системами, такими как IBM SIM, Microsoft FIM, Aveksa и SailPoint через IAM frameworks.

    Подробнее с продуктом StealthAUDIT и модулем StealthINTERCEPT можно ознакомиться здесь.

    НАУТИЛУС (Cross Technologies)

    Компания Cross Technologies (АО «Кросс технолоджис») для контроля доступа к неструктурированным данным в корпоративных сетях предлагает продукт НАУТИЛУС.

    НАУТИЛУС предназначен для контроля прав доступа к сетевым файловым ресурсам и аудита операций пользователей с этими ресурсами. Может использоваться для контроля соблюдения политик информационной безопасности относительно сетевых файловых ресурсов и для расследования инцидентов информационной безопасности.

    Преимущества:

    • Двунаправленное отображение прав доступа пользователей к файлам.
    • Аудит действий пользователя.
    • Оповещение в реальном времени о доступе, изменении или удалении файлов, изменениях прав доступа, изменениях в Active Directory, о получении административных привилегий, работе с данными в непредусмотренное время.
    • Назначение прав доступа к файлам сотрудниками, ответственными за информацию (не ИТ-подразделение).
    • Поиск и категоризация информации с помощью регулярных выражений и словарей, анализ содержимого и дополнительных метаданных и атрибутов.
    • Определение мест хранения, пользователей, прав доступа и владельцев конфиденциальных данных, рекомендации по правам доступа.

    Подробнее с продуктом НАУТИЛУС можно ознакомиться здесь.

    Выводы

    Решения Data Access Governance (DAG) — специализированные системы для контроля и управления доступом к неструктурированным данным, которые помогают удостовериться, что доступ к этим данным имеют только те сотрудники, которые должны иметь его согласно настроенным политикам компании (данные — пользователи — ресурсы — доступ к ним), и обеспечивают мониторинг активностей, оповещения в режиме реального времени и анализ поведения пользователей с данными наряду с корректной выдачей прав доступа. Они значительно сокращают затраты на администрирование и обеспечивают необходимый уровень информационной безопасности. Аналитический подход и интеллектуальное управление доступом к данным помогают структурировать существующие права доступа и обеспечивают аудит использования данных внутри информационной системы.

    Применение таких систем позволяет:

    • Снизить риски ИБ путем категоризации данных, понимания, кто имеет к ним доступ, кто пользовался этим доступом, и удаления избыточного доступа.
    • Предотвратить утечку данных: путем получения оповещений об аномальной активности с данными, несанкционированном доступе к критичным данным и пр.
    • Соответствовать политике безопасности компании: автоматически отслеживать и исправлять изменения, противоречащие политикам компании.
    • Соответствовать требованиям законодательства и стандартам ИБ, например: №152-ФЗ; № 323-ФЗ; PCI DSS; стандарт СТО БР ИББС; закон SOX и др.
    • Увеличить продуктивность путем сокращения временных затрат департаментов ИТ и ИБ на ручное управление и защиту данных.
    • Оптимизировать системы хранения, выявляя неиспользуемые данные и неправомерную информацию, автоматическое перемещение, удаление и архивирование данных.
    • Визуализация данных и отчетность позволяют упростить ряд бизнес-процессов: нахождение потерянных файлов, назначение владельцев данных, быстрое и эффективное проведение расследований инцидентов.

    В настоящее время рынок DAG-решений стремительно развивается, при этом выбор поставщиков DAG широк. На мировом рынке представлены уже десятки решений для контроля и управления доступом к неструктурированным данным. Российский рынок Data Access Governance на данный момент пока на стадии раннего развития, но на нем уже представлена значительная часть глобальных производителей.

    Учитывая постоянно растущие объемы неструктурированных данных, можно утверждать, что решения класса DAG будут актуальны и дальнейший спрос на них будет только расти. И это должно, несомненно, положительно сказаться на развитии российского рынка продуктов этого класса.

    Обзор был подготовлен при активной поддержке компании «Информзащита». Соавторами статьи являются:

    Яна Шевченко, менеджер отдела по продвижению решений

    Черных Александр, начальник отдела систем управления идентификационными данными

    Доступ к данным с помощью элементов управления источником данных (DataSource) в ASP.NET 2.0

    Written on 07 Февраля 2009 . Posted in ASP.NET

    ОГЛАВЛЕНИЕ

    В дополнение к возможности декларативного использования элементов управления источником данных, доступ к ним также может быть осуществлен программным путем. Вы можете добавить элемент управления SqlDataSource либо AccessDataSource на вашу веб-страницу, указать запрос типа SELECT, INSERT, UPDATE или DELETE, и затем программно выполнить одну из SQL-команд элемента. Такой подход пригоден в случаях, когда вам необходимо программно работать с данными, но в то же время обойтись без написания кода. Вкратце, использование элементов управления источником данных таким образом позволяет программно работать с данными, написав лишь одну строку кода.

    В данной статье мы рассмотрим способ использования элемента управления SqlDataSource для того, чтобы программно получать, вставлять и удалять информацию. Читайте далее, чтобы узнать больше об этом!

    Программный запуск SQL-команд с элементами управления SqlDataSource и AccessDataSource

    Элементы управления SqlDataSource и AccessDataSource могут быть использованы для того, чтобы осуществлять вставку, обновление, удаление и получение данных. SQL-команды, используемые для осуществления вставки, обновления, удаления и возврата данных, указаны посредством свойств InsertCommand, UpdateCommand, DeleteCommand и SelectCommand соответственно, и данные команды выполняются автоматически, когда элемент управления источником данных декларативно привязывается к элементу управления данными (такими, как GridView, DetailsView, DropDownList и т.д.).

    SQL-команды, указанные в данных свойствах могут содержать параметры. К примеру, свойство SelectCommand может содержать запрос SELECT, который возвращает все товары определенной категории используя параметр под названием @CategoryID like so:

    Значение параметра может быть указано посредством элемента управления Parameter в наборе SelectParameters элемента управления источником данных. Элемент управления источником данных может использовать параметризированные запросы для всех своих SQL-команд (InsertCommand, UpdateCommand, DeleteCommand и SelectCommand), каждая из которых указана соответствующими свойствами наборов параметров (InsertParameters, UpdateParameters, DeleteParameters и SelectParameters соответственно ).

    Элементы управления SqlDataSource и AccessDataSource предоставляют четыре метода, которые позволяют выполнение конкретной SQL-команды. Вот эти четыре метода:

    • Select(DataSourceSelectArguments) — выполняет SelectCommand и получает результаты либо в виде объекта DataView, либо как DataReader, в зависимости от значения свойства DataSourceMode элемента управления источником данных. Объект DataSourceSelectArguments , ожидаемый данным методом, используется для того, чтобы предоставить дополнительную информацию по тому, как информация должна быть обновлена до того, как будет возвращена. К примеру, при сортировке либо листании данных в GridView данный входной параметр используется для указания того, что данные отсортированы по определенной колонке либо то, что только определенное подмножество записей должно быть получено. В примерах данной статьи мы будем всегда передавать значение DataSourceSelectArguments.Empty, тем самым отображая то, что мы не хотим изменять данные.
    • Insert() — выполняет InsertCommand.
    • Update() — выполняет UpdateCommand.
    • Delete() — выполняет DeleteCommand.

    Вкратце, данные могут быть получены, либо выражения INSERT, UPDATE или DELETE могут быть выполнены при помощи всего лишь одной строки кода. Стандартный код доступа к данным заключается в создании соединения к объекту (указав строку соединения, открытия соединения), в создании командного объекта (указав текст команды), и т.д. — это все обрабатывается элементом управления источником данных тогда, когда вызываются его методы Select(), Insert(), Update() или Delete().

    Остальная часть данной статьи рассматривает два примера, которые демонстрируют программный способ работы с данными, используя элемент управления SqlDataSource для получения и вставки данных из базы данных Northwind. Полноценный исходный код данных примеров, а также и пример, рассматривающий удаление данных, доступны в конце данной статьи.

    Получаем результаты программным способом, используя элемент управления SqlDataSource

    Для того чтобы программно получить результат из элемента управления источником данных, нам нужно сначала добавить элемент управления источником на страницу и указать его свойства. Чтобы продемонстрировать программную работу с данными, мы создадим страницу, которая позволит пользователю выбрать категорию товара из таблицы Categories. Кроме выбора категории, представьте, что мы хотим отобразить среднюю цену для товаров в данной категории, а также три самых дорогих товара (название и цену). Хотя мы можем выполнить все эти требования декларативно, используя такие элементы управления данными, как Repeater или FormView, мы все же будем использовать программный способ получения данной информации и отображения ее в элементе Label.

    Следующий пример включает элемент DropDownList, названный Categories , который декларативно привязан к SqlDataSource, возвращающему все категории. Страница также содержит два других элемента SqlDataSource, которые не привязаны ни к одному элементу управления. Первый, AvgPriceDataSource, возвращает среднее значение UnitPrice для указанной категории. Его SelectCommand было назначено следующему запросу:

    Второй элемент управления, MostExpensiveProductsDataSource, возвращает значения ProductName и UnitPrice для трех самых дорогих товаров указанной категории, используя следующую SelectCommand команду:

    Оба элемента управления имеют единственный ControlParameter в их наборе SelectParameters, который заполняет значение параметра @CategoryID значением CategoryID , выбранного из элемента управления DropDownList, который назван Categories.

    При программной работе с информацией, полученной из элемента управления SqlDataSource, стоит отметить свойство DataSourceMode. Свойство DataSourceMode указывает на тип объекта данных, возвращенного элементом SqlDataSource и оно может быть установлено в DataReader либо DataSet (по умолчанию). Если свойство DataSourceMode установлено в DataReader , то метод Select возвращает экземпляр объекта IDataReader; если оно установлено в DataSet , то возвращается объект DataView.

    Разница немаловажна, поскольку код, который вы используете для программной работы с данными отличается между DataViews и Data Readers. Оба объекта могут работать со скалярными данными либо набором данных. Data Readers более эффективны при возврате данных, которые вам просто необходимо отобразить; DataViews предоставляет больше возможностей — возможность сортировать и фильтровать полученные данные, осуществлять беспорядочный доступ к записям, и т.д. AvgPriceDataSource SqlDataSource демонстрирует работу с Data Readers, в то время как MostExpensiveProductsDataSource показывает работу с DataViews.

    Следующий метод вызывается в момент, когда изменяется индекс выборки элемента DropDownList и когда данные впервые привязывается к DropDownList. Как демонстрирует код, осуществляется программный вызов метода Select() элементов управления источником данных AvgPriceDataSource и MostExpensiveProductsDataSource и свойствам Text двух разных элементов Label назначается результирующая информация. Заметьте как синтаксис доступа к данным отличается в зависимости от того, что возвращает SqlDataSource — Data Reader или DataView.

    Код, возвращающий данные из источника данных AvgPriceDataSource использует объект IDataReader. Он затем считывает данные используя метод Read. Поскольку UnitPrice может содержать пустые значения (NULL), может случиться и так, что все товары в выбранной категории имеют значение UnitPrice равное NULL, и в этом случае средняя цена также будет нулевой (NULL). Если такой случай будет реальностью, то мы отобразим «Unknown» (Неизвестно), в противном случае мы отобразим результат в формате валюты. Для того, чтобы получить три самых дорогих товара выбранной категории мы используем объект DataView и проходим в цикле по всех результирующим записям при помощи выражения For Each. Для каждой записи мы отобразим название и цену товара.

    Вставка новой записи программным путем, используя элемент управления SqlDataSource

    Элементы управления ASP.NET 2.0 предлагают возможности декларативной вставки, обновления и удаления данных. Не написав и строки кода, вы можете создать GridView, DetailsView или FormView, который отображает данные, а также позволяет пользователю редактировать, удалять и добавлять информацию. Тем не менее, бывают случаи, когда данный декларативный подход, не подразумевающий написания кода, не будет тем, что вам необходимо. Конечно, всегда есть возможность написать самому код соединения к базе данных, написать выражение INSERT, UPDATE либо DELETE, и выполнить команду, но это все можно с легкостью сделать при помощи элементов управления источниками данных.


    Представьте, что нам нужно создать интерфейс, позволяющий добавлять новые товары в таблицу Products. В частности, мы хотели бы иметь настраиваемый интерфейс, который, на данный момент, отображал бы текстовые поля для названий и цен на товары, DropDownList — для категории, и CheckBox — для состояния. Данный интерфейс также включал бы кнопку добавления («Add Product»), при нажатии на которую будет добавлена новая запись в базу данных, используя значения, введенные пользователем.

    Для того чтобы создать такую страницу без использования FormView либо какого-нибудь другого из элементов управления данными, вам необходимо начать с добавления элементов TextBox, DropDownList, CheckBox и Button. Далее, добавьте элемент управления SqlDataSource, который указывает на следующее параметризированное выражение INSERT посредством его свойства InsertCommand:

    Установите соответствие между значениями параметров в наборе InsertParameters при помощи ControlParameters, которые указывают на соответствующие элементы управления страницы. Существует множество путей выполнения данного. Находясь в режиме дизайнера (Designer), нажмите на SqlDataSource и перейдите к окну свойств (Properties). Там вы увидите опцию InsertQuery, которая будучи отмеченной, отображает редактор команд и параметров (Command and Parameter Editor), как это продемонстрировано ниже. Здесь вы можете указать InsertCommand, параметры, и их источники. Заметьте, что каждый из четырех параметров использует элемент управления (Control) в качестве источника (Parameter source), при этом ControlID выпадающего списка установлен в соответствующий элемент управления на странице.

    В качестве альтернативы данные параметры могут быть указаны посредством декларативного синтаксиса элемента управления SqlDataSource:

    В любом событии, как только элементы управления будут добавлены на страницу InsertCommand и InsertParameters элемента SqlDataSource будут правильно настроены, вставка новой записи будет столь же проста, как вызов метода Insert() элемента управления источником данных. Единственным кодом, который вам придется написать, будет эта строка (которую мы расположили в обработчике события Click кнопки «Add Product» ):

    Вставка информации при помощи элементов управления данными

    Элементы управления AccessDataSource, SqlDataSource и ObjectDataSource все поддерживают вставку, обновление и удаления. Вкратце, все три элемента обладают методом Insert, вызов которого выполняет следующую последовательность действий:

    1. Выполняется событие Inserting источника данных
    2. Происходит действие вставки
    3. Выполняется событие Inserted источника данных

    Для различных элементов управления данными действие вставки различно. Для элементов AccessDataSource и SqlDataSource данное действие подразумевает соединение с указанной базой данных и выполнением выражения INSERT, указанного свойством InsertCommand. Для ObjectDataSource действие вставки подразумевает создание экземпляра объекта источника данных и вызова указанного InsertMethod. Данная статья фокусируется на элементе управления SqlDataSource.

    Давайте детально исследуем действие вставки для элементов управления AccessDataSource и SqlDataSource. Выражение INSERT либо хранимая процедура, указанные командой InsertCommand элемента, используют параметризированный запрос. То есть, если вы используете произвольное SQL-выражение для InsertCommand, то выражение INSERT будет использовать параметры следующим образом:

    В статье о фильтрации базы данных при помощи параметров мы рассмотрели способ использования параметров в SelectCommand для фильтрации результатов, к примеру SELECT * FROM Products WHERE Price ProductID».

    Для того чтобы добавить колонку кнопок удаления (Delete), перейдите к смарт-тегу GridView и активируйте опцию удаления «Enable Deleting». Это добавляет CommandField к DetailsView и устанавливает его свойство ShowDeleteButton в True. CommandField при данной конфигурации отображает колонку, где для каждой строки есть кнопка удаления. Также активируйте опцию листания «Enable Paging», которая также расположена в смарт-теге GridView.

    После того, как вы выполните все шаги, декларативная разметка вашего GridView должна быть похожа на следующую:

    И это все! При нажатии кнопки Delete выполняются следующие действия:

    1. Выполняется постбэк
    2. Выполняется событие RowDeleting элемента GridView
    3. GridView заполняет @ProductID используя значение DataKeys для того кортежа, где была нажата кнопка удаления (Delete). (Свойство DataKeys должно быть установлено в «ProductID». Если вы очистите данное значение, или оно будет сброшено либо потеряно каким-то образом, то значение параметра @ProductID не будет присвоено при нажатии кнопки Delete. Следовательно, выражение DELETE не удалит ни одной записи! Поэтому, если вы тестируете GridView и узнаете, что кнопка Delete ничего не делает, то первым делом вам необходимо проверить правильно ли настроено свойство DataKeys элемента GridView.)
    4. GridView вызывает метод Delete() своего SqlDataSource
    5. Выполняется событие RowDeleted элемента GridView

    Данный пример демонстрирует только простые возможности GridView и не включает в себя некоторые возможности, такие как предоставление окна сообщений для подтверждения удаления.

    Отмена удаления

    Как уже обсуждалось, когда вызывается метод Delete() элемента управления источником данных, то выполняется следующая последовательность шагов:

    1. Выполняется метод Deleting источника данных
    2. Происходит действие удаления
    3. Выполняется метод Deleting источника данных

    Заметьте, что до того, как произойдет действие удаления, выполняется событие Deleting. В определенных случаях нам понадобится отменить удаление после того, как был вызван метод Delete() элемента управления источником. К примеру, мы можем иметь такой GridView, который включал бы в себя кнопку Delete для каждой строки, хотя могут существовать некоторые требования, которые препятствуют удалению записей. Такая бизнес-логика может быть выполнена двумя путями: сокрытие либо отключение кнопок удаления программным путем для тех записей, которые нельзя удалять, либо программно проверить данные правила во время нажатия кнопки удаления, и при необходимости отменить удаление. В идеале могут быть использованы обе техники.

    Давайте рассмотрим способ реализации отмены удаления из события Deleting элемента SqlDataSource. Основываясь на предыдущем примере, который использовал GridView, мы обновим логику страницу таким образом, что товары, у которых UnitPrice больше чем $50.00, не могут быть удалены. Для выполнения данной задачи нам необходимо добавить обработчик для события Deleting и определить цену записи, которую мы собираемся удалить. Все, что мы имеем в данном обработчике события, так это значения параметров — в данном случае, только значение ProductID. Следовательно, нам необходимо заново осуществить запрос к базе данных для того, чтобы определить значение UnitPrice товара. Как это продемонстрировано в следующем коде, для того, чтобы просто отменить удаление, необходимо установить свойство e.Cancel в True.

    Заметьте, что данные примеры используют код ADO.NET для доступа к информации базы данных и выполнению запроса для определения UnitPrice товара, который мы собираемся удалить. Значение ProductID данного товара возвращается из набора Parameters объекта e.Command. (Данный код возвращения параметра специфичен для типа используемого элемента источника данных; другими словами, код, рассмотренный здесь, был бы другим при использовании элемента управления ObjectDataSource.) Если значение UnitPrice не является NULL и превышает $50.00, то в данном случае удаление отменяется и элемент управления Label (CannotDeleteMessage) отображает информацию о том, что пользователь не может удалить указанный товар из-за цены.

    Следующее изображение демонстрирует то, что произойдет при попытке удалить «Carnarvon Tigers», товар, который стоит больше чем $50.00.

    Модификация интерфейса редактирования

    Элемент управления GridView может работать в тандеме вместе с элементом SqlDataSource для того, чтобы предоставить простой интерфейс редактирования, составленный из текстовых полей. Данный упрощенный интерфейс позволяет разработчикам создавать интерфейсы редактирования без необходимости написания и строки кода, интерфейс настолько прост, что он используется (применим только к простым задачам) только для простых задач. Некоторые ограничения можно привести на примере обновления категории товара. Вкратце, вам придется (пришлось бы) обновить CategoryID значения, то есть для того, чтобы поменять категорию товара с напитков на молочные, вам придется поменять значение CategoryID с одного значения на другое. В таких случаях упрощенный интерфейс имеет такой недостаток, как отсутствие проверки вводимых значений, что может оказаться необходимым при редактировании требуемых полей, либо для полей, которые должны впоследствии быть отображены в определенном формате (к примеру, даты, числа).

    К счастью, интерфейс редактирования GridView может быть настроен таким образом, что он будет включать в себя элементы управления для валидации и альтернативные элементы управления интерфейсом пользователя. Интерфейс требует немного усилий, но в большинстве случаев данные изменения могут быть выполнены посредством дизайнера (Designer) либо декларативной разметки страницы. В данной статье мы расширим упрощенный интерфейс редактирования таким образом, что он будет включать в себя элементы управления валидации для полей ProductName и UnitPrice ; мы также заменим текстовое поле CategoryID выпадающим списком, в котором перечислены все возможные категории. Читайте далее, чтобы узнать больше об этом!

    Как генерируется интерфейс редактирования?

    GridView может быть сделан редактируемым в случае, если он привязан к элементу управления источником данных, у которого активированы возможности обновления. Элемент управления SqlDataSource настроен так же, как и в случае если бы было указано его свойство UpdateCommand. В случае с SqlDataSource, UpdateCommand указывает выражение UPDATE либо хранимую процедуру, которая выполняется когда вызывается метод Update элемента управления источником данных.

    В Visual Studio Designer GridView может быть помечен как редактируемый путем выбора опции активизации редактирования («Enable Editing») в смарт-теге GridView либо вручную добавлением CommandField к GridView, чье свойство ShowEditButton установлено в True. Со стороны пользователя это будет выглядеть как колонка кнопок редактирования, добавленной к сетке. Нажатие на кнопку вызовет запуск постбэка и выполнение события RowEditing GridView. После того, как событие выполняется, GridView обрабатывает себя, но выбранная строка будет в режиме редактирования.

    Все колонки редактируемой строки также переходят в режим редактирования. Для BoundFields, чье свойство ReadOnly не равно True используется элемент управления TextBox и его свойству Text присваивается значение данной клетки. CheckBoxFields обрабатываются вместе с активизируемой кнопкой с зависимой фиксацией. В случае когда используется BoundFields и CheckBoxField режим редактирования будет составлен из элементов управления TextBox и активированным элементом управления CheckBox.

    Для того чтобы модифицировать интерфейс редактирования – чтобы он проверял вводимые значения или чтобы использовал альтернативные элементы управления, — нам необходимо использовать TemplateField вместо BoundField. TemplateFields составлены из редактируемых и только читаемых шаблонов (read-only). Шаблон позволяет разработчику указать набор статического HTML, элементов управления и синтаксиса привязки данных в пределах шаблона. При отображении строки в режиме редактирования для любых TemplateFields их EditItemTemplates используются для обработки интерфейса редактирования. Если TemplateField не хватает EditItemTemplate , то вместо него используется ItemTemplate.

    Шаги модификации интерфейса редактирования

    Для того чтобы модифицировать интерфейс редактирования для конкретной колонки в GridView, нам необходимо использовать TemplateField. Данная модификация подразумевает следующие шаги:

      Добавьте новый TemplateField к колонке Gr >

  • Отредактируйте EditItemTemplate. Это можно сделать, используя декларативную разметку страницы путем ввода вручную синтаксиса HTML и элемента управления. Если вам по душе дизайн, то нажмите на ссылку Edit Templates (редактирование шаблонов) в смарт-теге GridView. Отсюда вы можете выбрать шаблон, который отредактируете, и затем перетащить элементы управления из инструментария (Toolbox) в интерфейс дизайна шаблона.
  • Если вы создаете альтернативный пользовательский интерфейс для редактирования, то вы должны добавить необходимые элементы управления к EditItemTemplate.
  • Добавьте любые элементы управления валидацией и настройте их свойство по мере необходимости.
  • Если вы используете альтернативный пользовательский интерфейс или же добавляете TemplateField вручную, то вам необходимо использовать двустороннюю привязку данных для того, чтобы ассоциировать значение параметра обновления со свойством элемента управления в EditItemTemplate. Данный шаг не является обязательным в случае, если вы преобразовали существующий BoundField в TemplateField, при этом не изменяли или добавляли новые элементы управления для сбора пользовательского ввода, потому что процесс преобразования автоматически добавляет TextBox к EditItemTemplate и использует двустороннюю привязку данных для того, чтобы ассоциировать поле данных со свойством Text элемента TextBox.
  • Двусторонняя привязка данных является специализированным синтаксисом, который оповещает GridView о том, что он должен взять конкретное значение из интерфейса редактирования и связать его с конкретным параметром в наборе UpdateParameters его элемента управления источником данных. К примеру, в GridView мы имеем поле с данными, названое ProductName , которое отображает название товара. Существует параметр в наборе UpdateParameters, также названный ProductName, и данный параметр используется в UpdateCommand элемента управления источником. Если мы используем TemplateField вместо BoundField для колонки ProductName , то нам понадобится использовать двустороннюю привязку, которая говорит GridView: «Эй, когда пользователь нажимает кнопку Update (обновление), тебе необходимо присвоить значение данного свойства Text элемента TextBox параметру ProductName.

    В дополнение к присвоению значения, введенного пользователем в соответствующий параметр обновления, двусторонняя привязка данных также устанавливает значение свойства Text элемента TextBox в значение поля данных в момент, когда нажимается кнопка Edit данной записи. Вкратце, нам не нужно писать никакого кода, благодаря двусторонней привязке. Редактирование при помощи элемента DataGrid в ASP.NET 1.x требует написания кода по заполнению интерфейса редактирования значениями тогда, когда редактируется строка, а также получение обновленных пользователем значений и сохранение их в базе данных.

    Применяем двустороннюю привязку к данным

    Существует два способа указать двустороннюю привязку к данным: вручную, указав ее посредством декларативного синтаксиса страницы, либо используя диалоговое окно Edit DataBindings (Редактирование привязки данных). Давайте исследуем оба подхода. Для того чтобы ввести ее, используя дизайнер (Designer), откройте интерфейс редактирования шаблонов (Edit Templates) и выберите соответствующий шаблон. Для получения информации должны быть элементы сбора пользовательского ввода. Это может быть TextBox, DropDownList либо CheckBox. Мы хотим использовать двустороннюю привязку к данному элементу управления (и не на элементах управления валидацией либо элементах в шаблоне, которые не собирают пользовательский ввод). Из смарт-тега данного элемента управления нажмите ссылку «Edit DataBindings» (Редактировать привязки данных). Это откроет следующее диалоговое окно.

    Свойства привязки элемента управления перечислены слева. Выберите одно, и затем выберите поле справа, к которому вы хотите привязать. В качестве альтернативы вы можете ввести привязку вручную в текстовом поле Custom binding. Используйте следующий синтаксис: Bind(«DataField_Name«).

    Диалоговое окно «Edit DataBindings» просто внедряет соответствующую разметку двусторонней привязки в декларативный синтаксис элемента управления. Вы можете ввести ее вручную вместо того, чтобы использовать диалоговое окно Edit DataBindings. К примеру, для того чтобы привязать свойство Text текстового элемента ProductName к полю ProductName используйте следующий декларативный синтаксис в EditItemTemplate элемента TemplateField:

    При вводе данного синтаксиса вручную важно не забыть отделить значение свойства при помощи апострофов вместо кавычек, поскольку кавычки используются в пределах выражения Bind. То есть, я использую Text= ‘ ‘ вместо Text= « «.

    Добавляем элементы управления валидацией к интерфейсу редактирования

    Пример с GridView мог бы включать в себя четыре колонки: ProductName, UnitPrice, CategoryID и Discontinued. Первые три колонки отображаются в BoundFields, что в результате будет элементом TextBox для интерфейсов редактирования. Данные интерфейсы редактирования страдают нехваткой валидации вводимой информации. В случае, если пользователь введет неправильную информацию и попытается обновить базу данных, будет создано исключение. К примеру, ProductName не допускает значения NULL, так что в случае, если пользователь опустит в данном месте значение, то будет сгенерирована исключительная ситуация. Аналогично UnitPrice является полем типа money. Если пользователь попытается ввести какое-нибудь неправильное значение (к примеру, «Дешево!!»), то база данных создаст исключительную ситуацию, поскольку нет возможности преобразовать текст в денежное значение.

    Пример, приведенный в конце статьи, использует TemplateFields для колонок ProductName и UnitPrice, поэтому есть возможность добавить элементы управления валидацией. RequiredFieldValidator добавляется к колонке ProductName, в то время как UnitPrice использует CompareValidator для того, чтобы обеспечить правильность вводимого значения.

    Элементы управления валидацией ASP.NET 2.0 включают в себя свойство ValidationGroup которое может разделять элементы на странице на различные группы. Данное свойство полезно для страниц, на которых расположено множество мест где данные могут быть отредактированы. В любом случае, если вам необходимо использовать свойство ValidationGroup элементов управления валидацией в специализированных интерфейсах редактирования колонок GridView, то важно настроить свойство ValidationGroup CommandField в то же самое значение.

    Используем выпадающий список (Drop-Down List) вместо текстового поля (TextBox)

    Для определенных текстовых полей наличие TextBox не будет иметь никакого смысла. Поле CategoryID как раз является примером этого. В таблице Products базы данных каждому товару назначается категория при помощи поля CategoryID. Таблица Categories содержит запись для каждой существующей категории. При редактировании данных при помощи GridView, используя стандартный интерфейс редактирования TextBox, пользователь должен отредактировать категорию, вписав соответствующее значение CategoryID. Такой интерфейс не является наиболее удобным, так как он предполагает, что пользователь знает значение ID категории. Более того, если пользователь введет неправильное значение ID (то есть такое ID , которое не совпадет со значением записи в таблице Categories) и нажмет кнопку обновления (Update), то будет создана исключительная ситуация из-за ограничения по внешнему ключу между таблицами Products и Categories.

    Уже ясно то, что нам нужен интерфейс получше. Для такого просмотра данных наиболее приемлемым будет использование выпадающего списка. Мы хотим, чтобы наш DropDownList перечислял все возможные категории и автоматически выбирал категорию редактируемого товара. После этого пользователь может изменить категорию товара, выбрав другую из списка.

    Для начала создайте TemplateField либо преобразуйте существующий CategoryID, принадлежащий BoundField, в TemplateField. Далее отредактируйте EditItemTemplate таким образом, чтобы оно содержало только элемент управления DropDownList. Из смарт-тега DropDownList привяжите его к новому элементу SqlDataSource , который возвращает колонки CategoryID и CategoryName из таблицы Categories, отсортированной по CategoryName. Если вы посетите страницу в этот момент и отредактируете запись, то вы увидите выпадающий список, заполненный категориями; тем не менее, конкретная категория товара не будет выбрана, и, более того, когда вы сохраните товар, она исчезнет из списка!

    Данное поведение существует потому, что нам еще предстоит применить двустороннюю привязку данных к DropDownList. Без данной информации GridView не выберет соответствующий элемент в списке при нажатии кнопки редактирования (Edit). Когда запись обновлена, отсутствуие синтаксиса двусторонней привязки в результате приравняет значение CategoryID к NULL. Поскольку SelectCommand элемента SqlDataSource использует INNER JOIN для Products и Categories, любые товары без соответствующей категории не будут возвращены запросом и тем самым не будут отображены в табличной сетке.

    Для того, чтобы решить эту проблему, мы используем двустороннюю привязку данных для привязки CategoryID к свойству SelectedValue элемента DropDownList. Следующий декларативный синтаксис демонстрирует EditItemTemplate для колонки CategoryID. Заметьте что существуют DropDownList и элемент SqlDataSource, который возвращает набор всех категорий. Также исследуйте двустороннюю привязку данных, используемую в разметке элемента DropDownList.

    Обработка пустых полей базы данных (NULL)

    Мы уже рассматривали способ настройки элемента SqlDataSource таким образом, чтобы он выполнял выражения UPDATE к базе данных, а также способ настройки элемента GridView для работы в паре с элементом SqlDataSource, чтобы предоставить интерфейс редактирования. По умолчанию, интерфейс редактирования GridView обрабатывает TextBox для каждой редактируемой колонки в табличной сетке. Тем не менее, в определенных случаях нам может понадобиться специализация интерфейса редактирования, в частности, включение элементов управления валидацией или использование альтернативных элементов управления сбора пользовательского ввода. Мы специализировали интерфейс редактирования таким образом, что при редактировании товара из базы данных Northwind пользователь мог бы выбрать категорию товара при помощи элемента управления DropDownList вместо того, чтобы вводить значение CategoryID в поле TextBox.

    В случае специализации интерфейса редактирования появляется один недостаток — данный подход может не работать с товарами, которые не имеют значения CategoryID (NULL) в базе данных. В том случае, если запрос SELECT, применяемый для заполнения GridView, использовал INNER JOIN, значит, этот запрос возвращал только те товары, которые принадлежали какой-либо категории. Даже если мы обновим запрос так, чтобы он использовал LEFT JOIN, DropDownList в интерфейсе редактирования не будет включать в себя элементы, представляющие пустое значение (NULL), так что пользователь не сможет редактировать товар и изменить его категорию с существующего значения на NULL.

    В данной статье мы рассмотрим способ специализации DropDownList в интерфейсе редактирования таким образом, чтобы он правильно обрабатывал пустые значения базы данных. Читайте далее, чтобы узнать больше об этом!

    Выборка товаров, у которых значение CategoryID равно NULL

    Элемент SqlDataSource, используемый в статье «Модификация интерфейса редактирования», возвращает данные о товарах из таблицы Products, включая соответствующее название категории из таблицы Categories. Это было выполнено посредством следующего выражения SelectCommand:

    INNER JOIN возвращает совпавшие строки Categories , что позволяет нам получать CategoryName для товаров связанных со значением CategoryID.

    Колонка CategoryID таблицы Products может содержать пустые значения (NULL), но INNER JOINs пропускают строки, где имеются пустые поля по объединенной колонке. Вкратце, INNER JOIN , используемое в предыдущем запросе, возвращает только те товары, которые имеют не пустое значение CategoryID . Для того, чтобы вернуть все товары, независимо от того имеют ли они значение NULL в CategoryID, нам нужно использовать LEFT JOIN.

    Изменив синтаксис объединения JOIN на LEFT JOIN, мы получим табличную сетку, включающую в себя и те товары, у которых значение CategoryID равно NULL. По умолчанию, значения NULL отображаются в виде пустой строки в ItemTemplate. К примеру, следующее изображение показывает товар Boston Crab Meat, у которого значение CategoryID равно NULL, и, как это заметно, отображено оно в виде пустой строки в колонке Category Name.

    Изменение к левому объединению (Left Join) является всего лишь первым шагом. Нам также необходимо обновить CategoriesDDL DropDownList в интерфейсе редактирования колонки Category Name. На данный момент CategoriesDDL привязан к набору категорий в таблице Categories. То есть, нет ни одной записи, которая соответствовала бы значению NULL в базе данных. Следовательно, если мы попытаемся отредактировать товар, у которого значение CategoryID равно NULL, то мы получим ошибку. Ошибка произойдет потому, что в EditItemTemplate мы привязываем значение CategoryID редактируемого товара к свойству SelectedValue элемента CategoriesDDL DropDownList, в то время как CategoriesDDL DropDownList не имеет такого значения.

    Модифицируем элемент управления CategoriesDDL DropDownList так, чтобы он мог обрабатывать значения NULL

    Нам необходимо обновить список элементов в CategoriesDDL DropDownList таким образом, чтобы он включал в себя полный набор возможных категорий, а также элемент, соответствующий значению NULL базы данных. Объекты Parameter в SqlDataSource (либо ObjectDataSource), сами преобразят значения NULL в пустые строки и обратно. Тем самым все, что нам надо сделать для того, чтобы все это получилось — добавить в список CategoriesDDL DropDownList элемент, который имеет значение пустой строки.

    Как только мы внесем пустую строку как элемент списка в CategoriesDDL DropDownList, двусторонняя привязка данных будет работать идеально. Когда строку, у которой CategoryID равно NULL, будет редактироваться, значение NULL будет преобразовано в пустую строку и соответствующий элемент выпадающего списка будет выбран. Аналогично, если в списке будет выбрана пустая строка и затем она будет передана в базу данных, то в результате будет сохранено значение NULL.

    Для того чтобы добавить элемент в список DropDownList со значением пустой строки нам необходимо сделать две вещи :

    1. Установить свойство AppendDataBoundItems элемента DropDownList в True.
    2. Добавить к декларативной разметке элемента, установить Value=»».

    После того, как мы применим все эти действия, разметка Category Name TemplateField будет выглядеть следующим образом:

    Разметка, добавленная согласно двум указанным шагам, отмечена красным цветом . Обратите внимание на установление свойства AppendDataBoundItems. Если свойство AppendDataBoundItems установлено в False (по умолчанию), то категории, привязанные к DropDownList при помощи SqlDataSource в EditItemTemplate перепишут элемент списка для значения NULL базы данных.

    Второй шаг вручную добавляет элемент к списку DropDownList. Свойству Text элемента списка можно присвоить любое значение (здесь мы используем «(None)»), но важно помнить, что свойство Value может быть явно установлено в пустую строку. То есть, обязательным условием является то, что разметка ListItem включает в себя Value=»». Если вы опустите данное условие, то свойство Value возвратит то же самое значение, что хранится в свойстве Text. Также предупреждаю вас о том, что свойство Value не может быть приравнено к пустой строке посредством дизайнера (Designer). Попытка просто напросто пропустит свойство Value в декларативном синтаксисе. Вы должны ввести данную разметку через декларативный синтаксис.

    На данный момент GridView позволяет отображать товары со значением NULL в CategoryID и позволяет редактировать такие товары, а также назначать значение NULL категории товара.

    Элемент управления data и объекты доступа к данным

    Элемент управления data используется, чтобы создавать простые приложения базы данных без написания кода. Его можно также использовать, чтобы создать приложения с более подробным интерфейсом, которые дают высокую степень контроля над данными.

    Рис. 7.16 Элемент управления data

    Элементы управления data-bound list, data-bound combo, data-bound grid и Microsoft FlexGrid способны к управлению наборами отчётов, когда они связаны с элементом управления data. Все эти элементы управления позволяют отображать несколько отчётов и управлять сразу несколькими отчётами.

    Элементы управления intrinsic picture, label, text box, check box, image, OLE container, list box и combo box также способны извлекать информацию из базы данных и могут быть связаны с отдельными полями Recordset, управляемыми элементом управления data. Дополнительные информационные элементы управления, такие, как masked edit и rich text box, доступны в Профессиональном и Предпринимательском изданиях и в свободной продаже.

    Дополнительно Для детального знакомства с элементом управления data и его использованием в Visual Basic с другими элементами управления, связанными с данными см. «Доступ к базам данных с помощью элемента управления data» в главе 14 («Доступ к данным»).

    Илон Маск рекомендует:  Тестер регулярных выражений JavaScript
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL