русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЭВОЛЮЦИЯ ОПЕРАЦИОННЫХ СИСТЕМ


Дата добавления: 2013-12-23; просмотров: 1327; Нарушение авторских прав


Схема взаимодействия С++ Bilder с БД

Создание приложения.

….

Class MyClass

….

….

Private:

Int a;

}

Class::MyClass(Int A){ SetA(0);}

MyClass Мс (1);

MyClass * РМс = new MyClass(1);

Передача параметров в конструктор. 1 передается в SetA.

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

Имя совпадает с именем класса, но перед ним записывается символ Тильда - ~.

Пример:

{ public:

MyClass(int)

~ MyClass();

Private:

Int a;

}

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

 

ШАБЛОНЫ КЛАССА.

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

Описание шаблона класса:

Template <class идентификатор>

Class имя класса

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

Пример:

Template <class T> class Matrix

{T * data;

Int N;

Int M;

Matrix (Int n; int m)

~ Matrix () {delete [] data;}

}

Создание свойств класса:

{property T Item [int;]

[int j] = {read = Get Item;

write = Set Item};



}

Описание фунций:

{private:

T_fastcall Get Item(int I; int j )

Void_ fastcall Set Item(int I; int j )

Tvalue

}

// конструктор

Template <class T> class Matrix

Matrix (Int n; int m)

{data = new T[n*m];

For (int i=0; I<n*m; i++)

Data [i]=0;

N=n;

M=m;

}

 

Лекция 7

Описание функции : GetItem и SetItem.

Template <classT> void__fastcall

Matrix <T> :: SetItem (Int I, int j, Tvaiue)

{//запись значения value в элемент}

If ((i<0) || (i>N) || (j<0) || (j>M))

ShowMessage(‘Недопустимые индексы’);

Else

Data[i][j]=value;

}

- проверка на индекс

- значения записываются в массив.

Templase<classT>t __fastcall Matrix <T>::

GetItem(int I, intj);

// чтение элемента с индексом I j

{

If ((i<0) || (i>n) || (j<0) || (j>m))

ShowMessage(‘недопустимые индексы’);

Else

Return //возврат

Data[i][j];

}

Чтение массива

 

Создание экземпляра матрицы комплексного типа Matrix<float> mas (4,5);

 

Этот оператор создает матрицу действительных чисел размером 4х5

Matrix – имя шаблона.

Float тип действительных чисел.

() – вызов конструктора.

 

Запись элементов матрицы осуществляется через свойство item :

Mas.item[2][3]= 12

Float j=mas.item[0][1]

 

Функции.

Описания.

Тип_возрощаемого_значения

Имя функции(параметры)

{оператор тала функции}

Пример

Int sum (int I , int j)

{ }

 

Как привило в функции записывают часто заполняемые в теле программы однотипные операции.

Функция «видит» все глобальные переменные описанные в теле программы.

Переменная описанная в теле функции создается в момент вывода функции и уничтожается в момент выхода из функции.

Выход из функции может также осуществляется следующим способами.

1 если функция не должна возвращать не какого значения то выход из нее происходит по достижению закрывающей её тело фигурной скобки.

2 если функция должна возращать некоторое значение то нормальный выход из нее осуществляется оператором

return выражение .

Пример:

Void SM( int x)

{

If (x<0)

ShowMessage(‘Значение должно быть больше 0’);

}

//Вызов функции из программы

SM(StrToInt(edit1->text));

 

Пример:

 

Int errorm (int x)

{

If (x<0)

{

ShowMessage(‘Значение должно быть больше 0’);

Return 1;

}

Else

{

Return 0;

}

}

//Возврат из программы

Y= StrToInt(Edit1->text);

If(errorm(y) = = 0)

{

//операторы

}

 

Лекции 8,9

 

BDE “Borland DataBase Engine”

 

Процессор БД фирмы Borland. Выступает посредником (обработчиком) всех запросов всех запросов к файла БД от компонента для работы с БД. Содержит в себе процедуры информации обеспечивающие функционирование всех компонентов палитры BDE и не только.

 

Автономная БД

 

Автономная локальная БД являются наиболее простыми. Они хранят свои данные в локальной файловой системе на том компьютере на котором установлены.

Система управления и машина БД осуществляет к ним доступ находиться на том же самом компе.

Сеть не используется.

Автономия БД полезны для развития технических приложений, которые распространены среди многих пользователей каждый из которых поддерживает отдельную БД.

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

 

Файл серверная БД.

 

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

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

Недостаток – непроизвольная загрузка сети т.к. при каждом обращении к БД пользователю передается полная копия БД.

 

БД клиент-сервер.

В случае к-с доступ к БД для групп клиентов выполняется сервером.

Клиент дает задание серверу выполнить те или иные операции с БД, сервер ориентированный на операции с запросами, самыми оптимальным образом выполняет их и сообщает клиенту только результат своей работы.

+ разгружается сеть

+ хороший контроль целостности и безопасности БД.

