Аскон Вертикаль-Технология (V1). Руководство пользователя - часть 19

 

  Главная      Учебники - Разные     Аскон Вертикаль-Технология (V1). Руководство пользователя

 

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

 

 

 

 

 

 

 

 

содержание      ..     17      18      19      20     ..

 

 

Аскон Вертикаль-Технология (V1). Руководство пользователя - часть 19

 

 

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

143

Текст

 

запроса

 

формируется

 

на

 

стандартном

 

языке

 SQL

1

 (

рекомендуется

 SQL dia-

lect  3). 

Синтаксис

 

запроса

 

незначительно

 

меняется

 

в

 

зависимости

 

от

 

используемой

 

СУБД

 (InterBase, ORACLE 

или

 Microsoft SQL Server). 

Правила

 

составления

 

запросов

 

на

  SQL 

изложены

 

в

 

стандарте

  ANSI/ISO  SQL  92, 

а

 

также

 

в

 

специальной

 

и

 

учебной

 

литературе

 

по

 

работе

 

с

 

базами

 

данных

При

 

отладке

 

взаимодействия

 

объектов

 

навигационной

 

схемы

 

(

уровней

БД

 

часто

 

требуется

 

ин

-

формация

 

о

  SQL-

запросе

выпол

-

ненном

 

при

 

переходе

 

с

 

одного

 

уровня

 

БД

 

на

 

другой

Для

 

просмот

-

ра

 

текста

  SQL-

запроса

 

выполните

 

нужный

 

переход

затем

 

щелкните

 

правой

 

кнопкой

 

мыши

 

и

 

выберите

 

в

 

контекстном

 

меню

 

пункт

 

Межуров

-

невые

 

процедуры

В

 

отдельное

 

окно

  (

рис

.  3.56) 

скопируется

 

текст

 

выполненного

  SQL-

запроса

а

 

так

-

же

 

зарегистрированные

 

приложе

-

ния

 

и

 

внутренние

 

процедуры

ВЕРТИКАЛЬ

-

Справочники

 

пре

-

доставляет

 

пользователю

 

возмож

-

ности

 

включать

 

в

 

текст

 

динамиче

-

ски

 

формируемого

 SQL-

запроса

 

данные

 

следующих

 

типов

 

данные

 

из

 

записей

выбранных

 

пользователем

 

на

 

предыдущих

 

уровнях

 

БД

Все

 

данные

которые

 

пользователь

 

выбирает

 

в

 

процессе

 

перемещения

 

по

 

таблицам

 

базы

 

данных

копируются

 

в

 

DataCopy

  — 

специальный

 

внутренний

 

накопитель

 

ВЕРТИКАЛЬ

-

Справочники

Переменные

значения

 

которых

 

подставляются

 

из

 

DataCopy

в

 

тексте

  SQL-

запроса

 

маркируются

 

символом

  «#»  (

например

#NUM_PLANT 

или

  #STANOK1.ID). 

Принцип

 

формирования

 

таких

 

запросов

 

рас

-

смотрен

 

ниже

 

маркерные

 

переменные

 

ВЕРТИКАЛЬ

-

Справочники

В

 

тексте

 SQL-

запроса

 

такие

 

переменные

 

заключаются

 

в

 

кавычки

 <> (

например

, <apply>). 

Все

 

маркерные

 

пе

-

ременные

 

регистрируются

 

в

 

каталоге

 

БД

 (

см

раздел

 3.5.2). 

Использование

 

мар

-

керных

 

переменных

 

рассмотрено

 

в

 

примерах

 

раздела

 3.15; 

 

атрибуты

 

объекта

определенные

 

ранее

 

в

 

ВЕРТИКАЛЬ

-

Справочники

 

или

 

задан

-

ные

 

каким

-

либо

 

внешним

 

приложением

В

 

тексте

 SQL-

запроса

 

атрибуты

 

объекта

 

маркируются

 

двоеточием

 (

например

, :PLANT.DIVISN_NUM). 

Подробнее

 

об

 

атри

-

бутах

 

объектов

 

см

раздел

 4.1; 

                                                        

1

 Structured Query Language (

англ

. «

структурированный

 

язык

 

запросов

») — 

непроцедурный

 

язык

исполь

-

зуемый

 

для

 

формулировки

 

запросов

 

к

 

базам

 

данных

В

 

настоящее

 

время

 SQL 

является

 

промышленным

 

стандартом

 

Рис

Текст

 SQL-

запроса

выполненного

 

при

 

переходе

 

Группа

 

РИ

Подгруппа

 

РИ

 (

БД

 «

Режущий

 

инструмент

») 

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

144

 

константы

 

ВЕРТИКАЛЬ

-

Справочники

которые

 

при

 

интерпретации

  SQL-

запроса

 

замещаются

 

на

 

соответствующие

 

данные

В

 

тексте

 SQL-

запроса

 

константы

как

 

и

 

внутренние

 

переменные

маркируются

 

кавычками

  <>  (

например

,  <USER>). 

Список

 

констант

 

и

 

замещающих

 

их

 

типов

 

данных

 

приведен

 

в

 

Приложении

 5. 

Рассмотрим

 

подробнее

 

использование

 

данных

 

из

 

DataCopy

 

на

 

примере

 

БД

 

«

Станки

 (

демо

)». 

Если

 

выбрать

 

на

 

уровне

 

Цеха

 

запись

 «

Токарный

», 

а

 

на

 

уровне

 

Уча

-

стки

 

запись

  «1»  (

верхняя

 

цепочка

 

Цеха

 

 

Участки

 

 

Станки

), 

то

 

при

 

переходе

 

с

 

уровня

 

Участки

 

на

 

уровень

 

Станки

 

система

 

обрабатывает

  SQL-

запрос

показанный

 

на

 

рис

. 3.57. 

В

 

результате

 

выполнения

 SQL-

запроса

 

осуществляется

 

выборка

 

тех

 

за

-

писей

 

из

 

представления

 

STANOK_VIEW

для

 

которых

 

выполняются

 

условия

1) 

значение

 

поля

 

NUM_PLANT

 

равно

 2; 

2) 

значение

 

поля

 

NUM_DIVISION

 

равно

 1; 

3) 

поле

 

PRIMEN

 

непустое

 

Рис

. 3.57. SQL-

запрос

обрабатываемый

 

системой

 

при

 

переходе

 

на

 

уровень

 

Станки

 (

БД

 «

Станки

 (

демо

)») 

В

 

параметры

  NUM_PLANT 

и

  NUM_DIVISION 

обработанного

  SQL-

запроса

 

под

-

ставлены

 

конкретные

 

значения

 (NUM_PLANT=’2’; NUM_DIVISION=’1’, 

рис

. 3.57). 

Вме

-

сте

 

с

 

тем

 

значения

 

этих

 

параметров

 

не

 

фиксированы

а

 

запоминаются

 

системой

 

при

 

выборе

 

пользователем

 

записей

 

в

 

предыдущих

 

таблицах

 

БД

 (

уровней

 

Цеха

 

и

 

Участ

-

ки

). 

