Помощь в написании студенческих работ
Антистрессовый сервис

Создание системы поддержки распределительной БД

Дипломная Купить готовую Узнать стоимостьмоей работы

Часто в транзакцию объединяются операции над несколькими таблицами, когда производятся действия по внесению в разные таблицы взаимосвязанных изменений. Пусть осуществляется перенос записей из одной таблицы в другую. Если запись сначала удаляется из первой таблицы, а затем заносится во вторую таблицу, то при сбое, например из-за перерыва в энергопитании компьютера, возможна ситуация, когда запись… Читать ещё >

Создание системы поддержки распределительной БД (реферат, курсовая, диплом, контрольная)

Содержание

  • Введение
  • Глава 1. Разработка базы данных
    • 1. 1. Сведения о базах данных
      • 1. 1. 1. Классификация баз данных
      • 1. 1. 2. Структурные элементы базы данных
    • 1. 2. Виды моделей данных
    • 1. 3. Понятие информационного объекта
    • 1. 4. Нормализация отношений
      • 1. 4. 1. Понятие нормализации отношений
    • 1. 5. Типы связей
    • 1. 6. Модели данных
      • 1. 6. 1. Сведенья о моделях данных
      • 1. 6. 2. Проектирование модели данных
      • 1. 6. 3. Назначение модели
      • 1. 6. 4. Элементы модели
  • Глава 2. Разработка программы
    • 2. 1. Постановка задачи
    • 2. 2. Построение инфологической модели данных
    • 2. 3. Построение датологической модели данных
    • 2. 4. Основные принципы работы программы
    • 2. 5. Разработка интерфейса программы
    • 2. 6. Средства работы с базами данных
    • 2. 7. Системные требования программы
  • Заключение
  • Список литературы
  • Приложение 1. Руководство пользователя
  • Приложение 2. Руководство программиста
  • Приложение 3. Текст программы

В этом случае программист должен обеспечить:

— организацию связи между таблицами;

— установку значения поля связи подчиненной таблицы (это может также выполняться автоматически);

— контроль (запрет) редактирования полей связи;

— организацию (запрет) каскадного удаления записей.

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

Механизм транзакций

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

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

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

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

Таким образом, успешная транзакция переводит БД из одного целостного состояния в другое. Использование механизма транзакций необходимо:

— при выполнении последовательности взаимосвязанных операций с БД;

— при многопользовательском доступе к БД.

Транзакция может быть неявной или явной. Неявная транзакция стартует автоматически, а по завершении также автоматически подтверждается или отменяется. Явной транзакцией управляет программист с использованием компонента Database и/или средств SQL.

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

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

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

Для реализации механизма транзакций СУБД предоставляют соответствующие средства.

Бизнес-правила

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

В данном контексте бизнес-правила являются просто правилами управления БД и не имеют отношения к бизнесу как предпринимательству.

В первую очередь бизнес-правила реализуют следующие ограничения БД:

— задание допустимого диапазона значений;

— задание значения по умолчанию;

— требование уникальности значения;

— запрет пустого значения;

— ограничения ссылочной целостности.

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

Вместо заданных на физическом уровне бизнес-правил или в дополнение к ним можно определить бизнес-правила на программном уровне. Действие этих правил распространяется только на приложение, в котором они реализованы. Для программирования в приложении бизнес-правил используются компоненты и предоставляемые ими средства. Достоинство такого подхода заключается в легкости изменения бизнес-правил и определении правил «своего» приложения. Недостатком является снижение безопасности БД, связанное с тем, что каждое приложение может устанавливать свои правила управления БД.

При работе с удаленными БД в архитектуре «клиент-сервер» бизнес-правила можно реализовывать также на сервере.

Словарь данных

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

Использование словаря данных позволяет:

— ускорить процесс создания БД;

— облегчить изменение характеристик БД;

— придать единообразный вид визуальным компонентам приложения.