При проектировании возникает проблема : создать такое приложение и такую БД которая максимально использовали возможности сервера.

 

Многоярусные БД.

Multitier

Наиболее распространен 3-х ярусный вариант.

  • на нижнем уровне , не ПК пользователя расположены приложения клиента обеспечивающие пользовательский интерфейс.
  • На втором уровне расположен сервер приложений обеспечивающий обмен данными между пользователями распределения БД. Сервер приложений размещается в узле сети доступном всем клиентам
  • На 3-м уровне расположен удаленный сервер БД. Принимающий информацию от серверов приложений и управляет ими.

Подобные концепцию обработки инфы используют фирмы Oracle и Sun

 

Особенности:

На нижнем уровне не требуется установки BDE что является приимуществом.

 

Организация работы с БД в C++ Bilder

См рис ниже

При работе с БД приложение обрабатывается в BDE и сообщает псевлоним ьд и необходимую таблицу к ней

BDE реализован в виде dll которые снабжены IDAPI (список процедурных функций для работы с БД).

BDE по псевдониму находить подходящий драйвер (вспомогательная программа которая понимает как обращаться к БД определенного типа).

Если в BDE имеется свой драйвер соответствующий СУБД то BDE связывается через него с БД использует необходимую таблицу обрабатывает запрос и возвращает результат обратно.

BDE поддерживает естественный доступ к:

- БД MS Access

- БД FoxPro

-БД Paradox

-БД Dbase

Если своего драйвера нет то используется драйвер ODBC –это dll аналогичный по функциям BDE но разработан фирмой MS.

Поскольку MS поддержку ODBC в свои офисные продукции и для ODBC созданы драйвера почти к любой БД фирма Borland включила в свой продукт поддержку данного драйвера.

 

 

Лекция 10

 

BDE поддерживает SQL позволяющий обмениваться данными c SQL серверами.

-SY Base

-MS SQL

- Oracle

- Inter Base

Начиная с C++ Bilder 5 введена другая альтернативная возможность работы с БД минуя BDE. Это разработанная в MS технология ActiveX Date Object (ADO)

ADO – пользовательский интерфейс к любым типам данных включая реляционные и не реляционные БД, элкторнную почту, системы текстовых и графических файлов.

Связь с данными осуществляется по технологии OLE DB

 

Утилита для создания БД DataBase Desktop

 

  1. Загрузит DBD
  2. file\new\table
  3. выбрать драйвер Paradox 7
  4. В появившемся окне описть структуру таблицы.

Типы полей в Paradox/

 

Тип Константа Содержимое поля
Alpha A Строка символов. Максимальная длина строки определяется характеристикой Size, значения которой находятся в диапазоне 1—255
Number N Число из диапазона 10-307— 10308 с 15-ю значащими цифрами
Money $ Число в денежном формате. Цифры числа делятся на группы при помощи разделителя групп разрядов. Также выводится знак денежной единицы
Short S Целое число из диапазона -32767—32767
Long Integer I Целое число из диапазона -2 147 483 648-2 147 483 647
Date D Дата
Time Т Время с полуночи, выраженное в миллисекундах
Time stamp @ Время и дата
Memo M Строка символов произвольной длины. Поле типа Memo используется для хранения текстовой информации, которая не может быть сохранена в поле типа Alpha. Размер поля (1—240) определяет, сколько символов хранится в таблице. Остальные символы хранятся в файле, имя которого совпадает с именем файла таблицы, а расширение файла — mb
Formatted Memo F Строка символов произвольной длины (как у типа Memo). Имеется возможность указать тип и размер шрифта, способ оформления и цвет символов
Graphic G Графика
Logical L Логическое значение "истина" (True) или "ЛОЖЬ" (False)
Auto-increment + Целое число. При добавлении к таблице очередной записи в поле записывается число на единицу большее, чем находится в соответствующем поле последней добавленной записи
     

 

Задание св-в таблицы.

 

Тип Константа Содержимое поля
Bytes Y Двоичные данные. Поле этого типа используется для хранения данных, которые не могут быть интерпретированы Database Desktop
Binary В Двоичные данные. Поле этого типа используется для хранения данных, которые не могут быть интерпретированы Database Desktop. Как и данные типа Memo, эти данные не находятся в файле таблицы. Поля типа Binary, как правило, содержат audio-данные

 

 

В окне редактирования справа сверху заголовок Table Properties под ним выплывающий список с рядом свойств.

Св-ва

  1. Validity checks проверка правильности значений. Вид окна может так же изменяться в зависимости от типа данных.

