Скачиваний:
10
Добавлен:
17.06.2023
Размер:
1.23 Mб
Скачать

Сервисная операция «Изменение пароля» осуществляет оперативную смену пароля. Диалоговое окно для изменения пароля показано на рисунке

2.23.

Рисунок 1.23 -Окно смены пароля

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

который выбирается при запуске программы [10].

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

1.10 Способы и результаты тестирования программного продукта

Тестирование проводиться с целью определения корректности работы информационной системы на всех (большей части) вариантах наборов данных [11].

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

[12].

Рассмотрим проверку исключительных ситуаций. Попробуем при добавлении нового льготника ввести не все данные. В таком случае кнопка

"Принять" остается неактивной [13].

22

Результаты проверки исключительных ситуаций представлены на рисунке 1.24.

Рисунок 1.24 -Исключительная ситуация

Листинг программы представлен в приложении А.

23

ЗАКЛЮЧЕНИЕ

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

На основании выполненного анализа была построена функциональная модель по стандарту IDEF0, дополненная диаграммой описания логики взаимодействия информационных потоков IDEF3, а также логическая и физическая модель данных по стандарту IDEF1X. Представленная логическая модель нормализована до третьей нормальной формы [14]. По полученным в результате построения диаграмм итогам было выполнено описание таблиц базы данных и непосредственная её реализация [15].

В ходе разработки системы были повторены способы создания архитектуры «файл-сервер», а также способы работы с БД при помощи компонентов Delphi ADO, а также возможность работы с MS Excel из Delphi [16].

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

необходимость создания АИС для вещевого довольствия военнослужащих;

определены цели, задачи, с учетом обеспечения вещевого довольствия военнослужащим, а также функциональности, разработанной АИС;

разработана информационная система и представлено её

описание.

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

24

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Архангельский А.Я. Delphi 2006. Справочное пособие.– М.:БИНОМ,

2013.

2 Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник для студентов вузов.– М.:

Финансы и статистика, 2012. –352 с.

3 Иванова Г.С. Программирование: учебник для вузов по направлению

230100 «Информатика и вычислительная техника».- 2-е изд. М.: КНОРУС, 2013. 425 с.

4 Вендров А.М. Современные технологии анализа и проектирования информационных систем [Электронный ресурс] // Центр Информационных Технологий: Режим доступа: URL http://www.citmgu.ru/ (дата обращения

20.11.2016).

5 Дейт К.Д. Введение в системы баз данных. – М.: Вильямс, 2014.

6 Карпова Т.С. Базы данных: Модели, разработка, реализация.- СПб:

Питер,2015.

7 Архангельский А.Я. Программирование в Delphi для Windows. М.:

Бином. Лаборатория знаний, 2013. 1248 с.

8 Ачкасов В. Ю. Программирование баз данных в Delphi [электронный ресурс]: М. : Интернет-Университет Информационных Технологий, 2013. 382

с. Режим доступа

9 Фленов М.Е. Библия Delphi . СПб.: БХВ-Петербург, 2014. 880с.

10 Дарахвелидзе П. Г. Программирование в Delphi 7. Спб. : БХВ-

Петербург, 2013. 784 с.

11 Чеснокова О.В. Delphi. Алгоритмы и программы. М.: NT Press, 2013.

336с.

12 Ершов А.П., Шанский Н.М. Терминологический словарь по основам информатики и вычислительной техники. М. : Просвещение, 2015. 627 с.

25

13 Ревунков Г. И. Проектирование баз данных: учебное пособие

[Электронный ресурс]. М. : МГТУ им. Н.Э. Баумана (Московский государственный технический университет имени Н.Э. Баумана), 2014. 20 с.

Режим доступа: URL http://e.lanbook.com/books/element.php?pl1_id=52390

(дата обращения: 12.12.2016).

14 Заикин О.А., Советов Б.Я. Проектирование интегрированных систем обработки информации и управления. Учебное пособие. М. : МГАП "Мир Книги", 2014. 231 с.

15 Арутюнов, В. В. Теория экономических информационных систем.

М. : Синтег, 2014. 360 с.

16 Марри Кантор. Управление программными проектами.