Определение БД является специализированной БД, которая описывает структуру Зазы, но не содержит данных. Это описание структуры можно использовать для создания других БД.

Атрибуты представляют собой совокупности характеристик отдельных полей. Заданные через атрибуты характеристики поля при выполнении приложения устанавливаются в качестве значений соответствующих свойств визуальных компонентов, которые отображают значения поля, например, DBGrid или DBText. Приведем некоторые наиболее распространенные характеристики полей (они же свойства визуальных компонентов):

— Alignment — выравнивание;

— DisplayLabel — заголовок столбца (сетки DBGrid);

— Readonly — недоступность поля для редактирования (поле предназначено только для чтения);

— Required — требование обязательного ввода значения;

— Visible — видимость;

— DisplayFormat — формат отображаемого значения;

— MinValue — минимальное значение;

— MaxValue — максимальное значение.

Для работы со словарем данных удобно использовать программу SQL Explorer.

2.

7. Системные требования программы

Для работы программы необходима установленная на компьютере пользователя операционная система Windows версии не ниже 95. Также для работы программы необходима установка на компьютере пользователя BDE (Borland Database Engine — процессор баз данных фирмы Borland). Данный процессор предоставляет развитый интерфейс API для взаимодействия с базами данных.

Для нормальной работы необходимо 128 Мб оперативной памяти, требования к свободному месту на жестком диске следующие: необходимо около 20 Мб свободного места для установки программы и процессора BDE, т.к. необходимость работы с базами данных подразумевает зависимость объема данных от количества записей, на 10 записей требуется от 16 до 20 Кб памяти на жестком диске. Заключение

В данном проекте была разработана программа для работы с распределенной базой данных.

Программа была разработана в среде Borland Delphi 7 с использованием процессора баз данных Borland Database Engine.

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

Список литературы

Богумирский Б. «Эффективная работа на IBM PC в среде Windows 95» СПб, «Питер», 1997.

Вейскас Д. «Эффективная работа с Microsoft Access 7.0» «Microsoft Press», 1997.

Вудкок Дж., Янг М. «Эффективная работа с Microsoft Office 95» «Microsoft Press».

Горев А., Макашарипов С., «Эффективная работа с СУБД» СПб, «Питер», 1997.

Кириллов В.В. «Основы проектирования реляционных баз данных.» Учебное пособие. — СПб.: ИТМО, 1994.

Хомоненко А., Гофман В., Мещеряков Е., Никифоров В. «Delphi 7» СПб, «БХВ-Петербург», 2005.

Приложение 1. Руководство пользователя

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

Рис. 1. Рабочее окно программы.

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

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

Рис. 2. Кнопки для работы с базой данных

Назначение кнопок следующее:

— переход к первой записи

— переход к предыдущей записи

— переход к следующей записи

— переход к последней записи

— вставка новой записи

— удаление записи

— редактирование записи

— сохранить изменения

— отмена внесенных изменений

— обновить данные таблицы

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

Рис. 3. Кнопки для сортировки данных

Для работы в программе предусмотрены следующие пункты меню:

«Файл» -> «Выход»: выход из программы.

«Синхронизация» -> «Чтение данных из сети»: загрузка из сети файла с изменениями.

«Синхронизация» -> «Запись данных в сеть»: загрузка в сеть файла с изменениями.

«Синхронизация» -> «Синхронизация данных»: синхронизирует данные локальной базы данных с данными удаленного компьютера.

«Синхронизация» -> «Очистить данные»: очистка данных для синхронизации.

«Настройки» -> «Путь к сетевой базе»: настройка пути к сетевой базе данных.

Рис. 4. Настройка пути к сетевой базе данных

«?» -> «О программе»: вывод информации о программе.

Рис. 5. Информация о программе.

Рис. 6. Меню программы

Пользователь также может проверить интернет-соединение нажав соответствующую кнопку.

Рис. 7. Проверка интернет-соединения.