Возможно задать следующие характеристики поля.

    • Переключатель – Required Fields -> if checked = true -> поле обязательно к заполнению
    • Min/max value - задает границы значения числовых полей
    • Default – значение поля по умолчанию.
    • Picture – задает маску ввода (###-##-##)
    • Btn assist вызывает диалоговое окно позволяющее создать маску.
  1. table lookup- таблица просмотра

раздел позволяет связывать с каким то полем данные таблицы.

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

  1. Secondary index – вторичный индекс.

Позволяет создать необходимые для дальнейшей работы вторичные индексы. (первичные создаются по ключевым полям)

Кнопка Define открывает окно помогающее определить втор индексы.

 

Характеристики

Unique – не допускает одинаковые значения в поле входящих индексов.

Maintained – при установке флажка индексы будут автоматически обновляться при каждом изменении таблицы.

Case Sensitive – при установке будет приниматься во внимании <???> в котором введены символы.

Descending – При установке значения табл. сортируются по убыванию.

После того как индексы сформированные и нажата кнопка ОК появляется окно в котором указать имя сожраняемого индекса.

 

 

  1. Referential integrity-Позволяет обеспечить постоянные связи между данными отдельных таблиц.

 

Лекция 11.

 

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

 

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

 

 

Для создания ссылочной целостности создается диалоговое окно.

 

 

При нажатии [ç] ключевое поле в выделенной в списке таблиц таблицы добавляется в Primary Key.

При нажатии [ è ] поле (поля ) текущей таблице добавляются в child Fields.

 

Update rule определяет что будет если в головной таблице удалить или изменить значения ключевого поля с которым связаны к-л записи во вспомогательной таблице.

Если установить опцию Prohibit то DBD запретить изменение значения поля в головной таблице при наличии связи.

Cascade – при изменении значения ключевого поля в головной таблице ведет к изменению значения полей всех связанных с ней таблиц .

 

  1. Password Security – пароль доступа.

Этот разделе позволяет задать пароль для таблиц и определить для каждого из полей разращенные операции как для таблицы так и для отдельных полей.

  1. Table Language – язык таблицы.

Позволяет переопределить язык таблицы.

  1. Dependent Tables-зависимые таблицы.

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

 

 

Утилита BDE- Administrator.

 

Позволяет просматривать редактировать и создовать новые драйверы BDE БД разных типов

- стандартные

- SQL

- Access

- BDC

Окно проги имеет 2 срамницы:

DataBase

Configuration

 

Страница БД в левом части содержать список всех зарезервированных на машине БД в правой параметры для выделенной.

В зависимости от драйвера изменяться и параметры.

 

Создания псевдонима.

 

Object à New à Standart

Параметры Определение
1. Path Путьт к БД
2. Default Driver Один из следующтх драйверов Paradox *.db Dbase *.dbf FoxPro *.dbf asciiDrv *.txt  
Enable BCD Определяет должна ли БД транслировать числовые поля в значение с плавающей запятой или в коды BDC BDC позволяет избежать ошибки окружения.

 

Configuration – позволяет изменить К-л параметров <???> драйвера BDE и установить система параметры определяющее как преобразовываются строки с обозначениями дат времени чисел в соответствующие значения.

 

 

Образ компонентов используемые для связи с БД

<???> приложения используемые БД обычно имеет по крайней мере 1 компонент следующих 3-х типов.

1. Компонент набора данных, непосредственно связывается с БД (Table Store Prods, Query, BDE клиент Dataset)

Располагается на странице BDE

2. компонент – источник данных осуществляет обмен информацией м/д компонентами 1-го типа и компонентами визуального управления. (Data Source)

3. компоненты визуального управления данными (DBGrid , DBEdit , DBMemo…)

 

 

 

Свойства TTable

 

Active Определяет, открыта база данных, или нет
AutoCalcFields Управляет генерацией события OnCalcFields
Bof Указывает, находится ли курсор таблицы на первой записи. Свойство только для чтения
CanModify Определяет, разрешается ли запись в набор данных. Свойство только для чтения
Database Указатель на связанный с базой данных компонент типа Tdatabase. Обеспечивает доступ к его свойствам и методам. Автоматически устанавливается при открытии базы данных, указанной свойством DatabaseName
DatabaseName Имя базы данных, связанной с компонентом
DBSession Компонент Tsession,
DefaultFields Указывает, генерирует ли набор данных динамически размещенные в памяти объекты полей
Eof Указывает, находится ли курсор таблицы на последней записи
Fields Массив объектов полей набора данных
FieldValues Обеспечивает доступ к значениям всех полей активной записи
Filter Задает в виде строки условий текущий фильтр набора данных. Действует только при свойстве Filtered = true
Filtered Разрешает фильтрацию, указанную в свойстве Filter или в обработчике события OnFilterRecord
RecNo Номер записи в наборе данных
RecordCount Число записей в наборе данных

 

Методы

 

AddIndex Создает новый индекс таблицы
Append Добавляет новую пустую запись в конец набора данных
AppendRecord Добавляет в набор данных новую запись, заполняет ее и пересылает в базу данных
ApplyRange Применяет диапазон значений, установленный методами SetRangeStart и SetRangeEnd
ApplyUpdates Записывает кэшированные изменения в базу данных
BatchMove Перемещает записи из одной таблицы в другую
Cancel Отменяет результаты редактирования
CancelRange Снимает ограничения диапазона, введенные методами SetRangeStart, SetRangeEnd, SetRange
CancelUpdates Отменяет все кэшированные изменения и восстанавливает исходное состояние набора данных
Close Закрывает набор данных
CloseDatabase Закрывает соединение с базой данных
CommitUpdates Очищает буфер кэшированных изменений
CreateTable Создает новую таблицу базы данных
Delete Удаляет активную запись и позиционирует курсор на следующую запись
DeleteTable Удаляет таблицу базы данных
Edit Переводит набор данных в режим редактирования
EditKey Переводит набор данных в режим поиска с частичным изменением ключей
EditRangeEnd Подготавливает изменение верхней границы вводимого значения
EditRangeStart Подготавливает изменение нижней границы вводимого значения
FieldByName Находит поле по его имени. При неверном имени генерирует исключение
FindField Находит поле по его имени. При неверном имени возвращаент nil
FindFirst Перемещает курсор к первой записи и возвращает true в случае успеха
FindKey Ищет запись по заданным ключам
FindLast Перемещает курсор к последней записи и возвращает true в случае успеха
FindNearest Перемещает курсор на запись, ближайшую к заданным ключам
FindNext Перемещает курсор к следующей записи и возвращает true в случае успеха
FindPrior Перемещает курсор к предыдущей записи и возвращает true в случае успеха
First Перемещает курсор к первой записи
FlushBuffers Пересылает в базу данных все изменения, сохраненные в буфере
GetDetail DataSets Заполняет список данными о вспомогательном наборе данных, находящемся с данным набором в соотношении master/detail
GetDetailLink Fields Во вспомогательном наборе выдает списки ключевых полей этого и головного наборов данных
GetFieldNames Выдает список имен всех полей набора данных
GotoCurrent Синхронизирует текущую запись таблицы с текущей записью другого набора данных
GotoKey Перемещает курсор на запись, найденную с помощью методов SetKey и EditKey
GotoNearest Перемещает курсор на запись, примерно соответствующую ключам, заданным методами SetKey и EditKey
Insert Вставляет новую пустую запись в набор данных
InsertRecord Вставляет новую заполненную запись в набор данных
Last Перемещает курсор к последней записи
Locate Осуществляет поиск записи в наборе данных
Lookup Осуществляет поиск записи в наборе данных и возвращает значения указанных полей этой записи
MoveBy Перемещает курсор на заданное число записей
Next Перемещает курсор к следующей записи
Open Открывает набор данных
OpenDatabase Открывет базу данных
Post Пересылает отредактированную запись в базу данных
Prior Перемещает курсор к предыдущей записи
RevertRecord Отменяет исправления текущей записи
SetFields Устанавливает значения всех полей записи
SetKey Переводит набор данных в режим поиска по ключам
SetRange Устанавливает диапазон допустимых значений
SetRangeEnd Устанавливает верхнюю границу диапазона допустимых значений
SetRangeStart Устанавливает нижнюю границу диапазона допустимых значений

 

 

Доступ к БД через MS Active X Data Object (ADO).

ADO – это пользовательский интерфейс к любым типам данных, включая реляционные и нереляционные БД, электронную почту, системные, текстовые и графические файлы. Связь с данными осуществляется по средством технологии OLE DB.

Использование ADO является альтернативой DBE, обеспечивающей более эффективную работу с данными.

Для использования необходима система ADO (встраивается в последние версии Windows)

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

Для работы с ADO в С++ предусмотрены компоненты, расположенные на странице ADO.

Они инкапсулируют такие объекты ADO как Connection, Command, Record Set.

Связь с БД осуществляется обычной цепочкой:

  • Набор данных (table, quire)
  • Источник данных (data source)
  • Компоненты отображения данных и управления данных (DB Grid, DB Edit)

 

Характеристика основных компонентов ADO:

    1. ADO Connection – используется для связи с набором данных ADO. Может работать с используемыми компонентами набора данных, как диспетчер выполнения их команд.
    2. ADO Data Set – универсальный компонент связи с наборами данных, который может работать в различных режимах. Может связываться с одной или множеством таблиц. Связь осуществляется непосредственно или через ADO Connection или ADO.
    3. ADO Table - используется для работы с одной таблицей. Может связываться с ней непосредственно или через ADO Connection.
    4. ADO Query - для работы с набором данных с помощью запросов SQL, включая такие запросы, как Create Table.
    5. ADO Store Proc - для выполнения хранимых процедур, хранимых на сервере.
    6. ADO Command – для выполнения команд SQL, не возвращающих множество результатов. Может также совместно с другими компонентами использоваться для работы в таблицах.

 

Задание соединения компонентов ADO:

Доступ к БД осуществляется или с помощью строки соединения (Connection String) или с помощью ADO Connection, имя которого задается в свойстве Connection в других компонентах.

Свойство Connection String представляет собой строку, содержащую параметры соединения.

 

Соединение с помощью компоненты ADO Connection. Управление транзакциями.

Компонента ADO Connection позволяет управлять атрибутами и условиями соединения, подключаемых к нему компонентов набора данных.

Свойства ADO Connection дают возможность задавать схему блокировки записей, тип курсора, уровень изоляции.

Свойство Keep Connection определяет, сохраняется ли соединение с БД, даже если БД не открыта. Установка Keep Connection – True сокращает затраты времени и загрузку сети при соединении с БД, но увеличивает затраты ресурсов компьютера.

Метод Close Data Set – закрывает соединения всех компонентов набора данных, соединенных с данным компонентом ADO Connection, но не закрывает соединение самого ADO Connection. Также открыть или закрыть соединение можно установкой в свойстве Connected значение True (False).

Свойство Data Sets - является массивом всех компонентов наборов данных, подсоединенных к данному компоненту ADO Connection.

Свойство Cursor Location – определяет какую библиотеку использует курсор при соединении с БД (клиентскую или сервера).

Значение Cl UserClient – обеспечивает большую гибкость.

Все данные распространяется на компьютере клиента, и тут же обрабатываются.

При этом возможны операции сортировки и др. поддерживаемые сервером.

Значение = Cl UserClient желательно использовать в командах возвращающих большой объем данных.

 

Транзакция – начинается методом Begin Trans, который возвращает целое число, показывающее уровень вложенности данной транзакции.

Успешное выполнение Begin Trans приводит к генерации события On Begin Trans Complete и установке свойства In Transaction в true.

Метод Commit Trans завершает транзакцию и сохраняет ее результаты в БД.

Метод Rollback Trans – осуществляет откат: отменяет все изменения, сделанные на протяжении транзакции.

Свойство Attributes описывает как при соединении обрабатываются транзакции не присоединенные (оставшиеся не завершенными).

Свойство является множеством, которое может содержать значение xa Commit Retaining и xa Abort Retaining.

Значение xa Commit Retaining приводит к тому, что при соединении незавершенные транзакции завершаются.

Значение xa Abort Retaining приводит к тому, что незавершенные транзакции откатываются.

Свойство Isolation Level – устанавливает уровень изоляции транзакции.

 

Основные уровни изоляции транзакции:

Il read Un Committed

Il browse

Видимы незафиксированные изменения, сделанные другими транзакциями.

Il read Committed

Il Cursor Stability

Видимы только зафиксированные изменения, сделанные другими транзакциями.

Il Repeatable Read – изменения, сделанные другими транзакциями не видны, но повторный запрос может выдать новые данные.

Il Seriali able

Il Isolated

Полная изоляция от других транзакций.

 

Транзакция – это групповая операция, связанная с передачей сообщений.

Проблемы, возникающие при совместном доступе к одной и той же таблице:

  1. Чтение не зафиксированных изменений происходит, если одна транзакция прочла изменения, сделанные другой транзакцией, но еще не зафиксированные в БД. Если эти изменения будут отменены, носившей их транзакцией, то окажется, что прочитавшая их транзакция будет работать с ошибочными данными.
  2. Неповторяемое чтение данных происходит, если в момент чтения данных одной транзакции, другая транзакция их изменяет. В этом случае повторное чтение данных не возможно.
  3. Фантомные (несуществующие) записи возникают, если одна транзакция прочла незафиксированные данные новые записи, созданные другой транзакцией, или прочла записи, которые к моменту ее завершения уже удалены из таблицы. В обоих случаях первая транзакция оперирует с фантомами, которых в таблице нет.
  4. Потерянные изменения возникают, если одна транзакция модифицирует изменения, сделанные другой транзакцией.
  5. Вторичные эффекты модификации могут происходить в БД, в которой значение одних записей зависит от значений других записей. Тогда наложение результатов одновременной работы нескольких транзакций возможны даже в случае,если транзакции оперируют разными записями.

 

Работа с системным реестром:

Реестр имеет иерархическую организацию, которая содержит много уровней ключей, субключей и параметров.

Реестр делит все свои данные на две категории:

  1. Характеризующие компьютер
  2. Характеризующие пользователя

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

Характеризующие пользователя включает в себя установки по умолчанию для конкретного пользователя.

Все субключи относятся к 6 основным ключам реестра.

 

Характеристики компьютера:

Hkey_local_machine - информация о компьютере, включая конфигурацию установленной аппаратуры и ПО.

Hkey_current_config – информация о текущем оборудовании.

Hkey_dyn_data – динамические данные о состоянии используемые процедурами Plug &Play.

Hkey_classes_root – информация об OLE, Drug/Drog, клавиша быстрого доступа и пользовательской интерфейсе Windows.

 

Характеристики пользователя:

Hkey_users – информация о пользователях, включая установки экрана и приложений.

Hkey_current_user – информация о пользователе зарегистрированная в данный момент.

Реестр хранится в файле System. Dat в каталоге Windows.

Утилита работы с реестром – RegEdit. Exe.

 

Для работы с реестром в С++ имеется класс TRegistry.hpp. Все ключи в объекте класса TRegistry создаются как субключи, определенного корневого ключа, записанного в свойстве Rootkey=HKeyCurrentUser. В каждый момент объект типа TRegistry имеет доступ только к одному ключу в иерархии. Текущий ключ определяется свойством поля CurrentKey(Readonly).

Свойство CurrentPath содержит строку, включающую имя текущего ключа и путь к нему по дереву.

Метод OpenKey(AnsiStringKey, bool cancreate) открывает ключ key, делая его

текущим для объекта.

Параметр key - строка полного пути по дереву ключей к открываемому ключу.

Параметр CanCreate указывает должен ли создавать ключ key, если его нет в реестре.

 

Запись значения параметров в ключ осуществляется группой методов: write integer,write float,write string(AnsiString Name,Int value). Значение value заносится в параметр Name.

Процедуры чтения значений аналогичны (integer,float,string). Read Integer (AnsiString Name,Int value).

Пример:

#Include "Registry.hpp"

TRegistry * Reg=new TRegistry

//при создании формы зададим корневой каталог

Reg->rootKey=HKey_Locat_machine

if (Reg->Key Exists("\\SoftWare\\prog1"))

{Reg->OpenKey("\\SoftWare\\prog1")

font->Name=Reg->ReadString("Шрифт");}

Удаление субключа из реестра осуществляется методом DeleteKey(AnsiString Name).

 

Работа с файлами .ini. Файлы .ini - это текстовые файлы, предназначенные для хранения информации о настройке различных приложений. Информация в файле логически группируется в разделы, каждый из которых начинается оператором заголовка, заключенным в []. В строках следующих за заголовком содержится информация, относящаяся к данному разделу в формате.

<ключ>=<значение>

В С++ работу с файлами .ini осуществляется с помощью создания приложений объекта типа TIniFiles.hpp. При создании объекта типа TIniFiles.hpp, в него передается имя файла с расширением .ini, с которым он связывается. Файл должен существовать!

Для записи значений ключей существует много методов. Write integer(AnsiString Section, ansiString Ident, Int value).

Section - раздел файла;

Ident - ключ этого раздела.

Для чтения аналогичные методы: Read Integer(AnsiString Section, ansiString Ident, Int Default);

Default - определенное значение, возвращающееся в случае, если в файле не указано значение соответствующего ключа. Проверить наличие значения ключа можно методом value exists, в который передаются имена разделов и ключа.

DeleteKey - удаляет из файла указанный субключ указанного раздела.

 

Пример: # include "IniFiles.hpp"

// при создании формы...

TIniFiles * Ini

if (FileExists("My.ini"))

Ini=new TIniFiles("My.ini")

Font->Name=Ini->ReadString("Параметры", "Шрифт", "Arial");

Для работы с файлами необходимо подключать модуль Stdio.hpp.

 

 

ВВЕДЕНИЕ В РАЗРАБОТКУ СИСТЕМ ПРИНЯТИЯ РЕШЕНИЙ. ПОНЯТИЕ МНОГОМЕРНЫХ ДАННЫХ.

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

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

 

МЕТОКУБ (МНОГОМЕРНЫЙ КУБ).

С++ позволяет оперировать многомерными данными (факторами) с помощью метокуба, где каждому фактору соответствует свое измерение. Одно измерение соответствует городам, в которых осуществлялись продажи, второе – фирмам, которым продавался товар, третье – время периода продаж.

В конкретной ячейке, как правило, представляются агрегированные данные – сумма, среднее, максимальное значение или новые многомерные данные (кубы).

 

ОБЗОР КОМПОНЕНТОВ С++ ДЛЯ РАЗРАБОТКИ

СИСТЕМ ПРИНЯТИЯ РЕШЕНИЯ.

Все компоненты расположены на странице Decision Cube.

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

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

Компонент TDecision Source является аналогом Data Source, на адаптирован к многомерным данным.

Компонент TDecision Pivot позволяет закрывать и открывать измерения метокуба.

Компонент TDecision Grid отображает данные из многомерного куба.

Компонент TDecision Graph для показа графиков, источиком которых служат многомерные данные.

 

Пример: 3 таблицы:

1. Tovary. DB

  • Tovar
  • Type_tovara
  • Ed_izmer
  • Cena

2. Rashod. DB

  • № rashoda
  • den
  • Tovar
  • Mecyac
  • God
  • Pocup
  • Kolvo

3. Pokup. DB

  • Pokup
  • Gorod

Таблица Rashod. DB находится в отношении М:1 с таблицами Tovary. DB и Pokup. DB.

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

 

Компонент TDecision Query в свойстве SQL компонента записывается запрос, на основании которого строится многомерный куб.

Select P.Gorod, R.Pokup, T.Type_tovara,

R.tovar, R. Mecyac, Sum (R.Kolvo * T.Cena), AVG (R.Kolvo * T.Cena)

From “Rashod. DB” R, “Pokup. DB” P, “Tovaty. DB”T

Where R. Pokup = P. Pokup

AND T. Tovar = R. Tovar

Group by P. Gorod D, R. Pokup,

T. Type_Tovara, R. Tovar, R. Mecyac

ПРАВИЛО ОБЪЯВЛЕНИЯ ПЕРЕМЕНЫХ В МНОГОМЕРНОМ КУБЕ.

  1. После Select перечисляются только те поля, по которым строится измерение.
  2. Только после полей, источников для измерения куба перечисляются агрегатные выражения, агрегатные данные, затем будет выводиться по указанным ранее измерениям.
  3. Обязательное использование раздела Group by, в котором необходимо перечислить все поля, по которым строятся измерения куба, причем в том же порядке в котором они следуют после Select.

В компоненте TDecision Query предусмотрен редактор многомерного запроса для построения SQL оператора выборки многомерных данных.

 

ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ TDecision Cube.

В свойстве DataSet указывается наименование компонента TDecision Query. Для определения свойств метокуба нужно отредактировать свойство Dimension Map, делается это с помощью диалога TDecissonCubeEditor. С помощью этого диалога для каждого поля можно задать:

  • DisplayName – метка, которая будет показываться в компонентах TDecision Graph,

TDecision Pivot, TDecision Grid

  • Type – тип поля
  • Active Type – определяет показываемую информацию

As Needed – показывается когда необходимо

Active – показывается всегда

In Active – иногда не показывается

  • Format – формат представления знаний
  • Grouping – группировка по году, кварталу, месяцу, отдельному значению
  • InitialValue – начальное значение

Закладка Memory Control – позволяет определить максимальное число измерений, сумм, ячеек, может показывать не только заголовки данных во время разработки приложения.

 

СВОЙСТВА, МЕТОДЫ И СОБЫТИЯ TDecision Cube.

Свойства Назначение
Capacity Определяет максимальный размер буфера в байтах. Для хранения многомерного массива данных куба, в случае нехватки памяти возбуждается исключение.
Data Set Содержит имя набора данных, в котором указывают данные для представления в кубе. Рекомендуется в качестве набора данных использовать TDecision Query.
Dimention Count Содержит текущее число измерений в кубе.
Dimention Map Определяет параметр компонента Т Decision Cube, в том числе количество и состав измерений; формат представления знаний по конкретному измерению; метки, которые будут соответствовать каждому измерению в компонентах TDecision Pivot, TDecision Grid, максимальное число измерений, состав показываемых значений.
Dimention Map Count Содержит количество полей набора данных, которые участвуют в формировании многомерного куба.
Max Summaries Содержит максимальное количество сумм для куба.

 

 

 

ИСПОЛЬЗОВАНИЕ КОМПОНЕНТА TDecision Source.

Выполняет те же функции, что и Data Source в BDE.

Методы Назначение
TDecision Cube Содержит имя компонента Decision Cube.
Sparse Cols Разрешает/ запрещает показывать столбцы с пустыми знаениями.
Sparse Rows Разрешает/ запрещает показывать строки с пустыми значениями.

 

События С чем связано
On Begin Pirot Наступает перед изменением данных в кубе при нажатии (поднятии) кнопки соответствующей измерению куба в компоненте TDecision Pivot или при раскрытии (свертке) данных в компонентах TDecision Grid.
On End Pirot Вызывается той же причиной, но наступает после изменения данных в кубе.
On New Dimension Наступает после изменения данных в кубе.

 

ИСПОЛЬЗОВАНИЕ КОМПОНЕНТА TDecision Grid.

Аналогичен компоненту DBGrid, но предназначен для работы с многомерными данными.

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

Свойства Назначение
Cells [ACol][Arow] Возвращает в строковом виде содержимое ячейки на пересечении столбца Acol и строки Arow.
FixedCols Возвращает количество столбцов, используемых для показа заголовков, измерений и меток данных, т.е. для показа служебной информации.
FixedRows Возвращает количество строк используемых для показа служебной информации.
Totals Разрешает (запрещает) показывать значение подсумм по измерениям.

 

События С чем связано
OnDecisionDrowCell Наступает при прорисовке ячейки
On DecisionExamtheCell Наступает когда пользователи находясь в ячейке данных нажимают правую кнопку мыши
On TopleftChanged Наступает при прокрутке данных в сетке.

 

ИСПОЛЬЗОВАНИЕ КОМПОНЕНТА TDecision Pivot.

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

Свойство Groups определяет, какие кнопки входят в TDecision Pivot – значения:

  • tRows – кнопки измерения куба, которые выводятся как строки
  • tColumns - кнопки измерения куба, которые выводятся как столбцы
  • tSumaries – кнопки, соответствующие суммам.

 

ПОСТРОЕНИЕ ОТЧЕТА С ПОМОЩЬЮ QREPORT.

Центральная компонента – TquickRep определяет поведение отчета в целом.

Компоненты:

  1. TQRBand – заготовка для расположения данных заголовка, титула отчета и др. Отчет в основном состоит из компонентов TQRBand, которые в основном реализуют:
    • Область заголовка отчета
    • Область заголовка страницы
    • Область заголовка группы
    • Область названия столбцов отчета
    • Область детальных данных, предназначенных для отображения данных самого нижнего уровня детализации
    • Область подвала группы
    • Область подвала страницы
    • Область подвала отчета.
  2. TQRStringBand - имеет тоже назначение, что и TQRBand. Отличаются встроенным списком Items, содержимое которого становится видным в режиме печати и предварительного просмотра, если на компонент положен компонент TQRExpr. Для каждой строки в Items выводится своя полоса TQRStringBand.
  3. TQRSubDetail – определяет область, в которой располагаются данные детальной таблицы при реализации в отчете связи главной детальной.
  4. TQRChildBand – дочерняя полоса, привязывается к дочерней полосе и служит для ее расширения. Любая полоса может стать родительской с помощью установки True в установке HasChild.
  5. TQRGroup – применяется для группировки данных в отчете
  6. TQRLabel – позволяет разместить в отчете произвольную текстовую строку
  7. TQRDBText – служит для вывода в отчет поля набора данных
  8. TQRExpr – применяется для вывода значений, являющихся результатом вычисления выражения. Алгоритм вычисления выражения строится при помощи редактора формул данного компонента.
  9. TQRSysData – служит для вывода в отчете системной величины – даты, времени, номера страницы и др
  10. TQRMemo – вставляет в отчет многострочный текст
  11. TQRExprMemo – используется для создания многострочных вычисляемых полей
  12. TQRImage – служит для вывода в отчете графической информации, источником которой является поле набора данных
  13. TQRPreview – базовый компонент для создания нестандартных окон предварительного просмотра. Стандартное окно реализуется с помощью метода Preview компонента TquickRep
  14. TQRСhar – служит для встраивания в отчет графиков.

 

КОМПОНЕНТ TquickRep.

Свойства Назначение
DataSet Указывает набор данных, на основе которого создается отчет. Если нужно вывести связанную информацию из нескольких таблиц БД, ее объединяют в одном наборе данных при помощи Tquery. Информацию из нескольких связанных наборов данных можно включать в отчет, если эти наборы данных, связаны в приложении отношением главный – подчиненный. В этом случае в качестве набора данных указывают главный набор. Если в отчет нужно включить информацию из несвязанных наборов данных, применяется компонентный отчет.
Frame Определяет параметры рамки отчета
Page Определяет параметры страницы отчета. Все подсвойства этого сложного свойства доступны в окне Report Settings
PrintIfEmpty Размещает (запрещает) печать отчета, в случае если в нем нет данных
ShowProgress Размещает (запрещает) показывать индикатор процесса печать отчета
SnapToGrid Если – True, размещаемые в отчете объекты привязываются к сетке

 

Методы

Методы Назначение
NewPage Реализует вывод информации в следующей странице отчета
Pripate Готовит отчет для вывода в файл
Preview Выводит стандартное окно предварительного просмотра
Print Печатает отчет на принтере
PrintBackGround Печать отчета в фоновом режиме (в отдельном потоке команд)
PrinterSetup Вызывает стандартное окно установки параметров принтера

 

События

События С чем связано
AfterPreview Наступает в момент закрытия окна, предварительного просмотра
AfterPrint Наступает после печати отчета или его подготовки к печати
OnPreview Используется для связывания с отчетом нестандартного окна просмотра

 

КОМПОНЕНТ TQRBand.

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

Свойства Назначение
BandType Указывает назначение полосы:
  • rbTitle – содержит заголовок отчета
  • rbPageHeader – заголовок страницы
  • rbDetail – содержит информацию из набора данных. Выводится всякий раз при переходе на новую запись в наборе данных. Позиционирование на 1 записи и последующий обход осуществляется автоматически
  • rbPageFooter – содержит подвал страницы, выводится на каждой странице отчета после всех полос
  • rbSummare – подвал отчета, выводится на самой последней странице
  • rbGroupHeader – содержит заголовок группы. Применяется при группировке информации в отчете и выводится каждый раз при смене группы
  • rbGroupFooder – содержит подвал отчета группы
  • rbSubDetail – содержит детальную информацию из подчиненного набора данных. Этот тип назначается полосе автоматически, при размещении на форме компонента TQRSubDetail
  • rbColumnHeader – содержит заголовки столбцов, размещается на каждой странице отчета после заголовка страницы.
Enabled Разрешает (запрещает) печать полосы
HasChild Если True, то полоса имеет дочернюю полосу TchildBand. Дочерняя полоса создается автоматически

 



<== предыдущая лекция | следующая лекция ==>
Class MyClass | Появление первых операционных систем


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.033 сек.