Так

при

 

выборе

 

пользователем

 

на

 

уровне

 

Цеха

 

третьей

 

записи

 (

Фрезерный

 

цех

 

3) 

и

 

на

 

уровне

 

Участки

 

первой

 

записи

  (

Участок

 

1) 

значения

 

параметров

 

будут

 

другими

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

145

NUM_PLANT=’3’ 
NUM_DIVISION=’1’ 

Соответственно

 

изменится

 

текст

 

обрабатываемого

 SQL-

запроса

 

и

 

результат

 

вы

-

бора

 

записей

Для

 

организации

 

такой

 

взаимосвязи

 

уровней

 

в

 

БД

 «

Станки

 (

демо

)» 

выполняется

 

пользовательский

  SQL-

запрос

В

 

регистрационную

 

запись

 

уровня

 

Станки

 

введен

 

текст

  SQL-

запроса

  (

рис

.  3.58), 

в

 

котором

 

определены

 

параметры

  NUM_PLANT 

и

 

NUM_DIVISION. 

При

 

формировании

 SQL-

запроса

 

параметру

 NUM_PLANT 

присваива

-

ется

 

значение

выбранное

 

пользователем

 

из

 

поля

 

NUM_PLANT

 

таблицы

 

PLANTS

 

(

уровень

 

Цеха

). 

Параметру

 NUM_DIVISION 

присваивается

 

значение

выбранное

 

поль

-

зователем

 

из

 

поля

 

NUM_DIVISION

 

таблицы

 

DIVISIONS

 (

уровень

 

Участки

). 

Как

 

видно

 

из

 

рис

. 3.58, 

перед

 

именами

 

полей

 

стоит

 

символ

 «#». 

 

Следует

 

различать

 

физические

 

имена

 

полей

по

 

данным

 

которых

 

происхо

-

дит

 

отбор

 

записей

 SQL-

запросом

и

 

физические

 

имена

 

полей

из

 

которых

 

данные

 

подставляются

 

в

 SQL-

запрос

 

Рис

. 3.58. 

Текст

 SQL-

запроса

выполняемого

 

при

 

переходе

 

на

 

уровень

 

Станки

 

в

 

БД

 «

Станки

 (

демо

)» 

Теоретически

 

поля

из

 

которых

 

копируется

 

информация

 

в

 SQL-

запрос

могут

 

при

-

надлежать

 

различным

 

таблицам

 

и

 

при

 

этом

 

иметь

 

одинаковые

 

физические

 

имена

В

 

этом

 

случае

 

необходимо

 

указывать

 

полное

 

имя

 

поля

 

по

 

шаблону

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

146

#{

имя

 