Приложение 2. Руководство программиста

Программа была выполнена в среде Borland Delphi 7. Delphi — это мощная система, предназначенная для быстрой разработки приложений самого разного характера и назначения.

Система Delphi 7 поставляется в трех версиях: Enterprise, Professional и Personal. Версии различаются своими возможностями, наибольшие возможности предоставляет версия Enterprise.

Delphi не имеет своего формата таблиц, но поддерживает как собственные два типа локальных таблиц: dBase и Paradox. Каждая из этих таблиц имеет свои особенности.

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

Основные достоинства таблиц dBase:

— простота использования;

— совместимость с большим числом приложений;

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

Таблицы Paradox являются достаточно развитыми и удобными для создания баз данных. К достоинствам этих таблиц можно отнести:

— большое количество типов полей для предоставления данных различных типов;

— поддержка целостности данных;

— организация проверки вводимых данных;

— поддержка парольной защиты таблиц;

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

db — таблица с данными;

mb — BLOB-данные;

px — главный индекс;

xg* и yg* - вторичные индексы;

val — параметры для проверки данных и целостности ссылок;

tv и fam — форматы вывода таблиц в программе Database Desktop;

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

Учитывая приведенные особенности, при проектировании программы был использован формат Paradox.

В таблице «People» хранятся основные данные о пользователях.

Рис. 1. Проектирование таблицы для хранения данных в среде Database Desktop.

В таблице «Temp_people» хранятся данные об изменениях сделанных в основной таблице. Данный файл предназначен для синхронизации данных.

Рис. 2. Проектирование таблицы для хранения данных в среде Database Desktop.

Список файлов используемых программой:

Unit1.dfm, Unit2. dfm, Unit3. dfm, Unit1. dcu, Unit2. dcu, Unit3. dcu, Unit1. ddp, Unit2. ddp, Project_base.dpr, Project_base.res — файлы, используемые при компилировании проекта;

Unit1.pas, Unit2. pas, Unit3. pas — файлы с исходным кодом программы;

Project_base.exe — исполняемый файл;

Setup.ini — файл с настройками программы;

Приложение 3. Текст программы

Файл «Project_base.dpr»

program Project_base;

uses

Forms,

Unit1 in 'Unit1.pas' {FormMain},

Unit2 in 'Unit2.pas' {DM: TDataModule},

Unit3 in 'Unit3.pas' {FormAbout};

{$R *.res}

begin

Application.Initialize;

Application.Title := 'База данных';

Application.CreateForm (TDM, DM);

Application.CreateForm (TFormMain, FormMain);

Application.CreateForm (TFormAbout, FormAbout);

Application.Run;

end.

Файл «Unit1.pas»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, WinInet, Grids, DBGrids, Menus, IniFiles, Buttons,

ExtCtrls, DBCtrls;

type

TFormMain = class (TForm)

Button1: TButton;

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

BitBtn1: TBitBtn;

DBNavigator1: TDBNavigator;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

GroupSort: TRadioGroup;

ButSort: TButton;

N10: TMenuItem;

N11: TMenuItem;

procedure Button1Click (Sender: TObject);

function GetInetFile (const fileURL, FileName: String): boolean;

function SaveInetFile (const fileURL, FileName: String): boolean;

procedure N6Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure ButSortClick (Sender: TObject);

procedure N10Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure N4Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormMain: TFormMain;

implementation

{$R *.dfm}

Uses Unit2, Unit3;

procedure TFormMain. Button1Click (Sender: TObject);

begin

if InternetAutoDial (INTERNET_AUTODIAL_FORCE_ONLINE, 0) = True then

ShowMessage ('OK')

else

ShowMessage ('Bad');

end;

function TFormMain. GetInetFile (const fileURL, FileName: String): boolean;

const BufferSize = 1024;

var

hSession, hURL: HInternet;

Buffer: array[1.BufferSize] of Byte;

BufferLen: DWORD;