Практическое руководство по разработке успешного программного обеспечения. М. : Вильямс, 2013. 176 с.

17 Журнал «Прикладная информатика» [Электронный ресурс]:

Научная электронная библиотека eLIBRARY.RU 2010-2014. Режим доступа:

URL http://elibrary.ru/issues.asp?id=25599 (дата обращения 23.11.2016).

26

ПРИЛОЖЕНИЕ А Листинг программы

unit Menu;

interface

uses

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

Dialogs, jpeg, ExtCtrls, Menus, StdCtrls, XPMan;

type

TFMenu = class(TForm) Image1: TImage; MainMenu1: TMainMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem; Edit1: TEdit; N13: TMenuItem; N14: TMenuItem;

SaveDialog1: TSaveDialog; N15: TMenuItem;

procedure N3Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure N13Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N15Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FMenu: TFMenu;

implementation

uses Tabl_Sluj, Tabl_Zvan, Tabl_VeshDov, Tabl_NormVesh, Tabl_Sklad, Tabl_Vydashi,

Report_NeobVS, PodborDov, avtorization, pass_edit, Report_change_of_date, Report_Vydashi;

{$R *.dfm}

procedure TFMenu.N3Click(Sender: TObject); begin

FTabl_Sluj.ShowModal; end;

procedure TFMenu.N8Click(Sender: TObject); begin

FTabl_Zvan.ShowModal; end;

procedure TFMenu.N4Click(Sender: TObject); begin

FTabl_VeshDov.ShowModal;

end;

procedure TFMenu.N5Click(Sender: TObject); begin

FTabl_NormVesh.ShowModal; end;

procedure TFMenu.N6Click(Sender: TObject); begin

FTabl_Sklad.ShowModal; end;

procedure TFMenu.N9Click(Sender: TObject); begin

FTabl_Vydashi.ShowModal; end;

procedure TFMenu.N11Click(Sender: TObject); begin

FReport_Vydashi.ShowModal; end;

procedure TFMenu.N12Click(Sender: TObject); begin

FPodborDov.ShowModal;

end;

procedure TFMenu.FormActivate(Sender: TObject); begin

Favtorization.ShowModal;

end;

procedure TFMenu.N13Click(Sender: TObject); begin

Fpass_edit.ShowModal; end;

procedure TFMenu.N14Click(Sender: TObject); var s:string;

begin

if SaveDialog1.Execute then begin

s:=SaveDialog1.FileName;

if Pos('.mdb',s)<=0 then s:=s+'.mdb';

if CopyFile(Pchar(Favtorization.OpenDialog1.FileName),Pchar(s),true) then

ShowMessage('Файл успешно скопирован!') else

begin

if MessageDlg('Файл с таким именем уже существует! Заменить?',mtWarning,mbOKCancel,0) = mrOk then

CopyFile(Pchar(Favtorization.OpenDialog1.FileName),Pchar(s),false)

end;

end;

end;

procedure TFMenu.N15Click(Sender: TObject); begin

FReport_change_of_date.ShowModal; end;

end.

unit pass_edit;

interface

uses

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

Dialogs, Mask, DBCtrls, StdCtrls;

27

 

Label2: TLabel;

type

DBGrid1: TDBGrid;

TFpass_edit = class(TForm)

DBEdit1: TDBEdit;

Edit1: TEdit;

DBGrid2: TDBGrid;

DBEdit1: TDBEdit;

DBEdit6: TDBEdit;

Edit2: TEdit;

DBEdit7: TDBEdit;

Edit3: TEdit;

DBEdit8: TDBEdit;

Label1: TLabel;

DBEdit9: TDBEdit;

Label2: TLabel;

DBGrid3: TDBGrid;

Label3: TLabel;

Button2: TButton;

Button1: TButton;

GroupBox2: TGroupBox;

Button2: TButton;

Label7: TLabel;

DBEdit2: TDBEdit;

Label8: TLabel;

procedure Button1Click(Sender: TObject);

Label9: TLabel;

procedure Button2Click(Sender: TObject);

Label10: TLabel;

private

DBText1: TDBText;

{ Private declarations }

DBText2: TDBText;

