База данных библиотеки "Стэлс"
Проблемы, обзор и анализ публикаций процесса функционирования библиотеки и обоснование его автоматизации. Анализ альтернативного программного обеспечения по автоматизации работы библиотек. Моделирование процесса функционирования библиотеки "Стэлс".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 09.01.2014 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
end;
var
LitFrm: TLitFrm;
implementation
uses MainUnit, DataUnit, BookNameUnit, MPNameUnit;
{$R *.dfm}
procedure TLitFrm.FormCreate(Sender: TObject);
begin
case MainFrm.LitTypeCB.ItemIndex of
0: begin
LName.Caption := 'Имя автора';
NameLit.Text := MainFrm.AuthorName.Text;
GetBooks;
end;
1: begin
LName.Caption := 'Название журнала';
NameLit.Text := MainFrm.LitName.Text;
GetMagazines;
end;
2: begin
LName.Caption := 'Название газеты';
NameLit.Text := MainFrm.LitName.Text;
GetPapers;
end;
end;
end;
procedure TLitFrm.GetBooks;
begin
with DModule.IBLitDataSet do begin
close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetBooks( ''' +
NameLit.Text + ''', ''' +
SDate.Text + ''', ''' +
EDate.Text + ''' );' );
open;
end;
end;
procedure TLitFrm.GetMagazines;
begin
with DModule.IBLitDataSet do begin
close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetMagazines( ''' +
AnsiUpperCase( NameLit.Text ) + ''', ''' +
SDate.Text + ''', ''' +
EDate.Text + ''' );' );
open;
end;
end;
procedure TLitFrm.GetPapers;
begin
with DModule.IBLitDataSet do begin
close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetNewsPaper( ''' +
AnsiUpperCase( NameLit.Text ) + ''', ''' +
SDate.Text + ''', ''' +
EDate.Text + ''' );' );
open;
end;
end;
procedure TLitFrm.AddBook;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите имя автора!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TBookNameFrm, BookNameFrm );
BookNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDBOOK';
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iAuthorName' ).AsString := AnsiUpperCase( NameLit.Text );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанном авторе не найдена!',
mtError, [mbOk], 0 );
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-3: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetBooks;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.AddPaper;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите название газеты!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TMPNameFrm, MPNameFrm );
MPNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDPAPER';
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetPapers;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.AddMagazine;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите название журнала!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TMPNameFrm, MPNameFrm );
MPNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDMAGAZINE';
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetMagazines;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.UpdBook;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите имя автора!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TBookNameFrm, BookNameFrm );
BookNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'UPDBOOK';
ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iAuthorName' ).AsString := AnsiUpperCase( NameLit.Text );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанном авторе не найдена!',
mtError, [mbOk], 0 );
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-3: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetBooks;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.UpdMagazine;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите название журнала!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TMPNameFrm, MPNameFrm );
MPNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'UPDMAGAZINE';
ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetMagazines;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.UpdPaper;
begin
if Trim( NameLit.Text ) = '' then begin
MessageDlg( 'Введите название газеты!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TMPNameFrm, MPNameFrm );
MPNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'UPDPAPER';
ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;
ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
ParamByName( 'iPrintDate' ).AsDate := PrintDate;
try
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: begin
MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',
mtError, [mbOk], 0 );
exit;
end;
-2: begin
MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',
mtError, [mbOk], 110 );
exit;
end;
else begin
GetPapers;
with DModule.IBLitDataSet do begin
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
end;
end;
except on e: exception do
MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );
end;
end;
end;
procedure TLitFrm.DelLit( litType: byte );
begin
if MessageDlg( 'Удалить инфо о литературе: ' +
DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString + '?',
mtConfirmation, [mbYes, mbNo], 0 ) = mrYes then
with DModule.IBProc do begin
StoredProcName := 'DELLIT';
ParamByName( 'iNumLit' ).asInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;
ExecProc;
if ( DModule.IBProc.ParamByName( 'oResult' ).AsInteger = -1 ) then
MessageDlg( 'Ошибка: данная литература выдана читателю!' + #10 +
' Удаление невозможно!', mtError, [mbOk], 180 )
else
case litType of
0: GetBooks;
1: GetMagazines;
2: GetPapers;
end;
end;
end;
procedure TLitFrm.LitSearchBtnClick(Sender: TObject);
begin
case MainFrm.LitTypeCB.ItemIndex of
0: GetBooks;
1: GetMagazines;
2: GetPapers;
end;
end;
procedure TLitFrm.AddLitBitClick(Sender: TObject);
begin
case MainFrm.LitTypeCB.ItemIndex of
0: AddBook;
1: AddMagazine;
2: AddPaper;
end;
end;
procedure TLitFrm.BitBtn5Click(Sender: TObject);
begin
case MainFrm.LitTypeCB.ItemIndex of
0: begin
MainFrm.LitName.Text := DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString;
MainFrm.PDate.Text := DModule.IBLitDataSet.FieldByName( 'oPrintDate' ).AsString;
end;
1, 2: begin
MainFrm.LitName.Text := DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString;
MainFrm.PDate.Text := DModule.IBLitDataSet.FieldByName( 'oPrintDate' ).AsString;
end;
end;
MainFrm.LitNum := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;
Close;
end;
procedure TLitFrm.BitBtn3Click(Sender: TObject);
begin
case MainFrm.LitTypeCB.ItemIndex of
0: UpdBook;
1: UpdMagazine;
2: UpdPaper;
end;
end;
procedure TLitFrm.BitBtn4Click(Sender: TObject);
begin
DelLit( MainFrm.LitTypeCB.ItemIndex );
end;
procedure TLitFrm.SDateKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['0'..'9', '.', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
unit MPNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMPNameFrm = class(TForm)
GroupBox1: TGroupBox;
PDate: TEdit;
GroupBox2: TGroupBox;
OkBtn: TButton;
CancelBtn: TButton;
procedure OkBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure PDateKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MPNameFrm: TMPNameFrm;
implementation
uses MainUnit, LitUnit;
{$R *.dfm}
procedure TMPNameFrm.OkBtnClick(Sender: TObject);
begin
if ( Trim( LitFrm.NameLit.Text ) = '' ) or
( Trim( PDate.Text ) = '' ) then begin
MessageDlg( 'Ошибка: не введены все обязательные значения полей!',
mtWarning, [mbOk], 0 );
exit;
end;
with LitFrm do begin
try
LitName := NameLit.Text;
PrintDate := StrToDate( Trim( PDate.Text ) );
res := true;
MPNameFrm.Close;
except on EConvertError do begin
MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',
mtError, [mbOk], 0 );
res := false;
end;
end;
end;
end;
procedure TMPNameFrm.CancelBtnClick(Sender: TObject);
begin
LitFrm.res := false;
Close;
end;
procedure TMPNameFrm.PDateKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['0'..'9', '.', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
unit AuthorNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TAuthorNameFrm = class(TForm)
GroupBox1: TGroupBox;
EFamNP: TEdit;
EBDate: TEdit;
EDDate: TEdit;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OkBtn: TBitBtn;
CancelBtn: TBitBtn;
procedure OkBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure EFamNPKeyPress(Sender: TObject; var Key: Char);
procedure EBDateKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AuthorNameFrm: TAuthorNameFrm;
implementation
uses AuthorUnit;
{$R *.dfm}
procedure TAuthorNameFrm.OkBtnClick(Sender: TObject);
begin
if ( EFamNP.Text = '' ) or ( EBDate.Text = '' ) then begin
MessageDlg( 'Ошибка: не введены все обязательные значения полей!',
mtWarning, [mbOk], 0 );
exit;
end;
try
with AuthorFrm do begin
Res := true;
FamNP := Trim( EFamNP.Text );
BDate := StrToDate( Trim( EBDate.Text ) );
if ( EDDate.Text <> '' ) then
DDate := StrToDate( Trim( EDDate.Text ) );
end;
Close;
except on EConvertError do
MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',
mtError, [mbOk], 111 );
end;
end;
procedure TAuthorNameFrm.CancelBtnClick(Sender: TObject);
begin
AuthorFrm.Res := false;
Close;
end;
procedure TAuthorNameFrm.EFamNPKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
procedure TAuthorNameFrm.EBDateKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['0'..'9', '.', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
unit BookNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TBookNameFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
BName: TEdit;
TName: TEdit;
PDate: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BNameKeyPress(Sender: TObject; var Key: Char);
procedure PDateKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
BookNameFrm: TBookNameFrm;
implementation
uses MainUnit, LitUnit;
{$R *.dfm}
procedure TBookNameFrm.FormCreate(Sender: TObject);
begin
Caption := LitFrm.NameLit.Text;
BName.Text := MainFrm.LitName.Text;
TName.Text := MainFrm.Tepography.Text;
end;
procedure TBookNameFrm.Button1Click(Sender: TObject);
begin
if ( Trim( BName.Text ) = '' ) or
( Trim( PDate.Text ) = '' ) then begin
MessageDlg( 'Ошибка: не введены все обязательные значения полей!',
mtWarning, [mbOk], 0 );
exit;
end;
with LitFrm do begin
LitName := Trim( BName.Text );
TepName := Trim( TName.Text );
try
PrintDate := StrToDate( Trim( PDate.Text ) );
res := true;
BookNameFrm.Close;
except on EConvertError do begin
MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',
mtError, [mbOk], 0 );
res := false;
end;
end;
end;
end;
procedure TBookNameFrm.Button2Click(Sender: TObject);
begin
LitFrm.Res := false;
Close;
end;
procedure TBookNameFrm.BNameKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
procedure TBookNameFrm.PDateKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['0'..'9', '.', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
unit TepUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids;
type
TTepFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox4: TGroupBox;
DBGrid: TDBGrid;
CitiesCB: TComboBox;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
CountriesCB: TComboBox;
BitBtn2: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Label1: TLabel;
Label2: TLabel;
procedure FormShow(Sender: TObject);
procedure CountriesCBChange(Sender: TObject);
procedure CitiesCBChange(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
private
procedure FillCountryCB;
procedure FillCityCB;
procedure GetTepography;
public
res: boolean;
TepName: ShortString;
end;
var
TepFrm: TTepFrm;
implementation
uses DataUnit, TepNameUnit, CityUnit, CountryUnit, MainUnit;
{$R *.dfm}
procedure TTepFrm.FillCountryCB;
var i: integer;
begin
with DModule.IBCountryDataSet do begin
CountriesCB.Items.Clear;
Close;
Open;
i := 0;
while not EOF do begin
i := CountriesCB.Items.Add( FieldByName( 'oCountryName' ).AsString );
if CountriesCB.Items.Strings[i] =
DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString then
CountriesCB.ItemIndex := i;
next;
end;
Close;
end;
end;
procedure TTepFrm.FillCityCB;
begin
with DModule.IBCityDataSet do begin
CitiesCB.Items.Clear;
CitiesCB.Text := '';
Close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetCities( ''' +
CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] + ''' );' );
Open;
while not EOF do begin
CitiesCB.Items.Add( FieldByName( 'oCityName' ).AsString );
next;
end;
CitiesCB.ItemIndex := 0;
Close;
end;
end;
procedure TTepFrm.GetTepography;
begin
with DModule.IBTepDataSet do begin
close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetTepography( ''' +
CitiesCB.Items.Strings[ CitiesCB.ItemIndex ] + ''' );' );
Open;
end;
end;
procedure TTepFrm.FormShow(Sender: TObject);
begin
FillCountryCB;
FillCityCB;
GetTepography;
end;
procedure TTepFrm.CountriesCBChange(Sender: TObject);
begin
FillCityCB;
GetTepography;
end;
procedure TTepFrm.CitiesCBChange(Sender: TObject);
begin
GetTepography;
end;
procedure TTepFrm.BitBtn3Click(Sender: TObject);
begin
if ( CitiesCB.ItemIndex = -1 ) or( CitiesCB.text = '' ) then begin
MessageDlg( 'Для ввода новой тепографии выберите город,' + #10 +
' к которой она относится!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TTepNameFrm, TepNameFrm );
TepNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDTEPOGRAPHY';
ParamByName( 'iCityName' ).AsString :=
AnsiUpperCase( CitiesCB.Items.Strings[ CitiesCB.ItemIndex ] );
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
try
ExecProc;
GetTepography;
with DModule do
IBTepDataSet.RecNo := IBProc.ParamByName( 'oResult' ).AsInteger;
except on e: exception do
MessageDlg( 'Ошибка: информация о данной тепографии уже хранится в базе данных!',
mtError, [mbOk], 0 );
end;
end;
end;
procedure TTepFrm.BitBtn2Click(Sender: TObject);
begin
if ( CitiesCB.ItemIndex = -1 ) or( CitiesCB.text = '' ) then begin
MessageDlg( 'Для ввода новой тепографии выберите город,' + #10 +
' к которой она относится!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TTepNameFrm, TepNameFrm );
TepNameFrm.ShowModal;
if not res then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'UPDTEPOGRAPHY';
ParamByName( 'iNumTep' ).AsString :=
DModule.IBTepDataSet.FieldByName( 'oNumTep' ).AsString;
ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );
try
ExecProc;
GetTepography;
with DModule do
IBTepDataSet.RecNo := IBProc.ParamByName( 'oResult' ).AsInteger;
except on e: exception do
MessageDlg( 'Ошибка: информация о данной тепографии уже хранится в базе данных!',
mtError, [mbOk], 0 );
end;
end;
end;
procedure TTepFrm.BitBtn1Click(Sender: TObject);
begin
Application.CreateForm( TCityFrm, CityFrm );
CityFrm.ShowModal;
end;
procedure TTepFrm.BitBtn4Click(Sender: TObject);
begin
if MessageDlg( 'Удалить информацию о типографии: ' +
DModule.IBTepDataSet.FieldByName( 'oTepName' ).AsString +
'?' + #10 +
'ПРЕДУПРИЖДЕНИЕ: будет удалена инфо о книгах, выпущенных данной типографией!',
mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'DELTEPOGRAPHY';
ParamByName( 'iNumTep' ).AsString :=
DModule.IBTepDataSet.FieldByName( 'oNumTep' ).AsString;
ExecProc;
if ParamByName( 'oResult' ).AsInteger <> 0 then
MessageDlg( 'Ошибка: литература, которая была выпущена удаляемой тепографией,' + #10 +
' выдана читателю!', mtError, [mbOk], 170 )
else
with DModule.IBTepDataSet do begin
Close;
Open;
end;
end;
end;
procedure TTepFrm.BitBtn5Click(Sender: TObject);
begin
MainFrm.Tepography.text := DModule.IBTepDataSet.FieldByName( 'oTepName' ).asString;
Close;
end;
end.
unit TepNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TTepNameFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
ETepName: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
TepNameFrm: TTepNameFrm;
implementation
uses TepUnit;
{$R *.dfm}
procedure TTepNameFrm.Button1Click(Sender: TObject);
begin
with TepFrm do begin
TepName := AnsiUpperCase( Trim( ETepName.Text ) );
res := true;
end;
close;
end;
procedure TTepNameFrm.Button2Click(Sender: TObject);
begin
TepFrm.res := false;
close;
end;
end.
unit CityUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids;
type
TCityFrm = class(TForm)
GroupBox1: TGroupBox;
DBGrid: TDBGrid;
GroupBox2: TGroupBox;
AddCityBtn: TBitBtn;
UpdCityBtn: TBitBtn;
DelCityBtn: TBitBtn;
OkBtn: TBitBtn;
GroupBox3: TGroupBox;
CountriesCB: TComboBox;
CountryBtn: TBitBtn;
procedure CountriesCBSelect(Sender: TObject);
procedure OkBtnClick(Sender: TObject);
procedure AddCityBtnClick(Sender: TObject);
procedure UpdCityBtnClick(Sender: TObject);
procedure DelCityBtnClick(Sender: TObject);
procedure AddCountryBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CountryBtnClick(Sender: TObject);
private
public
CityName:ShortString;
procedure FillCountryCB;
procedure GetDataFromCity;
end;
var
CityFrm: TCityFrm;
implementation
{$R *.dfm}
uses MainUnit, DataUnit, CountryUnit, CNameUnit, CityNameUnit, WorkerUnit,
TepUnit;
procedure TCityFrm.FillCountryCB;
var i: integer;
begin
with DModule.IBCountryDataSet do begin
CountriesCB.Items.Clear;
Close;
Open;
i := 0;
while not EOF do begin
i := CountriesCB.Items.Add( FieldByName( 'oCountryName' ).AsString );
if CountriesCB.Items.Strings[i] =
DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString then
CountriesCB.ItemIndex := i;
next;
end;
Close;
end;
end;
procedure TCityFrm.GetDataFromCity;
begin
with DModule.IBCityDataSet do begin
Close;
SelectSQL.Clear;
SelectSQL.Add( 'select * from GetCities( ''' +
CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] + ''' );' );
Open;
end;
end;
procedure TCityFrm.CountriesCBSelect(Sender: TObject);
begin
GetDataFromCity;
end;
procedure TCityFrm.OkBtnClick(Sender: TObject);
begin
with DModule do
case MainFrm.ActiveWnd of
1: MainFrm.RDocCity.Text := AnsiUpperCase( IBCityDataSet.FieldByName( 'oCityName' ).AsString );
2: WorkerFrm.WDocCity.Text := AnsiUpperCase( IBCityDataSet.FieldByName( 'oCityName' ).AsString );
4: TepFrm.OnShow( sender );
end;
Close;
end;
procedure TCityFrm.AddCityBtnClick(Sender: TObject);
begin
if CountriesCB.ItemIndex = -1 then begin
MessageDlg( 'Для ввода нового города выберите страну,' + #10 +
' к которой он относится!', mtWarning, [mbOk], 0 );
exit;
end;
Application.CreateForm( TCityNameFrm, CityNameFrm );
CityNameFrm.ShowModal;
if CityName = '' then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDCITY';
ParamByName( 'iCountryName' ).AsString :=
AnsiUpperCase( CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] );
ParamByName( 'iCityName' ).AsString := AnsiUpperCase( CityName );
try
ExecProc;
if ParamByName( 'oResult' ).AsInteger = 0 then
MessageDlg( 'Ошибка: информация об указанной стране не найдена!',
mtError, [mbOk], 0 )
else
with DModule.IBCityDataSet do begin
Close;
Open;
RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;
end;
except on e: exception do
MessageDlg( 'Ошибка: информация о данном городе уже хранится в базе данных!',
mtError, [mbOk], 110 );
end;
end;
end;
procedure TCityFrm.UpdCityBtnClick(Sender: TObject);
begin
Application.CreateForm( TCityNameFrm, CityNameFrm );
CityNameFrm.ShowModal;
if CityName = '' then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'UPDCITY';
ParamByName( 'iCityName' ).AsString := AnsiUpperCase( CityName );
ParamByName( 'iNumCity' ).AsString :=
DModule.IBCityDataSet.FieldByName( 'oNumCity' ).AsString;
try
ExecProc;
with DModule.IBCityDataSet do begin
Close;
Open;
end;
except on e: exception do
MessageDlg( 'Ошибка: информация о данном городе уже хранится в базе данных!',
mtError, [mbOk], 110 );
end;
end;
end;
procedure TCityFrm.DelCityBtnClick(Sender: TObject);
begin
if MessageDlg( 'Удалить информацию о городе: ' +
DModule.IBCityDataSet.FieldByName( 'oCityName' ).AsString +
'?', mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'DELCITY';
ParamByName( 'iNumCity' ).AsString :=
DModule.IBCityDataSet.FieldByName( 'oNumCity' ).AsString;
ExecProc;
if ParamByName( 'oResult' ).AsInteger <> 0 then
MessageDlg( 'Ошибка: в базе данных содержится информация о райотделах удаляемого города!',
mtError, [mbOk], 140 )
else
with DModule.IBCityDataSet do begin
Close;
Open;
end;
end;
end;
procedure TCityFrm.AddCountryBtnClick(Sender: TObject);
begin
Application.CreateForm( TCountryFrm, CountryFrm );
CountryFrm.ShowModal;
end;
procedure TCityFrm.FormShow(Sender: TObject);
begin
FillCountryCB;
GetDataFromCity;
end;
procedure TCityFrm.CountryBtnClick(Sender: TObject);
begin
Application.CreateForm( TCountryFrm, CountryFrm );
CountryFrm.ShowModal;
end;
end.
unit CountryUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons;
type
TCountryFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
AddCountryBtn: TBitBtn;
UpdCountryBtn: TBitBtn;
DelCountryBtn: TBitBtn;
OkBtn: TBitBtn;
procedure FormShow(Sender: TObject);
procedure AddCountryBtnClick(Sender: TObject);
procedure OkBtnClick(Sender: TObject);
procedure UpdCountryBtnClick(Sender: TObject);
procedure DelCountryBtnClick(Sender: TObject);
private
{ Private declarations }
public
CountryName: ShortString;
procedure GetDataFromCountry;
end;
var
CountryFrm: TCountryFrm;
implementation
{$R *.dfm}
uses DataUnit, MainUnit, CNameUnit, CityUnit, WorkerUnit, AuthorUnit,
TepUnit;
procedure TCountryFrm.GetDataFromCountry;
begin
with DModule.IBCountryDataSet do begin
Close;
Open;
end;
end;
procedure TCountryFrm.FormShow( Sender: TObject );
begin
GetDataFromCountry;
end;
procedure TCountryFrm.AddCountryBtnClick(Sender: TObject);
begin
Application.CreateForm( TNameFrm, NameFrm );
NameFrm.ShowModal;
if CountryName = '' then
exit;
with Dmodule.IBProc do begin
StoredProcName := 'ADDCOUNTRY';
ParamByName( 'iCountryName' ).AsString := AnsiUpperCase( CountryName );
try
ExecProc;
GetDataFromCountry;
except on e: exception do
MessageDlg( 'Ошибка: информация о данной стране уже хранится в базе данных!',
mtError, [mbOk], 1 );
end;
end;
end;
procedure TCountryFrm.OkBtnClick(Sender: TObject);
begin
with DModule.IBCountryDataSet do
case MainFrm.ActiveWnd of
1: CityFrm.OnShow( sender );
2: WorkerFrm.OnShow( sender );
3: AuthorFrm.OnShow( sender );
4: TepFrm.OnShow( sender );
end;
Close;
end;
procedure TCountryFrm.UpdCountryBtnClick(Sender: TObject);
begin
Application.CreateForm( TNameFrm, NameFrm );
NameFrm.ShowModal;
with Dmodule.IBProc do begin
StoredProcName := 'UPDCOUNTRY';
ParamByName( 'iNumCountry' ).AsString := DModule.IBCountryDataSet.FieldByName( 'oNumCountry' ).AsString;
ParamByName( 'iCountryName' ).AsString := AnsiUpperCase( CountryName );
try
ExecProc;
GetDataFromCountry;
except on e: exception do
MessageDlg( 'Ошибка: информация о данной стране уже хранится в базе данных!',
mtError, [mbOk], 1 );
end;
end;
end;
procedure TCountryFrm.DelCountryBtnClick(Sender: TObject);
begin
if MessageDlg( 'Удалить информацию о стране: ' +
DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString +
'?', mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then
exit;
with DModule.IBProc do begin
StoredProcName := 'DELCOUNTRY';
ParamByName( 'iNumCountry' ).asInteger :=
DModule.IBCountryDataSet.FieldByName( 'oNumCountry' ).asInteger;
ExecProc;
case ParamByName( 'oResult' ).AsInteger of
-1: MessageDlg( 'Ошибка: в базе данных содержится информация о городах удаляемой страны!' + #10 +
' Операция прервана!',
mtError, [mbOk], 130 );
-2: MessageDlg( 'Ошибка: в базе данных содержится информация о авторах удаляемой страны!' + #10 +
' Операция прервана!',
mtError, [mbOk], 130 );
else
GetDataFromCountry;
end;
end;
end;
end.
unit CityNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TCityNameFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
CName: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CNameKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CityNameFrm: TCityNameFrm;
implementation
{$R *.dfm}
uses CityUnit;
procedure TCityNameFrm.Button1Click(Sender: TObject);
begin
CityFrm.CityName := CName.Text;
Close;
end;
procedure TCityNameFrm.Button2Click(Sender: TObject);
begin
CityFrm.CityName := '';
Close;
end;
procedure TCityNameFrm.CNameKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
unit CNameUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TNameFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
CName: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CNameKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
end;
var
NameFrm: TNameFrm;
implementation
{$R *.dfm}
uses CountryUnit, CityUnit;
procedure TNameFrm.Button1Click(Sender: TObject);
begin
CountryFrm.CountryName := CName.Text;
Close;
end;
procedure TNameFrm.Button2Click(Sender: TObject);
begin
CountryFrm.CountryName := '';
Close;
end;
procedure TNameFrm.CNameKeyPress(Sender: TObject; var Key: Char);
var keys: set of char;
begin
keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];
if not( key in keys ) then
key := #0;
end;
end.
Размещено на Allbest.ru
Подобные документы
Анализ основных направлений автоматизации бизнес-процессов с информационными технологиями. Разработка баз данных для решения проблем хранения и систематизации информации. Проектирование и реализация логической модели бизнес-процесса на примере библиотеки.
курсовая работа [505,8 K], добавлен 25.10.2011Простые системы для отслеживания заявок. Информационные потоки, возникающие на этапе поступления запроса для решения инцидента. Концептуальная и логическая модель данных. Разработка программного обеспечения по автоматизации процесса Службы Service Desk.
дипломная работа [2,6 M], добавлен 11.06.2017Разработка и реализация базы данных для библиотеки, обеспечение хранения, накопления и предоставления информации о деятельности библиотеки. Компьютерное обеспечение информационных процессов, проектирование структуры входящей информации и выходных данных.
курсовая работа [2,5 M], добавлен 17.09.2011Процесс автоматизации деятельности библиотеки. Построение библиотечного процесса книговыдачи на базе локальной компьютерной сети, объединяющей технологические операции работы с фондом библиотеки. Оформление заказа на книгу. Обработка заказов читателей.
курсовая работа [1,2 M], добавлен 10.09.2015Правовые аспекты функционирования библиотеки. Решение проблемы возврата книг читателями. Основные функции разрабатываемой информационной системы. Подсистемы ведения базы данных, обеспечения безопасности, поиска информации и формирования отчетов.
дипломная работа [1,1 M], добавлен 06.09.2015Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.
дипломная работа [676,6 K], добавлен 16.06.2015Проектирование базы данных для библиотеки и разработка программы для её удобного использования. Пример работы приложения на примере поиска статей по заданным условиям, а также основных операций с данными – добавления в базу, редактирования и удаления.
курсовая работа [2,5 M], добавлен 23.02.2014Организация и эволюция развития поискового аппарата электронного каталога библиотеки. Функции и структурные особенности справочно-библиографического аппарата. Электронные каталоги библиотек г. Омска. Общий функционал программного обеспечения OPAC.
курсовая работа [106,8 K], добавлен 16.09.2017Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Постановка задачи автоматизации учебного процесса колледжа и описание предметной области. Работа с базами данных в Delphi: способы, компоненты доступа к данным и работы с ними. Язык запросов SQL. База данных в Microsoft Access и результаты исследований.
дипломная работа [55,6 K], добавлен 16.07.2008