f: File;

sAppName: string;

begin

Result:=False;

sAppName := ExtractFileName (Application.ExeName);

hSession := InternetOpen (PChar (sAppName),

INTERNET_OPEN_TYPE_PRECONFIG,

nil, nil, 0);

try

hURL := InternetOpenURL (hSession,

PChar (fileURL),

nil, 0,0,0);

try

AssignFile (f, FileName);

Rewrite (f, 1);

repeat

InternetReadFile (hURL, @Buffer,

SizeOf (Buffer), BufferLen);

BlockWrite (f, Buffer, BufferLen)

until BufferLen = 0;

CloseFile (f);

Result:=True;

finally

InternetCloseHandle (hURL)

end

finally

InternetCloseHandle (hSession)

end

end;

function TFormMain. SaveInetFile (const fileURL, FileName: String): boolean;

const BufferSize = 1024;

var

hSession, hURL: HInternet;

Buffer: array[1.BufferSize] of Byte;

BufferLen: DWORD;

f: File;

sAppName: string;

begin

Result:=False;

sAppName := ExtractFileName (Application.ExeName);

hSession := InternetOpen (PChar (sAppName),

INTERNET_OPEN_TYPE_PRECONFIG,

nil, nil, 0);

try

hURL := InternetOpenURL (hSession,

PChar (fileURL),

nil, 0,0,0);

try

AssignFile (f, FileName);

Rewrite (f, 1);

repeat

BlockRead (f, Buffer, BufferLen);

InternetWriteFile (hURL, @Buffer,

SizeOf (Buffer), BufferLen);

until BufferLen = 0;

CloseFile (f);

Result:=True;

finally

InternetCloseHandle (hURL)

end

finally

InternetCloseHandle (hSession)

end

end;

procedure TFormMain. N6Click (Sender: TObject);

var iniF: TIniFile;

begin

URLBaseInet := InputBox ('Адрес сетевой базы данных','Введите URL сетевой базы данных', URLBaseInet);

try

try

iniF := TIniFile. Create (GetCurrentDir () + 'setup.ini');

iniF.WriteString ('URLINET','InetPath', URLBaseInet);

finally

iniF.Free;

end;

except

ShowMessage ('Ошибка при работе с файлом конфигурации');

end;

end;

procedure TFormMain. BitBtn1Click (Sender: TObject);

begin

FormMain.Close;

end;

procedure TFormMain. N2Click (Sender: TObject);

begin

FormMain.Close;

end;

procedure TFormMain. N8Click (Sender: TObject);

begin

FormAbout.ShowModal;

end;

procedure TFormMain. ButSortClick (Sender: TObject);

var i: integer;

begin

i := GroupSort. ItemIndex;

case i of

0: DM.TabPeople.IndexName := 'IndId';

1: DM.TabPeople.IndexName := 'IndName';

2: DM.TabPeople.IndexName := 'IndSurName';

3: DM.TabPeople.IndexName := 'IndDate';

end;

end;

procedure TFormMain. N10Click (Sender: TObject);

var i: integer;

begin

DM.TabChange.Open;

DM.TabChange.First;

for i:=0 to DM.TabChange.RecordCount-1 do

begin

if DM.TabChangeOperation.Value = 'Insert' then

begin

DM.TabPeople.Insert;

DM.TabPeopleName.Value := DM.TabChangeName.Value;

DM.TabPeopleSurName.Value := DM.TabChangeSurName.Value;

DM.TabPeopleDate_Birth.Value := DM. TabChangeDate_Birth.Value;

DM.TabPeopleAddress.Value := DM.TabChangeAddress.Value;

DM.TabPeoplePhone.Value := DM.TabChangePhone.Value;

DM.TabPeopleComment.Value := DM.TabChangeComment.Value;

DM.TabPeople.Post;

end;

if DM.TabChangeOperation.Value = 'Edit' then

begin