public

DBText3: TDBText;

{ Public declarations }

DBText4: TDBText;

end;

GroupBox3: TGroupBox;

 

Label4: TLabel;

var

Label5: TLabel;

Fpass_edit: TFpass_edit;

Label6: TLabel;

 

Label11: TLabel;

implementation

Label12: TLabel;

 

Label13: TLabel;

uses dm, menu;

DBText5: TDBText;

 

DBText6: TDBText;

{$R *.dfm}

DBText7: TDBText;

 

DBText8: TDBText;

procedure TFpass_edit.Button1Click(Sender: TObject);

DBText9: TDBText;

begin

DBText10: TDBText;

FDM.dPols.First;

DBEdit10: TDBEdit;

while (DBEdit2.Text<>FMenu.Edit1.Text) and (not FDM.dPols.Eof) do

DBEdit11: TDBEdit;

FDM.dPols.Next;

DBEdit12: TDBEdit;

if DBEdit1.Text<>Edit1.Text then

Label14: TLabel;

ShowMessage('Пароль неверный!')

Label15: TLabel;

else

Label16: TLabel;

begin

Label17: TLabel;

if Edit2.Text<>Edit3.Text then

Label18: TLabel;

ShowMessage('Введенный пароли не совпадают!')

DBEdit13: TDBEdit;

else

DBEdit14: TDBEdit;

begin

DBEdit15: TDBEdit;

FDM.dPols.Edit;

DBEdit16: TDBEdit;

DBEdit1.Text:=Edit2.Text;

Label19: TLabel;

FDM.dPols.Post;

Label20: TLabel;

Fpass_edit.Close;

Label21: TLabel;

end;

DBEdit17: TDBEdit;

end;

DBEdit18: TDBEdit;

end;

DBEdit19: TDBEdit;

 

procedure Button1Click(Sender: TObject);

procedure TFpass_edit.Button2Click(Sender: TObject);

procedure Edit1Change(Sender: TObject);

begin

procedure FormActivate(Sender: TObject);

Fpass_edit.Close;

procedure Button2Click(Sender: TObject);

end;

private

 

{ Private declarations }

end.

public

 

{ Public declarations }

unit PodborDov;

end;

interface

var

 

FPodborDov: TFPodborDov;

uses

 

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

implementation

Forms,

 

Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls;

uses dm, Edit_VydashiFIO;

type

{$R *.dfm}

TFPodborDov = class(TForm)

 

Label3: TLabel;

procedure TFPodborDov.Button1Click(Sender: TObject);

Edit1: TEdit;

begin

Button1: TButton;

FDM.dSluj.Close;

Label1: TLabel;

FDM.dSluj.Open;

DBEdit2: TDBEdit;

if Edit2.Text<>'' then

DBEdit3: TDBEdit;

begin

DBEdit4: TDBEdit;

while Edit2.Text<>DBEdit5.Text do

DBEdit5: TDBEdit;

FDM.dSluj.Next;

Edit2: TEdit;

end;

 

28

FEdit_VydashiFIO.ShowModal; if FEdit_VydashiFIO.id=1 then

begin

Edit1.Text:=DBEdit2.Text+' '+DBEdit3.Text+' '+DBEdit4.Text; Edit2.Text:=DBEdit5.Text;

end else

begin FDM.dSluj.First;

if Edit2.Text<>'' then begin

while Edit2.Text<>DBEdit5.Text do FDM.dSluj.Next;

end;

end;

end;

procedure TFPodborDov.Edit1Change(Sender: TObject); begin

if Edit1.Text<>'' then begin

Button2.Enabled:=true;

DBText1.Visible:=true;

DBText2.Visible:=true;

DBText3.Visible:=true;

DBText4.Visible:=true;

FDM.dPodbor.Close;

FDM.dPodbor.CommandText:='select NV_ID, NV_kol, NV_vesh, NV_zvan, ZV_ID, ZV_Name, VD_ID, VD_Name, NV_data, NV_old from VeshDov, Zvanie, Norm_Vesh '+

'where (NV_vesh=VD_ID) and (NV_zvan=ZV_ID) and (NV_old=false) and (NV_zvan='+DBEdit1.Text+')'+

