Курсовые работы / ПРИС П _13
.pdfСервисная операция «Изменение пароля» осуществляет оперативную смену пароля. Диалоговое окно для изменения пароля показано на рисунке
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