DM.TabPeople.Locate ('Id', DM.TabChangeIdPeople.Value,[]);

DM.TabPeople.Edit;

DM.TabPeopleName.Value := DM.TabChangeName.Value;

DM.TabPeopleSurName.Value := DM.TabChangeSurName.Value;

DM.TabPeopleDate_Birth.Value := DM. TabChangeDate_Birth.Value;

DM.TabPeopleAddress.Value := DM.TabChangeAddress.Value;

DM.TabPeoplePhone.Value := DM.TabChangePhone.Value;

DM.TabPeopleComment.Value := DM.TabChangeComment.Value;

DM.TabPeople.Post;

end;

if DM.TabChangeOperation.Value = 'Delete' then

begin

DM.TabPeople.Locate ('Id', DM.TabChangeIdPeople.Value,[]);

DM.TabPeople.Delete;

end;

DM.TabChange.Next;

end;

DM.TabChange.Close;

end;

procedure TFormMain. N11Click (Sender: TObject);

var i: integer;

begin

DM.TabChange.Open;

DM.TabChange.Last;

for i:=0 to DM.TabChange.RecordCount-1 do

begin

DM.TabChange.Delete;

DM.TabChange.Last;

end;

DM.TabChange.Close;

end;

procedure TFormMain. N9Click (Sender: TObject);

var FileOnNet, LocalFileName: string;

begin

FileOnNet := URLBaseInet;

LocalFileName := GetCurrentDir () + 'Base'+'Temp_people.DB';

if InternetAutoDial (INTERNET_AUTODIAL_FORCE_ONLINE, 0) = True then

begin

if SaveInetFile (FileOnNet, LocalFileName)=True then

ShowMessage ('Загрузка файла выполнена')

else

ShowMessage ('При загрузке файла произошла ошибка')

end

else

ShowMessage ('Нет соединения с Интернет');

end;

procedure TFormMain. N4Click (Sender: TObject);

var FileOnNet, LocalFileName: string;

begin

FileOnNet := URLBaseInet;

LocalFileName := GetCurrentDir () + 'Base'+'Temp_people.DB';

if InternetAutoDial (INTERNET_AUTODIAL_FORCE_ONLINE, 0) = True then

begin

if GetInetFile (FileOnNet, LocalFileName)=True then

ShowMessage ('Загрузка файла выполнена ')

else

ShowMessage ('При загрузке файла произошла ошибка')

end

else

ShowMessage ('Нет соединения с Интернет');

end;

end.

Файл «Unit2.pas»

unit Unit2;

interface

uses

SysUtils, Classes, DB, DBTables, IniFiles, Dialogs, WinInet;

type

TDM = class (TDataModule)

DSPeople: TDataSource;

TabPeople: TTable;

TabPeopleSurName: TStringField;

TabPeopleName: TStringField;

TabPeopleDate_Birth: TDateField;

TabPeopleAddress: TStringField;

TabPeoplePhone: TStringField;

TabPeopleComment: TStringField;

DSChange: TDataSource;

TabChange: TTable;

TabChangeOperation: TStringField;

TabChangeIdPeople: TIntegerField;

TabChangeSurName: TStringField;

TabChangeName: TStringField;

TabChangeDate_Birth: TDateField;

TabChangeAddress: TStringField;

TabChangePhone: TStringField;

TabChangeComment: TStringField;

DSInet: TDataSource;

TabInet: TTable;

TabInetId: TIntegerField;

TabInetSurName: TStringField;

TabInetName: TStringField;

TabInetDate_Birth: TDateField;

TabInetAddress: TStringField;

TabInetPhone: TStringField;

TabInetComment: TStringField;

TabPeopleId: TAutoIncField;

procedure DataModuleCreate (Sender: TObject);

procedure TabPeopleAfterInsert (DataSet: TDataSet);

procedure TabPeopleAfterPost (DataSet: TDataSet);

procedure TabPeopleBeforeDelete (DataSet: TDataSet);