'order by NV_data'; FDM.dPodbor.Open;

FDM.dPodborSklad.Close; FDM.dPodborSklad.CommandText:='select SK_ID, SK_kol, SK_razm,

SK_vesh, VD_ID, VD_Name, VD_Type '+ 'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Обувь") and (SK_razm='+DBEdit6.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Брюки") and (SK_razm='+DBEdit7.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Верхняя одежда") and (SK_razm='+DBEdit8.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Головной убор") and (SK_razm='+DBEdit9.Text+')';

FDM.dPodborSklad.Open;

FDM.dPodborAll.Close; FDM.dPodborAll.CommandText:='SELECT T1.*, T2.* from ( '+

'select NV_ID, NV_kol, NV_vesh, NV_zvan, ZV_ID, ZV_Name, VD_ID, VD_Name, NV_data, NV_old from VeshDov, Zvanie, Norm_Vesh '+

'where (NV_vesh=VD_ID) and (NV_zvan=ZV_ID) and (NV_old=false) and (NV_zvan='+DBEdit1.Text+')'+

'order by NV_data ' + ') T1,( '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Обувь") and (SK_razm='+DBEdit6.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Брюки") and (SK_razm='+DBEdit7.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Верхняя одежда") and (SK_razm='+DBEdit8.Text+')'+

'UNION '+

'select SK_ID, SK_kol, SK_razm, SK_vesh, VD_ID, VD_Name, VD_Type '+

'from Sklad, VeshDov '+

'where (SK_vesh=VD_ID) and (VD_Type="Головной убор") and (SK_razm='+DBEdit9.Text+')'+

') T2 '+

'where (T1.VD_Name=T2.VD_Name) and (T1.NV_kol<=T2.SK_kol)';

//

FDM.dPodborAll.Open; end

else begin

DBText1.Visible:=false;

DBText2.Visible:=false;

DBText3.Visible:=false;

DBText4.Visible:=false;

Button2.Enabled:=false;

end;

end;

procedure TFPodborDov.FormActivate(Sender: TObject); begin

FDM.dPodbor.Close;

FDM.dPodbor.CommandText:='select NV_ID, NV_kol, NV_vesh, NV_zvan, ZV_ID, ZV_Name, VD_ID, VD_Name, NV_data, NV_old from VeshDov, Zvanie, Norm_Vesh '+

'where (NV_vesh=VD_ID) and (NV_zvan=ZV_ID) and (NV_old=false)

'+

'order by NV_data'; FDM.dPodbor.Open; DBText1.Visible:=false; DBText2.Visible:=false; DBText3.Visible:=false; DBText4.Visible:=false; Edit1.Text:=''; Button2.Enabled:=false;

end;

procedure TFPodborDov.Button2Click(Sender: TObject); begin

FDM.dSklad.Open;

FDM.dVydashi.Open;

FDM.dPodborAll.First;

while not(FDM.dPodborAll.Eof) do begin

//выдаем текущую вешь FDM.dVydashi.Append; DBEdit13.Text:=DBEdit10.Text; DBEdit14.Text:=DBEdit11.Text; DBEdit15.Text:=Edit2.Text; DBEdit16.Text:=DateToStr(Date); FDM.dVydashi.Post;

//удаляем вещь со склада FDM.dSklad.First;

while not(FDM.dSklad.Eof) and ((DBEdit17.Text<>DBEdit10.Text) or (DBEdit19.Text<>DBEdit12.Text)) do

FDM.dSklad.Next;

if (DBEdit17.Text=DBEdit10.Text) or (DBEdit19.Text=DBEdit12.Text) then

begin FDM.dSklad.Edit;

29

DBEdit18.Text:=IntToStr(StrToInt(DBEdit18.Text)- StrToInt(DBEdit14.Text));

FDM.dSklad.Post;

end;

FDM.dPodborAll.Next;

end;

ShowMessage('Вещевое довольствие выдано'); FPodborDov.Close;

end;

end.

unit Report_change_of_date;

interface

uses

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

Dialogs, ComCtrls, Grids, DBGrids, StdCtrls;

type

TFReport_change_of_date = class(TForm) DBGrid1: TDBGrid;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

procedure DateTimePicker1Change(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

FReport_change_of_date: TFReport_change_of_date;

implementation

uses dm;

{$R *.dfm}

procedure TFReport_change_of_date.DateTimePicker1Change(Sender: TObject);

begin

FDM.qChange_of_date.Close; FDM.qChange_of_date.SQL.Text:='select NV_ID, NV_kol, NV_vesh,

NV_zvan, ZV_ID, ZV_Name, VD_ID, VD_Name, NV_data, NV_old from VeshDov, Zvanie, Norm_Vesh '+

'where (NV_vesh=VD_ID) and (NV_zvan=ZV_ID) and (NV_old=false) and (NV_data< :datemax ) and (NV_data>= :datemin ) '+

'order by NV_data ';

FDM.qChange_of_date.Parameters.ParamByName('datemin').Value := DateToStr(DateTimePicker1.Date); FDM.qChange_of_date.Parameters.ParamByName('datemax').Value := DateToStr(DateTimePicker2.Date);

FDM.qChange_of_date.Open; end;

end.

unit Report_Vydashi;

interface

uses

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

Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Menus, ComCtrls, ADODB, comObj,

OleServer, WordXP, ExcelXP, ToolWin,registry;

type

TFReport_Vydashi = class(TForm) DBGrid1: TDBGrid;

Label3: TLabel; Edit1: TEdit; Button1: TButton; Label2: TLabel; DBEdit1: TDBEdit; Label1: TLabel; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; Button2: TButton;

SaveDialog1: TSaveDialog;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FReport_Vydashi: TFReport_Vydashi;

implementation

uses dm, Edit_VydashiFIO;

{$R *.dfm}

Procedure SendtoExcel(ShFile: String; Querys: TADOQuery); Var

ExcelApp, Workbook, Range, Cell1, Cell2,Cell3, ArrayData: Variant; BeginCol, BeginRow, j: integer;

RowCount, ColCount: Integer; Begin

BeginCol := 1;

BeginRow := 1;

//Размеры выводимого массива данных RowCount := Querys.RecordCount+1; ColCount := 3;

//Создание Excel

ExcelApp := CreateOleObject('Excel.Application');

//Отключаем реакцию Excel на события, чтобы ускорить вывод информации ExcelApp.Application.EnableEvents:= false;

//Создаем Книгу (Workbook)

//Если заполняем шаблон, то

Workbook := ExcelApp.WorkBooks.Add; WorkBook.SaveAs(ShFile);

ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);

//Заполняем массив Querys.DisableControls; Querys.First;

//заполняем шапку таблицы For J := 1 To 3 Do

ArrayData[1, J]:=FReport_Vydashi.DBGrid1.Columns[j-1].Title.Caption;

While Not Querys.eof Do

Begin

For J := 1 To 3 Do

Begin

ArrayData[Querys.RecNo+1,J]:=Querys.FieldbyName(Querys.FieldDefs.It ems[j-1].DisplayName).value;

End;

Querys.Next;

End;

Querys.EnableControls;

//Зададим ширину колонок WorkBook.WorkSheets[1].Columns[1].ColumnWidth := 25; WorkBook.WorkSheets[1].Columns[2].ColumnWidth := 16; WorkBook.WorkSheets[1].Columns[3].ColumnWidth := 14;

//Левая верхняя ячейка области, в которую будем выводить данные Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];

//Правая нижняя ячейка области, в которую будем выводить данные

Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol + ColCount - 1];