таблицы

}.{

имя

 

поля

например

: #PLANTS.NUM_PLANT. 

Очевидно

что

 

результаты

 

выполнения

 

запроса

приведенного

 

на

 

рис

. 3.58, 

и

 

за

-

проса

 

вида

 

select

  * 

from

 

STANOK_VIEW

 

where

  (num_plant='#PLANTS.NUM_PLANT')

  and

 

(num_division='#DIVISIONS.NUM_DIVISION ') 

and

 (primen 

is not null

and

 (primen<>'') 

будут

 

идентичны

Перечень

 

значений

скопированных

 

в

 

DataCopy

можно

 

просмотреть

 

в

 

ВЕРТИ

-

КАЛЬ

-

Справочники

нажав

 

сочетание

 

клавиш

 <

Ctrl

> + <

Q

>. 

В

 

отдельное

 

окно

 

Список

 

сохраненных

 

полей

 

загрузится

 

содержимое

 

локальной

 

таблицы

 

query.db

 (

рис

. 3.59), 

в

 

которую

 

копируется

 

для

 

просмотра

 

текущий

 

массив

 

DataCopy

Эта

 

информация

 

мо

-

жет

 

быть

 

полезна

 

при

 

отладке

 

взаимодействия

 

таблиц

 

и

 

объектов

 

в

 

БД

а

 

также

 

взаи

-

модействия

 

ВЕРТИКАЛЬ

-

Справочники

 

и

 

внешних

 

приложений

 

Рис

. 3.59. 

Просмотр

 

содержимого

 

таблицы

 

query.db

 

Следует

 

также

 

отметить

что

 

выполнение

 

запроса

 

вида

 

Select

 * 

from

 

STANOK_VIEW

 

where

 (num_plant=':PLANT.PLANT_NUM') 

and

 

(num_division=':PLANT.DIVISN_NUM') 

and

 (primen 

is not null

and

 (primen<>'') 

приведет

 

к

 

такому

 

же

 

результату

что

 

и

 

выполнение

 

запроса

 

с

 

переменными

 

DataCopy

рассмотренными

 

выше

В

 

этом

 

запросе

 

используются

 

атрибуты

 

PLANT_NUM

 

и

 

DIVISN_NUM

 

объекта

 

PLANT

сопоставленные

 

соответственно

 

полям

 

Номер

 

цеха

  

и

 

Номер

 

участка

Маркерные

 

переменные

 

и

 

константы

 

ВЕРТИКАЛЬ

-

Справочники

 

вставляются

 

в

 

текст

 SQL-

запроса

 

аналогично

 

приведенным

 

примерам

3.14.3. 

Формирование

 

пользовательских

 VB-

функций

 

В

 

ВЕРТИКАЛЬ

-

Справочники

 

существует

 

возможность

 

составления

 

пользователь

-

ских

 VB-

функций

1

С

 

помощью

 VB-

функций

 

решаются

 

следующие

 

задачи

                                                        

1

 

Кроме

 Visual Basic Script 

для

 

формирования

 

функций

 

могут

 

использоваться

 

языки

 JAVA Script, J Script 

и

 

ECMA Script. 

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

147

 

формирование

 

текста

 SQL-

запроса

 

вызов

  API-

функций

 

ВЕРТИКАЛЬ

-

Справочники

 

и

 

любых

 

других

 

приложений

ис

-

пользующих

 COM-

технологию

Перечень

 API-

функций

 

ВЕРТИКАЛЬ

-

Справочники

 

приведен

 

в

 

Приложении

 4. 

Применение

  VB-

функций

 

существенно

 

расширяет

 

возможности

 

формирования

 

SQL-

запросов

В

 

частности

, VB-

функция

 

позволяет

 

формировать

 SQL-

запрос

 

с

 

учетом

 

различных

 

логических

 

условий

определяемых

 

пользователем

Текст

  VB-

функции

 

можно

 

ввести

 

либо

 

непосредственно

 

в

 

поле

 

Шаблон

  SQL-

запроса

 

на

 

вкладке

 

Атрибуты

 

объекта

 

Редактора

 

навигационных

 

схем

 (

рис

. 3.13 

в

 

подразделе

 3.3.2), 

либо

 

загрузить

 

из

 

текстового

 

файла

Управляющие

 

кнопки

 

для

 

за

-

грузки

 VB-

функции

 

из

 

файла

 

приведены

 

в

 

подразделе

 3.3.3. 

Если

 

объект

 

навигационной

 

схемы

 

связан

 

с

 

несколькими

 

объектами

 

БД

 

и

 

требу

-

ется

 

указать

 VB-

функцию

выполняемую

 

только

 

при

 

активации

 

какой

-

либо

 

конкретной

 

связи

то

 VB-

функция

 

регистрируется

 

только

 

для

 

этой

 

связи

 

на

 

вкладке

 

SQL/VBscript

 

(

вкладка

 

Атрибуты

 

связей

 

объекта

 

Редактора

 

навигационных

 

схем

рис

. 3.16 

в

 

под

-

разделе

 3.3.3). 

Текст

  VB-

функции

 

формируется

 

на

 

стандартном

 

языке

  Visual  Basic  Script.  VB-

функция

 

выполняется

 

средствами

  Windows  (

библиотека

 

msscript.ocx

). 

Правила

 

со

-

ставления

 VB-

функций

 

и

 VB-

процедур

 

изложены

 

в

 

специальной

 

и

 

учебной

 

литературе

 

по

 

программированию

 

на

 Visual Basic Script. 

 

Для

 

нормальной

 

работы

 VB-

функций

 

на

 

ПК

 

должен

 

быть

 

установлен

 Micro-

soft Internet Explorer 

версии

 5 

или

 

выше

Любая

  VB-

функция

используемая

 

в

 

ВЕРТИКАЛЬ

-

Справочники

формируется

 

по

 

шаблону

VBScript

 {

имя

 VB-

функции

Function

 {

имя

 VB-

функции

} ({

Параметр

1

}, {

Параметр

2

}) 

{

тело

 

функции

End Function 

где

 

VBScript

  — 

идентификатор

по

 

которому

 

интерпретатор

 

ВЕРТИКАЛЬ

-

Справочники

 

определяет

что

 

данный

 

текст

 

является

 VB-

функцией

; {

имя

 VB-

функции

— 

произвольный

 

набор

 

букв

 

латинского

 

алфавита

определяющий

 

имя

 VB-

функции

{

Параметр

} — 

имя

 

параметров

 VB-

функции

 

Для

 

любой

 VB-

функции

 

должны

 

указываться

 

два

 

параметра

 

независимо

 

от

 

того

используются

 

они

 

в

 

функции

 

или

 

нет

Пример

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

148

VBScript

 

Primer

  

function

 

Primer

(x,y) 

Primer

="select * from STANOK3 where MODELSTANKA=':STANOK.MODEL'" 

set

 

autopro

 = 

CreateObject

("Autopro.Autoref") 

VrtClient.FormaPro

 1583,0,"","" 

End

 

Function

 

Выполнение

 VB-

функции

 «Primer» 

приведет

 

к

1) 

формированию

 SQL-

запроса

 

вида

 

select

 * 

from

 

STANOK3

 

where

 

MODELSTANKA

=':STANOK.MODEL' 

2) 

получению

 

доступа

 

к

  API-

функциям

 

ВЕРТИКАЛЬ

-

Справочники

 (

Autoref

 — COM-

сервер

 

ВЕРТИКАЛЬ

-

Справочники

); 

3) 

выполнению

 API-

функции

 

FormaPro

 

с

 

константой

 1583 (

cFrmTabCloseCur

 = 1583 

— 

закрыть

 

текущую

 

вкладку

 

ВЕРТИКАЛЬ

-

Справочники

). 

 

Описание

 

функций

 

СОМ

-

сервера

 

и

 

полный

 

список

 

констант

 

ВЕРТИКАЛЬ

-

Справочники

 

находится

 

в

 

файле

 

констант

 SrvAutoCnst.pas, 

расположенном

 

в

 

подкаталоге

  UNIREFER\APITOOLS\ComAP\ 

VB-

функция

 

может

 

использовать

 

результаты

 

выполнения

 

вложенных

 

функций

В

 

этом

 

случае

 

тела

 

вложенных

 

функций

 

записываются

 

после

 

текста

 

основной

 

функции

VBScript

 {

имя

 VB-

функции

Function

 {

имя

 VB-

функции

} ({

Параметр

1

}, {

Параметр

2

}) 

{

тело

 

функции

End Function 
Function

 {

 

Имя

_

влож

._

функции

} ({

Параметр

1*

}, {

Параметр

2*

}) 

{

тело

 

вложенной

 

функции

End Function 

Максимальное

 

количество

 

параметров

передаваемых

 

в

  VB-

функцию

  — 

два

Имена

 

передаваемых

 

параметров

 

записываются

 

в

 

скобках

 

через

 

запятую

 (

см

шаблон

 

записи

 VB-

функции

). 

Если

 

в

 VB-

функцию

 

не

 

требуется

 

передавать

 

никаких

 

парамет

-

ров

то

 

в

 

качестве

 

имен

 

параметров

 

указываются

 

любые

 

символы

 

латинского

 

алфа

-

вита

 (

параметры

 

х

 

и

 

у

 

в

 

рассмотренном

 

примере

 VB-

функции

 «Primer»). 

В

 

тексте

 VB-

функции

 

могут

 

использоваться

 

следующие

 

типы

 

переменных

 

внутренние

 

переменные

 VB-

функции

 

переменные

использующие

 

данные

 

DataCopy

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

149

 

маркерные

 

переменные

 

ВЕРТИКАЛЬ

-

Справочники

 

атрибуты

 

объектов

 

ВЕРТИКАЛЬ

-

Справочники

 

константы

 

ВЕРТИКАЛЬ

-

Справочники

Синтаксис

 

и

 

правила

 

формирования

 

значений

 

указанных

 

переменных

  (

кроме

 

внутренних

 

переменных

  VB-

функции

едины

 

для

  VB-

функций

 

и

  SQL-

запросов

Под

-

робное

 

описание

 

этих

 

переменных

 

приведено

 

в

 

подразделе

 3.14.2 (

по

 

атрибутам

 

объ

-

ектов

 

см

также

 

раздел

 4.1, 

по

 

константам

 — 

Приложение

 5). 

3.15. 

Настройка

 

фильтрации

 

данных

 

Напомним

что

 

фильтрация

 

данных

 

в

 

БД

 

включается

 

в

 

контекстном

 

меню

 

ВЕР

-

ТИКАЛЬ

-

Справочники

Пользователь

 

может

 

настраивать

 

любое

 

число

 

фильтров

 

для

 

любой

 

БД

Назначение

 

основных

 

фильтров

 

и

 

правила

 

работы

 

с

 

ними

 

рассмотрены

 

в

 

разделе

  2.6. 

Методы

 

работы

 

в

 

приложении

 «

Редактор

 

связей

», 

с

 

помощью

 

которого

 

указываются

 

связи

 

между

 

атрибутами

 

различных

 

объектов

рассмотрены

 

в

 

разделе

 

4.3. 

Ниже

 

приведены

 

стандартные

 

алгоритмы

 

реализации

 

работы

 

фильтров

 «

Приме

-

няемость

» 

и

 «

Связь

» 

для

 

пользовательской

 

БД

3.15.1. 

Настройка

 

фильтрации

 

данных

 

по

 

признаку

 «

Применяемость

» 

Настройка

 

фильтрации

 

данных

 

по

 

признаку

  «

Применяемость

» 

проводится

 

для

 

какой

-

либо

 

таблицы

  (

уровня

 

БД

). 

Очевидно

что

 

на

 

подчиненных

 

уровнях

 

пользова

-

тель

 

не

 

получит

 

доступ

 

к

 

записям

связанным

 

ключами

 

с

 «

неприменяемыми

» 

запися

-

ми

 

таблицы

Так

если

 

в

 

БД

 «

Режущий

 

инструмент

» 

на

 

уровне

 

Подгруппа

 

РИ

 

запись

 

«

Резец

 

ГОСТ

  18884-73» 

является

  «

неприменяемой

», 

то

 

при

 

включенном

 

фильтре

 

пользователь

 

не

 

увидит

 

эту

 

запись

 

и

соответственно

не

 

получит

 

доступ

 

к

 

типоразме

-

рам

 

этого

 

инструмента

Вместе

 

с

 

тем

 

в

 

некоторых

 

БД

 

целесообразно

 

использовать

 

такую

 

фильтрацию

 

в

 

нескольких

 

таблицах

Например

организована

 

фильтрация

 

в

 

таблицах

 

уровней

 

Под

-

группа

 

РИ

 

и

 

Типоразмеры

 

БД

 «

Режущий

 

инструмент

», 

что

 

обеспечивает

 

более

 

тон

-

кую

 

настройку

 

фильтра

 

и

как

 

следствие

более

 

быстрый

 

поиск

 

необходимых

 

данных

Так

если

 

в

 

БД

 «

Режущий

 

инструмент

» 

на

 

уровне

 

Подгруппа

 

РИ

 

запись

 «

Резец

 

ГОСТ

 

18884-73» 

является

  «

применяемой

», 

то

 

на

 

уровне

 

Типоразмеры

 

при

 

включенном

 

фильтре

 

пользователь

 

снова

 

увидит

 

только

  «

отфильтрованные

» 

записи

  (

имеющие

 

непустое

 

значение

 

в

 

поле

 

Применяемость

 

таблицы

 

типоразмеров

). 

В

 

последнем

 

случае

 

требуется

 

проводить

 

настройку

 

фильтра

 

отдельно

 

для

 

каж

-

дой

 

из

 

таблиц

Управление

 

фильтром

  «

Применяемость

» 

рекомендуется

 

организовать

 

с

 

помо

-

щью

 

маркерного

 

пункта

 

в

 

контекстном

 

меню

Тогда

 

для

 

включения

  (

выключения

фильтра

 

пользователю

 

будет

 

достаточно

 

открыть

 

контекстное

 

меню

 

и

 

поставить

 

(

снять

маркер

 

напротив

 

пункта

 

Применяемость

 (

см

подраздел

 2.6.3). 

Напомним

что

 

наличие

 

маркера

 

напротив

 

пункта

 

контекстного

 

меню

  

определя

-

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

150

ется

 

значением

 

соответствующей

 

маркерной

 

переменной

В

 

данном

 

случае

 

значения

 

переменной

 

трактуются

 

так

1  — 

признак

  «

Применяемость

» 

включен

  (

установлен

 

маркер

 

напротив

 

пункта

 

Применяемость

 

в

 

контекстном

 

меню

); 

0 — 

признак

 «

Применяемость

» 

выключен

 (

снят

 

маркер

 

напротив

 

пункта

 

Приме

-

няемость

 

в

 

контекстном

 

меню

). 

 

Для

 

фильтра

 «

Применяемость

» 

рекомендуется

 

всегда

 

использовать

 

одно

 

имя

 

маркерных

 

переменных

 (

например

, APPLY). 

Процедура

 

регистрации

 

маркерного

 

пункта

 

контекстного

 

меню

 

подробно

 

рас

-

смотрена

 

в

 

подразделе

  3.5.2. 

Допустим

маркерная

 

переменная

 

имеет

 

имя

  APPLY. 

Тогда

 

если

  APPLY 

принимает

 

значение

  «1», 

то

 

необходимо

 

для

 

пользователя

 

вы

-

брать

 

записи

связанные

 

ключами

 

с

 

предыдущей

 

таблицей

 

и

 

имеющие

 

непустое

 

зна

-

чение

 

в

 

поле

 

Применяемость

В

 

противном

 

случае

 

необходимо

 

выбрать

 

все

 

записи

связанные

 

ключами

 

с

 

предыдущей

 

таблицей

Проверка

 

указанного

 

условия

 

осуществляется

 

операторами

 VB, 

а

 

выбор

 

записей

 

— 

соответствующими

  SQL-

запросами

То

 

есть

 

требуется

 

составить

  VB-

функцию

 

и

 

зарегистрировать

 

ее

 

на

 

вкладке

 

Атрибуты

 

объекта

 (

или

 

Атрибуты

 

связей

 

объекта

 

при

 

индивидуальной

 

настройке

 

связи

Редактора

 

навигационных

 

схем

Стандартную

 VB-

функцию

отрабатывающую

 

фильтрацию

 

данных

 

по

 

полю

 

При

-

меняемость

рассмотрим

 

на

 

примере

 

уровня

 

Модель

 

станка

 

БД

  «

Станки

  (

демо

)» 

(

таблица

 

STANOK3

). 

Для

 

этого

 

уровня

 

зарегистрирована

 

следующая

  VB-

функция

 

(

вкладка

 

Атрибуты

 

объекта

 

Редактора

 

навигационных

 

схем

рис

. 3.60):  

VBScript

 

SQL

 

function

 

SQL

(x,y) 

If

 <APPLY> = 1 

then

  

SQL 

=  "Select  *  from  STANOK3  where  (primen  is  not  null)  and  (primen<>'')  and 

(FID=#STANOK2.ID) order by MODELSTANKA " 

else 

SQL

 = " Select * from stanok3 where FID=#STANOK2.ID  order by MODELSTANKA " 

End If 
End Function 

Разбирая

 

построчно

 

приведенную

  VB-

функцию

получим

 

следующую

 

интерпре

-

тацию

1) 

записывается

 

идентификатор

 VB-

функции

 (

VBScript

), 

после

 

которого

 

указывает

-

ся

 

имя

 

функции

 (

SQL

); 

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

151

2) 

объявляется

 

функция

 

SQL

 

с

 

двумя

 

параметрами

 

х

 

и

 

у

 (

о

 

параметрах

 VB-

функций

 

см

подраздел

 3.14.3); 

3) 

проверяется

 

условие

  <APPLY>  =  1  (

напомним

что

 

возможные

 

значения

 

<APPLY> = {0, 1}); 

4) 

если

 

это

 

условие

 

выполняется

то

 

формируется

 SQL-

запрос

 

вида

Select

  * 

from

 

STANOK3

 

where

  (PRIMEN 

is  not  null

and

  (PRIMEN<>'') 

and

 

(FID=#STANOK2.ID) 

order by

 MODELSTANKA 

Данным

 

запросом

 

производится

 

выборка

  (

select

всех

 

записей

  (*) 

из

 

таблицы

 

STANOK3

 (

from

 

STANOK3

), 

в

 

которых

 (

where

значение

 

поля

 

PRIMEN

 

не

 <null> 

(PRIMEN 

is not null

и

 

не

 

пустая

 

строка

 (PRIMEN<>'')

1

и

 

значения

 

поля

 

FID

 

таб

-

лицы

 

STANOK3

 

равны

 

значению

 

переменной

 

ID

записанной

 

в

 

DataCopy

 

из

 

таб

-

лицы

 

STANOK2

 (FID=#STANOK2.ID). 

Выбранные

 

записи

 

сортировать

 

в

 

порядке

 

возрастания

 

по

 

значению

 

в

 

поле

 

MODELSTANKA

 (

order by

 MODELSTANKA). 

То

 

есть

 

данным

 

запросом

 

из

 

таблицы

 

STANOK3

 

выбираются

 

все

 

записи

связан

-

ные

 

ключами

 

с

 

указанной

 

пользователем

 

записью

 

таблицы

 

STANOK2

 

и

 

имею

-

щие

 

непустое

 

значение

 

в

 

поле

 

Применяемость

 (

PRIMEN

); 

5) 

если

 

указанное

 

условие

 

не

 

выполняется

то

 

формируется

 SQL-

запрос

 

вида

Select

 * 

from

 

STANOK3

 

where

 FID=#STANOK2.ID  

order by

 MODELSTANKA 

Данным

 

запросом

 

производится

 

выборка

  (

select

всех

 

записей

  (*) 

из

 

таблицы

 

STANOK3

  (

from

 

STANOK3

), 

в

 

которых

  (

where

значения

 

поля

 

FID

 

таблицы

 

STANOK3

 

равны

 

значению

 

переменной

 

ID

записанной

 

в

 

DataCopy

 

из

 

таблицы

 

STANOK2

  (FID=#STANOK2.ID). 

Выбранные

 

записи

 

сортировать

 

в

 

порядке

 

воз

-

растания

 

по

 

значению

 

в

 

поле

 

MODELSTANKA

 (

order by

 MODELSTANKA); 

То

 

есть

 

данным

 

запросом

 

из

 

таблицы

 

STANOK3

 

выбираются

 

все

 

записи

связан

-

ные

 

ключами

 

с

 

указанной

 

пользователем

 

записью

 

таблицы

 

STANOK2

  (

без

 

до

-

полнительного

 

отбора

 

по

 

данным

 

поля

 

Применяемость

); 

6) 

фиксируется

 

конец

 

записей

  VB-

функции

принадлежавших

 

проверке

 

условия

 

<APPLY> = 1 (

End If

); 

7) 

фиксируется

 

конец

 

тела

 

функции

 (

End Function

). 

 

Перед

 

выполнением

 VB-

функции

 

интерпретатор

 

ВЕРТИКАЛЬ

-

Справочники

 

подставляет

 

в

 

текст

 

функции

 

текущие

 

значения

 

маркерным

 

переменных

поэтому

 

в

  VB-

функции

 

недопустимы

 

операторы

 

присвоения

  (=) 

этим

 

пе

-

ременным

 

каких

-

либо

 

значений

                                                        

1

 

В

 

СУБД

 InterBase 

значение

 <null> 

присваивается

 

ячейке

в

 

которую

 

ни

 

разу

 

не

 

вводились

 

данные

Если

 

в

 

ячейку

 

были

 

введены

 

какие

-

либо

 

данные

а

 

затем

 

удалены

 

оттуда

то

 

ячейка

 

имеет

 

значение

 

пустой

 

строки

 («»). 

В

 

СУБД

 ORACLE 

и

 MS SQL Server 

таких

 

различий

 

в

 

значениях

 

нет

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

152

 

Рис

. 3.60. 

Регистрация

 VB-

функции

 

для

 

уровня

 

Модель

 

станка

 (

БД

 «

Станки

(

демо

)») 

Общий

 

алгоритм

 

настройки

 

фильтрации

 

данных

 

по

 

признаку

  «

Применяемость

» 

для

 

какой

-

либо

 

таблицы

 

БД

 

состоит

 

из

 

следующих

 

операций

1. 

В

 

таблицу

для

 

которой

 

настраивается

 

фильтр

добавьте

 

новое

 

поле

 

типа

 

String

 

(

символьный

длиной

 1 

символ

Добавление

 

нового

 

поля

 

в

 

таблицу

 

производит

-

ся

 

в

 

любом

 

специальном

 

приложении

2. 

Используя

 

раздел

 

Сервис

 

основного

 

меню

 

ВЕРТИКАЛЬ

-

Справочники

загрузите

 

каталог

 

баз

 

данных

 

в

 

рабочее

 

поле

 

системы

3. 

На

 

уровне

 

Разделы

 

найдите

 

БД

которой

 

принадлежит

 

настраиваемая

 

таблица

и

 

двойным

 

щелчком

 

мыши

 

на

 

пиктограмме

 

запустите

 

Редактор

 

навигационных

 

схем

4. 

В

 

схеме

 

навигации

 

БД

 

активизируйте

 

мышью

 

уровень

под

 

которым

 

зарегистри

-

рована

 

настраиваемая

 

таблица

и

 

перейдите

 

на

 

вкладку

 

Атрибуты

 

объекта

5. 

В

 

поле

 

Шаблон

 SQL-

запроса

 

сформируйте

 VB-

функцию

аналогичную

 

рассмот

-

ренной

 

в

 

примере

Закройте

 

Редактор

6. 

Перейдите

 

на

 

уровень

 

Таблицы

 

каталога

 

БД

Выберите

 

курсором

 

регистраци

-

онную

 

запись

 

настраиваемой

 

таблицы

В

 

поле

 

SQL

 

должен

 

отобразиться

 

вве

-

денный

 

в

 

Редакторе

 

текст

 VB-

функции

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

153

7. 

Двойным

 

щелчком

 

мыши

 

на

 

пиктограмме

  «

Фильтры

» 

откройте

 

таблицу

 

SPIS_KMP3

Зарегистрируйте

 

маркерный

 

пункт

  «

Применяемость

» 

контекстного

 

меню

 

и

 

соответствующую

 

ему

 

маркерную

 

переменную

8. 

Перейдите

 

на

 

уровень

 

Записи

 

каталога

 

БД

Нажатием

 

клавиши

 <

F3

откройте

 

приложение

 

Редактор

 

структуры

 

данных

Определите

 

структуру

 

данных

 

нового

 

поля

добавленного

 

в

 

п

. 1 

алгоритма

и

 

закройте

 

Редактор

9. 

На

 

пустую

 

вкладку

 

блокнота

 

загрузите

 

БД

в

 

которой

 

проводились

 

настройка

 

фильтра

Если

 

признак

  «

Применяемость

» 

установлен

 

включенным

 

по

 

умолча

-

нию

то

 

щелком

 

правой

 

кнопки

 

мыши

 

откройте

 

контекстное

 

меню

 

и

 

снимите

 

мар

-

кер

 

напротив

 

пункта

 

Применяемость

10. 

В

 

записях

которые

 

должны

 

отображаться

 

для

 

пользователя

 

при

 

включенном

 

фильтре

введите

 

символ

 «+» 

в

 

добавленном

 

поле

 

Применяемость

11. 

Щелком

 

правой

 

кнопки

 

мыши

 

откройте

 

контекстное

 

меню

 

и

 

поставьте

 

маркер

 

на

-

против

 

пункта

 

Применяемость

Проверьте

 

функционирование

 

фильтра

3.15.2. 

Настройка

 

фильтрации

 

данных

 

по

 

признаку

 «

Связь

» 

Настройка

 

фильтрации

 

данных

 

по

 

признаку

 «

Связь

» 

обычно

 

проводится

 

для

 

таб

-

лиц

 

всех

 

уровней

 

БД

Как

 

и

 

в

 

случае

 

настройки

 

фильтра

 «

Применяемость

», 

кроме

 

ус

-

ловия

 

выбора

 

записей

 

по

 

признаку

 «

Связь

» 

следует

 

соблюдать

 

связь

 

записей

 

таблиц

 

по

 

первичным

 

и

 

внешним

 

ключам

Управление

 

фильтром

 «

Связь

» 

рекомендуется

 

организовать

 

с

 

помощью

 

маркер

-

ного

 

пункта

 

в

 

контекстном

 

меню

 (

по

 

аналогии

 

с

 

фильтром

 «

Применяемость

»). 

В

 

слу

-

чае

 

настройки

 

фильтра

  «

Связь

» 

значения

 

маркерной

 

переменной

 

трактуются

 

сле

-

дующим

 

образом

1 — 

признак

 «

Связь

» 

включен

 (

установлен

 

маркер

 

напротив

 

пункта

 

Связь

 

в

 

кон

-

текстном

 

меню

); 

0 — 

признак

 «

Связь

» 

выключен

 (

снят

 

маркер

 

напротив

 

пункта

 

Связь

 

в

 

контекст

-

ном

 

меню

). 

 

Для

 

фильтра

 «

Связь

» 

рекомендуется

 

всегда

 

использовать

 

одно

 

имя

 

мар

-

керных

 

переменных

 (

например

, LINK). 

Допустим

маркерная

 

переменная

 

имеет

 

имя

  LINK. 

Тогда

 

если

  LINK 

принимает

 

значение

  «0» 

или

 

нет

 

данных

 

о

 

ключевом

 

атрибуте

 

объекта

с

 

которым

 

настроена

 

связь

1

то

 

необходимо

 

выбрать

 

все

 

записи

связанные

 

ключами

 

с

 

предыдущей

 

табли

-

цей

В

 

противном

 

случае

 

необходимо

 

для

 

пользователя

 

выбрать

 

записи

 

с

 

учетом

 

двух

 

требований

 

записи

 

должны

 

быть

 

связаны

 

ключами

 

с

 

предыдущей

 

таблицей

                                                        

1

 

Последовательность

 

получения

 

данных

 

об

 

атрибуте

 

объекта

 

приведена

 

в

 

разделе

 4.1. 

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

154

 

записи

 

должны

 

содержать

 

атрибуты

 

только

 

тех

 

объектов

 

ВЕРТИКАЛЬ

-

Справочники

для

 

которых

 

настроены

 

ассоциативные

 

связи

 

с

 

заданным

 

объек

-

том

1

Таким

 

образом

первая

 

часть

 

требований

 

относится

 

к

 

реляционной

 

структуре

 

данных

вторая

 — 

к

 

объектной

Проверка

 

выполнения

 

условий

 

осуществляется

 

операторами

 Visual Basic, 

а

 

вы

-

бор

 

записей

 

в

 

соответствии

 

с

 

указанными

 

требованиями

 — SQL-

запросами

То

 

есть

как

 

и

 

при

 

настройке

 

фильтра

  «

Применяемость

», 

требуется

 

составить

 VB-

функцию

 

и

 

зарегистрировать

 

ее

 

на

 

вкладке

 

Атрибуты

 

объекта

 (

или

 

Атрибуты

 

связей

 

объекта

 

в

 

случае

 

индивидуальной

 

настройки

 

связи

Редактора

 

навигационных

 

схем

 

Для

 

оптимизации

 

работы

 

с

 

фильтром

 «

Связь

» 

его

 

настройку

 

рекоменду

-

ется

 

проводить

 

для

 

всех

 

уровней

 

БД

 

Рис

. 3.61. 

Упрощенная

 

структура

 

БД

 «

Режущий

 

инструмент

» 

Стандартную

  VB-

функцию

отрабатывающую

 

фильтр

  «

Связь

», 

рассмотрим

 

на

 

примере

 

уровня

 

Группа

 

РИ

 

БД

 «

Режущий

 

инструмент

» (

таблица

 

RI2

). 

Объекты

 

класса

 

RI

  («

Режущий

 

инструмент

») 

имеют

 

настроенные

 

ассоциативные

 

связи

2

 

с

 

объектом

 

класса

 

STANOK

  («

Оборудование

»). 

Упрощенная

 

структура

 

базы

 

данных

 

приведена

 

на

 

рис

. 3.61. 

Итак

при

 

включенном

 

фильтре

 «

Связь

» 

и

 

наличии

 

данных

 

о

 

ключевом

 

атрибуте

 

станка

 (

STANOK.ID

должны

 

отображаться

 

только

 

те

 

записи

 

из

 

таблицы

 

RI2

которые

 

связаны

 

внешним

 

ключом

 

с

 

записью

выбранной

 

пользователем

 

в

 

таблице

 

RI1

 

(

уровень

 

Вид

 

РИ

); 

 

имеют

 

подчиненные

 

записи

 

в

 

таблицах

 

типоразмеров

которые

 

содержат

 

ключе

-

вые

 

атрибуты

 

объектов

связанных

 

ассоциативной

 

связью

 

с

 

заданным

 

объектом

 

станка

Чтобы

 

составить

 VB-

функцию

 

для

 

фильтра

 «

Связь

» 

на

 

уровне

 

Группа

 

РИ

тре

-

                                                        

1

 

Здесь

 

следует

 

отметить

что

 

в

 

общем

 

случае

 

отбираемые

 

записи

 

могут

 

не

 

содержать

 

вообще

 

никаких

 

значений

 

атрибутов

Самое

 

главное

 

то

что

 

пользователь

, «

двигаясь

» 

по

 

навигационной

 

схеме

 

БД

мог

 

«

прийти

» 

только

 

к

 

тем

 

значениям

 

ключевого

 

атрибута

 

объектов

которые

 

содержатся

 

в

 

таблице

 

согласо

-

вания

 

связей

 (

см

подраздел

 4.3.1). 

2

 

Процедура

 

настройки

 

ассоциативных

 

связей

 

между

 

объектами

 

рассмотрена

 

в

 

разделе

 4.3. 

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

155

буется

 

предварительно

 

собрать

 

следующие

 

данные

 

ключевым

 

атрибутом

 

объектов

 

класса

 

STANOK

 

является

 

атрибут

 

STANOK.ID

 

ключевым

 

атрибутом

 

объектов

 

класса

 

RI

 

является

 

атрибут

 

RI.ID

Значения

 

ключевого

 

атрибута

 

хранятся

 

в

 

таблицах

 

типоразмеров

 

РИ

 

и

 

в

 

таблице

 

согласо

-

вания

 

ключей

 

RI4

 (

поле

 

GUID

). 

 

связи

 

между

 

объектами

 

классов

 

STANOK

 

и

 

RI

 

хранятся

 

в

 

таблице

 

согласова

-

ния

 

связей

 

LINKS_STANOK_RI

 

записи

 

таблицы

 

RI2

 

связаны

 

с

 

записями

 

таблицы

 RI4 (

и

соответственно

с

 

таб

-

лицами

 

типоразмеров

через

 

таблицу

 

RI3

 (

уровень

 

Подгруппа

 

РИ

рис

. 3.61); 

Теперь

 

можно

 

перейти

 

к

 

анализу

 

текста

 VB-

функции

Для

 

уровня

 

Группа

 

РИ

 

за

-

регистрирована

 

следующая

  VB-

функция

  (

вкладка

 

Атрибуты

 

объекта

 

Редактора

 

на

-

вигационных

 

схем

рис

. 3.62):  

VBScript

 

RI

 

function

 

RI

(x,y) 

If

  (<LINK> = 1) and (":STANOK.ID"<>"null") 

then

 

RI

 = "Select distinct RI2.* from RI2, RI3, RI4, LINKS_STANOK_RI L where 

(RI2.ID=RI3.FID) and (RI3.ID=RI4.FID) and (RI2.FID=#RI1.ID) and 
(RI4.GUID=L.ID_TABLE2) and (L.ID_TABLE1=" & ":STANOK.ID" &")" 

else 

RI

 = "Select  *  from RI2 where RI2.FID=#RI1.ID"   

End If 
End Function 

Разбирая

 

построчно

 

приведенную

  VB-

функцию

получим

 

следующую

 

интерпре

-

тацию

1) 

записывается

 

идентификатор

 VB-

функции

 (

VBScript

), 

после

 

которого

 

указывает

-

ся

 

имя

 

функции

 (

RI

); 

2) 

объявляется

 

функция

 

RI

 

с

 

двумя

 

параметрами

 

х

 

и

 

у

 (

о

 

параметрах

 VB-

функций

 

см

подраздел

 3.14.3); 

3) 

проверяется

 

совместное

 

выполнение

 

условий

  <LINK>  =  1  (

установлен

 

маркер

 

напротив

 

пункта

 

Связь

 

контекстного

 

меню

и

 :STANOK.ID 

 "null" (

имеется

 

зна

-

чение

 

ключевого

 

атрибута

 

объекта

  «

Оборудование

», 

с

 

которым

 

ассоциативно

 

связаны

 

объекты

 «

Режущий

 

инструмент

»); 

4) 

если

 

это

 

условие

 

выполняется

то

 

формируется

 

сложный

 SQL-

запрос

 

вида

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

156

Select

 

distinct

 

RI2

.* 

from

 

RI2

RI3

RI4

LINKS_STANOK_RI

 

L

 

where

 

(RI2.FID=#RI1.ID) 

and

 

(RI2.ID=RI3.FID) 

and

 

(RI3.ID=RI4.FID) 

and

 

(RI4.GUID=L.ID_TABLE2) 

and

 (L.ID_TABLE1=" & ":STANOK.ID" &")

 

Данным

 

запросом

 

производится

 

выборка

 (

select

без

 

дублирования

 

данных

 (

dis-

tinct

всех

 

записей

  

из

 

таблицы

 

RI2

 (

RI2.*

с

 

учетом

 «

склейки

» 

из

 

таблиц

 

RI2

RI3

RI4

LINKS_STANOK_RI

  (

таблице

 

LINKS_STANOK_RI

 

присвоен

 

алиас

 

L

 

для

 

со

-

кращения

 

записи

 

запроса

), 

для

 

которых

 (

where

выполняются

 

следующие

 

усло

-

вия

1

Условие

 

Интерпретация

 

L.ID_TABLE1="& ":STANOK.ID" &"

 

Значения

 

поля

 

ID_TABLE1

 

таблицы

 

LINKS_STANOK_RI

 

равны

 

заданному

 

значению

 

ключевого

 

атрибута

 

STANOK.ID

 

 

из

 

БД

  «

Ре

-

жущий

 

инструмент

» 

отбираются

 

только

 

записи

 

со

 

значениями

 

атрибутов

 

объектов

которые

 

имеют

 

ассоциативные

 

связи

 

с

 

заданным

 

объектом

 

STANOK.ID

2

RI4.GUID=L.ID_TABLE2 

Значения

 

поля

 

GUID

 

таблицы

 

RI4

 

равны

 

значению

 

поля

 

ID_TABLE2

 

таблицы

 

LINKS_STANOK_RI

 

 

обеспечивается

 

переход

 

от

 

таблицы

 

согласования

 

связей

  (

LINKS_STANOK_RI

к

 

таблице

 

согласова

-

ния

 

ключей

 (

RI4

).  

RI3.ID=RI4.FID 

Значения

 

поля

 

ID

 

таблицы

 

RI3

 

равны

 

значению

 

поля

 

FID

 

таблицы

 

RI4

 

 

обеспечивается

 

отбор

 

за

-

писей

 

с

 

учетом

 

связи

 

таблиц

 

RI3

 

и

 

RI4

 

по

 

ключам

RI2.ID=RI3.FID 

Значения

 

поля

 

ID

 

таблицы

 

RI2

 

равны

 

значению

 

поля

 

FID

 

таблицы

 

RI3

 

 

обеспечивается

 

отбор

 

за

-

писей

 

с

 

учетом

 

связи

 

таблиц

 

RI2

 

и

 

RI3

 

по

 

ключам

RI2.FID=#RI1.ID 

Значения

 

поля

 

FID

 

таблицы

 

RI2

 

равны

 

значению

 

поля

 

ID

 

таблицы

 

RI1

хранящейся

 

в

 

DataCopy

 

 

обеспечивается

 

отбор

 

записей

 

с

 

учетом

 

связи

 

таб

-

лиц

 

RI1

 

и

 

RI2

 

по

 

ключам

5) 

если

 

хотя

 

бы

 

одно

 

из

 

указанных

 

условий

 

не

 

выполняется

то

 

формируется

 SQL-

запрос

 

вида

Select

 * 

from

 

RI2

 

where

 RI2.FID=#RI1.ID 

                                                        

1

 

Условия

 

рассмотрены

 

в

 

обратном

 

порядке

 

для

 

более

 

ясного

 

понимания

 

текста

 SQL-

запроса

Порядок

 

следования

 

условий

 

в

 

тексте

 

предиката

 

может

 

быть

 

произвольным

2

 

Здесь

 

также

 

можно

 

пояснить

 

синтаксис

 

правой

 

части

 

равенства

 "&":STANOK.ID"&". 

Операторами

 «&» 

производится

 

необходимое

 

объединение

 

значения

 

STANOK.ID

 

с

 

кавычками

интерпретатор

 

ВЕРТИ

-

КАЛЬ

-

Справочники

 

заменяет

  ":STANOK.ID" 

на

 

конкретное

 

текстовое

 

значение

которое

 

для

 

сохранения

 

синтаксиса

 SQL-

запроса

 

требуется

 

заключить

 

в

 

кавычки

.  

Глава

 3. 

Проектирование

 

реляционной

 

структуры

 

пользовательских

 

баз

 

данных

 

ВЕРТИКАЛЬ

-

Справочники

 

 

157

Данным

 

запросом

 

производится

 

выборка

 (

select

всех

 

записей

 (*) 

из

 

таблицы

 

RI2

 

(

from

 

RI2

), 

в

 

которых

 (

where

значения

 

поля

 

FID

 

таблицы

 

RI2

 

равны

 

значению

 

переменной

 

ID

записанной

 

в

 

DataCopy

 

из

 

таблицы

 

RI1

 (RI2.FID=#RI1.ID). 

С

 

по

-

мощью

 

запроса

 

из

 

таблицы

 

RI2

 

выбираются

 

все

 

записи

связанные

 

ключами

 

с

 

указанной

 

пользователем

 

записью

 

таблицы

 

RI1

 (

без

 

дополнительного

 

отбора

 

по

 

признаку

 «

Связь

»); 

6) 

фиксируется

 

конец

 

записей

  VB-

функции

принадлежавших

 

проверке

 

условий

 

(

End If

); 

7) 

фиксируется

 

конец

 

тела

 

функции

 (

End Function

). 

 

Рис

. 3.62. 

Регистрация

 VB-

функции

 

для

 

уровня

 

Группа

 

РИ

 

Общий

 

алгоритм

 

настройки

 

фильтрации

 

данных

 

по

 

признаку

 «

Связь

» 

для

 

какой

-

либо

 

БД

 

состоит

 

из

 

следующих

 

операций

1. 

На

 

основании

 

структур

 

связываемых

 

информационных

 

массивов

 

сформируйте

 

и

 

зарегистрируйте

 

классы

 

и

 

атрибуты

 

объектов

Соответствующие

 

алгоритмы

 

при

-

ведены

 

в

 

разделе

 4.2. 

2. 

Настройте

 

ассоциативные

 

связи

 

между

 

объектами

 

классов

зарегистрированны

-

ми

 

в

 

п

.  1 

алгоритма

Из

 

информационной

 

панели

 

Редактора

 

связей

 

выпишите

 

имя

 

таблицы

 

согласования

 

связей

Процедуры

 

создания

 

нового

 

тип

 

связи

 

и

 

на

-

стройки

 

связей

 

изложены

 

в

 

разделе

 4.3. 

ВЕРТИКАЛЬ

-

Справочники

Руководство

 

пользователя

 

 

158

3. 

Используя

 

раздел

 

Сервис

 

основного

 

меню

 

ВЕРТИКАЛЬ

-

Справочники

загрузите

 

каталог

 

баз

 

данных

 

в

 

рабочее

 

поле

 

системы

4. 

На

 

уровне

 

Разделы

 

найдите

 

БД

для

 

которой

 

настраивается

 

фильтр

 «

Связь

», 

и

 

двойным

 

щелчком

 

мыши

 

на

 

пиктограмме

 

запустите

 

Редактор

 

навигационных

 

схем

5. 

В

 

поле

 

Шаблон

 SQL-

запроса

 

сформируйте

 VB-

функцию

аналогичную

 

рассмот

-

ренной

 

в

 

примере

и

 

закройте

 

Редактор

Формирование

 VB-

функций

 

рекоменду

-

ется

 

проводить

 

для

 

всех

 

уровней

 

БД

составляющих

 

основную

 

цепочку

 

выбора

 

данных

6. 

Перейдите

 

на

 

уровень

 

Таблицы

 

каталога

 

БД

Выберите

 

курсором

 

регистраци

-

онную

 

запись

 

первой

 

настроенной

 

таблицы

В

 

поле

 

SQL

 

должен

 

отобразиться

 

введенный

 

в

 

Редакторе

 

текст

 VB-

функции

7. 

Двойным

 

щелчком

 

мыши

 

на

 

пиктограмме

  «

Фильтры

» 

откройте

 

таблицу

 

SPIS_KMP3

Зарегистрируйте

 

маркерный

 

пункт

 «

Связь

» 

контекстного

 

меню

 

и

 

со

-

ответствующую

 

ему

 

маркерную

 

переменную

8. 

Повторите

 

действия

 

п

. 6 – 7 

для

 

всех

 

таблиц

у

 

которых

 

по

 

п

. 5 

сформирована

 

VB-

функция

9. 

Проверьте

 

функционирование

 

фильтра

Для

 

упрощения

 

проверки

 

можно

 

в

  VB-

функциях

 

указать

 

конкретное

 

значение

 

ключевого

 

атрибута

3.16. 

Защита

 

данных

 

В

 

системе

 

ВЕРТИКАЛЬ

-

Справочники

 

предусмотрены

 

различные

 

способы

 

защиты

 

данных

 

ограничение

 

доступа

 

к

 

данным

 

с

 

помощью

 

присвоения

 

ранга

 

базе

 

данных

 

ограничение

 

доступа

 

к

 

данным

 

с

 

помощью

 

индивидуального

 

пароля

 

блокировка

 

отдельных

 

режимов

 

работы

 

с

 

данными

 

блокировка

 

ввода

 

данных

 

в

 

отдельные

 

поля

 

таблицы

Выбор

 

того

 

или

 

иного

 

способа

 

определяется

 

целью

 

защиты

 

данных

 (

несанкцио

-

нированный

 

доступ

повреждение

 

структуры

 

таблиц

принудительная

 

специализация

 

и

 

т

.

п

.). 

Настройка

 

первых

 

трех

 

способов

 

защиты

 

для

 

какой

-

либо

 

БД

 (

таблицы

произво

-

дится

 

на

 

уровне

 

Таблицы

 

каталога

 

БД

 

или

 

в

 

Редакторе

 

навигационных

 

схем

Блоки

-

ровка

 

ввода

 

данных

 

в

 

отдельные

 

поля

 

таблицы

 

фиксируется

 

в

 

приложении

 

Редактор

 

структуры

 

данных

Следует

 

отметить

что

 

все

 

изложенные

 

ниже

 

операции

 

ограничения

 

доступа

 

к

 

данным

 (

кроме

 

блокировки

 

полей

действительны

 

только

 

для

 

выбранной

 

БД

 (

списка

). 

Если

 

какая

-

либо

 

защищаемая

 

таблица

 

зарегистрирована

 

в

 

нескольких

 

списках

то

 

 

 

 

 

 

 

содержание      ..     17      18      19      20     ..