procedure TabPeopleAfterEdit (DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

var URLBaseInet, Operation: string;

IsInsert: boolean;

implementation

{$R *.dfm}

procedure TDM. DataModuleCreate (Sender: TObject);

var dir: string;

iniF: TIniFile;

begin

dir := GetCurrentDir;

TabPeople.DatabaseName := dir + 'Base';

TabChange.DatabaseName := dir + 'Base';

TabPeople.Open;

try

try

iniF := TIniFile. Create (GetCurrentDir () +'setup.ini');

URLBaseInet := iniF. ReadString ('URLINET','InetPath','');

finally

iniF.Free;

end;

except

ShowMessage ('Ошибка при работе с файлом конфигурации');

URLBaseInet := '';

end;

end;

procedure TDM. TabPeopleAfterInsert (DataSet: TDataSet);

begin

Operation := 'Insert';

IsInsert := True;

end;

procedure TDM. TabPeopleAfterPost (DataSet: TDataSet);

var New_Id: integer;

New_Date_Birth, New_SurName, New_Name, New_Address, New_Phone, New_Comment: string;

begin

if IsInsert = True then

begin

TabChange.Open;

TabChange.Insert;

New_Id := DM.TabPeopleId.Value;

New_Date_Birth := DateToStr (DM.TabPeopleDate_Birth.Value);

New_SurName := DM.TabPeopleSurName.Value;

New_Name := DM.TabPeopleName.Value;

New_Address := DM.TabPeopleAddress.Value;

New_Phone := DM.TabPeoplePhone.Value;

New_Comment := DM.TabPeopleComment.Value;

DM.TabChangeOperation.Value := Operation;

DM.TabChangeIdPeople.Value := New_Id;

DM.TabChangeDate_Birth.Value := StrToDate (New_Date_Birth);

DM.TabChangeSurName.Value := New_SurName;

DM.TabChangeName.Value := New_Name;

DM.TabChangeAddress.Value := New_Address;

DM.TabChangePhone.Value := New_Phone;

DM.TabChangeComment.Value := New_Comment;

TabChange.Post;

TabChange.Close;

IsInsert := false;

end;

end;

procedure TDM. TabPeopleBeforeDelete (DataSet: TDataSet);

var New_Id: integer;

Operation: string;

begin

TabChange.Open;

TabChange.Insert;

Operation := 'Delete';

New_Id := DM.TabPeopleId.Value;

DM.TabChangeOperation.Value := Operation;

DM.TabChangeIdPeople.Value := New_Id;

TabChange.Post;

TabChange.Close;

end;

procedure TDM. TabPeopleAfterEdit (DataSet: TDataSet);

begin

Operation := 'Edit';

IsInsert := True;

end;

end.

Файл «Unit3.pas»

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TFormAbout = class (TForm)

BitBtn1: TBitBtn;

Label1: TLabel;

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormAbout: TFormAbout;

implementation

{$R *.dfm}

procedure TFormAbout. BitBtn1Click (Sender: TObject);

begin

FormAbout.Close;

end;

end.

— Идентификационный номер

— Фамилия

— Имя

— Дата рождения

— Адрес

— Телефон

— Комментарии

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

Показать весь текст

Список литературы

  1. . «Эффективная работа на IBM PC в среде Windows 95» СПб, «Питер», 1997.
  2. Д. «Эффективная работа с Microsoft Access 7.0» «Microsoft Press», 1997.
  3. Дж., Янг М. «Эффективная работа с Microsoft Office 95» «Microsoft Press».
  4. А., Макашарипов С., «Эффективная работа с СУБД» СПб, «Питер», 1997.
  5. В.В. «Основы проектирования реляционных баз данных.» Учебное пособие. — СПб.: ИТМО, 1994.
  6. А., Гофман В., Мещеряков Е., Никифоров В. «Delphi 7» СПб, «БХВ-Петербург», 2005.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