//Правая верхняя ячейка области

30

Cell3 :=WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol + ColCount - 1];

//Область, в которую будем выводить данные

Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];

//А вот и сам вывод данных

//Намного быстрее поячеечного присвоения Range.Value := ArrayData;

//Делаем рамку Range.Borders.LineStyle:=1;

//Выравнивам по центру по горизонтали Range.HorizontalAlignment := 3;

//Зада¸м новый диапазон

Range := WorkBook.WorkSheets[1].Range[Cell1, Cell3];

//Делаем шапку таблицы жирным шрифтом Range.Font.Bold := True;

//Делаем Excel видимым ExcelApp.Visible := True;

end;

procedure TFReport_Vydashi.Button1Click(Sender: TObject); var s:string;

begin FDM.dSluj.Close; FDM.dSluj.Open;

if DBEdit1.Text<>'' then begin

while DBEdit1.Text<>DBEdit5.Text do FDM.dSluj.Next;

end; FEdit_VydashiFIO.ShowModal; if FEdit_VydashiFIO.id=1 then

begin

Edit1.Text:=DBEdit2.Text+' '+DBEdit3.Text+' '+DBEdit4.Text; DBEdit1.Text:=DBEdit5.Text;

end;

FDM.qReportObesp.Close;

s:=DateToStr(Date);

s:=s[1]+s[2]+'/'+s[4]+s[5]+'/'+s[7]+s[8]+s[9]+s[10];

FDM.qReportObesp.SQL.Text:='select VD_name, VY_dataVyd,VY_kol, VY_FIO, VY_ID, VY_vesh, VD_ID, VD_srokisp from VeshDov, Vydashi where '+

' ((#'+s+'# - VY_dataVyd)<VD_srokisp*30) and (VD_ID=VY_vesh) and (VY_FIO='+DBEdit1.Text+') ';

//FDM.qReportObesp.Parameters.ParamByName('Curdate').Value := Date;

FDM.qReportObesp.Open;

end;

procedure TFReport_Vydashi.Button2Click(Sender: TObject); begin

if SaveDialog1.Execute then SendtoExcel(SaveDialog1.FileName,FDM.qReportObesp); end;

end.

unit Tabl_NormVesh;

interface

uses

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

Dialogs, Grids, DBGrids, StdCtrls, DBCtrls, Mask;

type

TFTabl_NormVesh = class(TForm) DBGrid1: TDBGrid;

Button1: TButton; GroupBox1: TGroupBox; Label1: TLabel;

Label2: TLabel;

Label3: TLabel; DBText1: TDBText; DBText2: TDBText;

DBText3: TDBText;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit; CheckBox1: TCheckBox;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure CheckBox1Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FTabl_NormVesh: TFTabl_NormVesh;

implementation

uses dm, Edit_NormVesh;

{$R *.dfm}

procedure TFTabl_NormVesh.Button1Click(Sender: TObject); begin

FDM.dNormVesh.Append; FEdit_NormVesh.ShowModal;

end;

procedure TFTabl_NormVesh.Button2Click(Sender: TObject); begin

FDM.dNormVesh.Edit; FEdit_NormVesh.ShowModal;

end;

procedure TFTabl_NormVesh.Button3Click(Sender: TObject); begin

if DBEdit1.Text<>'' then begin

if MessageDlg('Вы действительно хотите удалить запись?',mtWarning,mbOKCancel,0) = mrOk then

begin FDM.dDeleteNormVesh.Close; FDM.dDeleteNormVesh.Open; FDM.dDeleteNormVesh.First;

while DBEdit1.Text<>DBEdit2.Text do FDM.dDeleteNormVesh.Next;

FDM.dDeleteNormVesh.Delete;

FDM.dNormVesh.Close;

FDM.dNormVesh.Open;

end; end else

ShowMessage('Таблица пуста!'); end;

procedure TFTabl_NormVesh.FormActivate(Sender: TObject); begin

FDM.dZvan.Close;

FDM.dZvan.Open;

FDM.dVeshDov.Close;

FDM.dVeshDov.Open;

FDM.dNormVesh.Close;

FDM.dNormVesh.CommandText:='select NV_ID, NV_kol, NV_vesh, NV_zvan, ZV_ID, ZV_Name, VD_ID, VD_Name, NV_data, NV_old from VeshDov, Zvanie, Norm_Vesh '+

'where (NV_vesh=VD_ID) and (NV_zvan=ZV_ID) '+ 'order by NV_data';

FDM.dNormVesh.Open;

end;

procedure TFTabl_NormVesh.CheckBox1Click(Sender: TObject); begin

if CheckBox1.Checked then begin

FDM.dNormVesh.Close;

31

Соседние файлы в папке Курсовые работы