Разработка информационной системы воинского учета
Анализ существующей методики воинского учета. Схема архитектуры и программная реализация разрабатываемого АРМ специалиста отдела мобилизационной работы и комплектования. Логическая структура реляционной базы данных. Результаты тестирования программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.05.2013 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
dt.s_node.First;
while not dt.s_node.Eof do
begin
nKodNode := dt.s_node.fieldbyname('kodnode').AsInteger;
cNamNode := dt.s_node.fieldbyname('namnode').AsString;
// теперь из офицеров и солдан выбрать которые в этом узле
DT.qQuery1.Close;
DT.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('SELECT D_Soldat.*, s_zvan.namzvan ');
dt.qQuery1.SQL.Add('FROM s_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan ');
dt.qQuery1.SQL.Add('where D_Soldat.kodnode='+IntToStr(nKodNode)+' and D_Soldat.isOpen=True');
dt.qQuery1.Open;
nRecSoldat := dt.qQuery1.RecordCount;
DT.qQuery2.Close;
DT.qQuery2.SQL.Clear;
dt.qQuery2.SQL.Add('SELECT D_Oficer.*, s_zvan.namzvan, s_doljn.namdoljn ');
dt.qQuery2.SQL.Add('FROM (d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');
dt.qQuery2.SQL.Add('where D_Oficer.kodnode='+IntToStr(nKodNode)+' and D_Oficer.isOpen=True');
dt.qQuery2.Open;
nRecOficer := dt.qQuery2.RecordCount;
// если в узле есть солдаты или офицеры
if (nRecSoldat>0) or (nRecOficer>0) then
begin
J := 1;
// название подразделения
oExcel.Range['A'+IntToStr(I)].Value := cNamNode;
i := i+1;
if nRecOficer>0 then
begin
while not dt.qQuery2.Eof do
begin
oExcel.Range['A'+IntToStr(I)].Value := J;
oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namdoljn').AsString;
oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('nomvus').AsString;
oExcel.Range['D'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namzvan').AsString;
oExcel.Range['E'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('famil').AsString+' '+DT.qQuery2.fieldbyname('imja').AsString+' '+DT.qQuery2.fieldbyname('otch').AsString;
oExcel.Range['F'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat_zap').AsDateTime);
i := i+1; J:=J+1;
dt.qQuery2.Next;
end;
end;
if nRecSoldat>0 then
begin
while not dt.qQuery1.Eof do
begin
oExcel.Range['A'+IntToStr(I)].Value := J;
oExcel.Range['B'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('doljn').AsString;
//oExcel.Range['C'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('nomvus').AsString;
oExcel.Range['D'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('namzvan').AsString;
oExcel.Range['E'+IntToStr(I)].Value := DT.qQuery1.fieldbyname('famil').AsString+' '+DT.qQuery1.fieldbyname('imja').AsString+' '+DT.qQuery1.fieldbyname('otch').AsString;
oExcel.Range['F'+IntToStr(I)].Value := DateToStr(DT.qQuery1.fieldbyname('dat_pr').AsDateTime);
i := i+1; J:=J+1;
dt.qQuery1.Next;
end;
end;
I := I + 2;
end;
dt.s_node.Next;
end;
oExcel.Application.ActiveWorkbook.Save;
oExcel.Application.Visible := True;
end;
procedure TfMain.N31Click(Sender: TObject);
var oExcel : Variant;
I : Integer;
begin
if gnSoldat = 0 then Exit;
// копировать макет
if not CopyFile(PChar(gcExePath + 'Slujba.xls'), PChar(gcExePath+'excel\' + 'Slujba.xls'), False) then
begin
ShowMessage('Ошибка копирования макета отчета. Продолжение невозможно.');
Exit;
end;
oExcel := CreateOleObject('Excel.Application');
oExcel.Application.Visible := False;
oExcel.WorkBooks.Open(gcExePath+'excel\' + 'Slujba.xls');
oExcel.Range['B3'].Value := GridView1.Cell[1,GridView1.SelectedRow].AsString;
oExcel.Range['B4'].Value := GridView1.Cell[2,GridView1.SelectedRow].AsString;
oExcel.Range['B5'].Value := GridView1.Cell[3,GridView1.SelectedRow].AsString;
oExcel.Range['B6'].Value := GridView1.Cell[4,GridView1.SelectedRow].AsString;
// найти должности занимаемые
DT.qQuery2.Close;
DT.qQuery2.SQL.Clear;
dt.qQuery2.SQL.Add('SELECT D_Doljn.Dat1, D_Doljn.Dat2, s_doljn.namdoljn ');
dt.qQuery2.SQL.Add('FROM D_Doljn INNER JOIN s_doljn ON D_Doljn.koddoljn=s_doljn.koddoljn ');
dt.qQuery2.SQL.Add('where D_Doljn.kodoficer='+IntToStr(gnSoldat)+' order by Dat1');
dt.qQuery2.Open;
if dt.qQuery2.RecordCount > 0 then
begin
i:=10;
dt.qQuery2.First;
while not dt.qQuery2.Eof do
begin
oExcel.Range['A'+IntToStr(I)].Value := DT.qQuery2.fieldbyname('namdoljn').AsString;
oExcel.Range['B'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat1').AsDateTime);
if DT.qQuery2.fieldbyname('dat2').AsString <> '01.01.9999' then
oExcel.Range['C'+IntToStr(I)].Value := DateToStr(DT.qQuery2.fieldbyname('dat2').AsDateTime);
i:=i+1;
dt.qQuery2.Next;
end;
end;
oExcel.Application.ActiveWorkbook.Save;
oExcel.Application.Visible := True;
end;
end.
Утилита вспомогательных процедур и функций
unit Util;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ImgList, ComCtrls, ToolWin, Chart, DbChart, Series, StdCtrls, DBCtrls, ExtCtrls;
// коннект с БД
function DataConnect(_path : string) : Boolean;
// по коду города - код области
function getKodOblByKodGorod(_KodGorod : integer) : integer;
// список городов
procedure getViewGorod();
// список улиц
procedure getViewUlic();
// список УДО
procedure getViewUDO();
// список солдат
procedure getViewSoldat(_Node : Integer);
// список офицеров
procedure getViewOficer(_Node : Integer);
// должность
procedure getViewDoljn(_Doljn : integer);
implementation
uses DM, Main, Gorod, Obl, Ulic, UDO, DB;
function DataConnect(_path : string) : Boolean;
begin
if DT.Connector.Connected = False then
begin
// подключение к БД
try
DT.Connector.Provider := 'Microsoft.Jet.OLEDB.4.0';
DT.Connector.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+_path+';Persist Security Info=False;';
DT.Connector.Connected := True;
DT.s_node.TableName := 's_node';
DT.s_node.Active := True;
DT.s_doljn.TableName := 's_doljn';
DT.s_doljn.Active := True;
DT.s_zvan.TableName := 's_zvan';
DT.s_zvan.Active := True;
DT.s_obl.TableName := 's_obl';
DT.s_obl.Active := True;
DT.s_gorod.TableName := 's_gorod';
DT.s_gorod.Active := True;
DT.s_ulic.TableName := 's_ulic';
DT.s_ulic.Active := True;
DT.s_udo.TableName := 's_udo';
DT.s_udo.Active := True;
DT.D_Soldat.TableName := 'D_Soldat';
DT.D_Soldat.Active := True;
DT.d_oficer.TableName := 'd_oficer';
DT.d_oficer.Active := True;
DT.d_doljn.TableName := 'd_doljn';
DT.d_doljn.Active := True;
Result := True;
except
Result := False;
end;
end;
end;
function getKodOblByKodGorod(_KodGorod : integer) : integer;
begin
DT.qQuery1.Close;
DT.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('SELECT KodObl from S_gorod where kodgorod='+IntToStr(_KodGorod));
dt.qQuery1.Open;
if dt.qQuery1.RecordCount > 0 then Result := dt.qQuery1.fieldbyname('kodobl').AsInteger else Result :=0;
end;
procedure getViewGorod();
begin
DT.qMainGorod.Close;
DT.qMainGorod.SQL.Clear;
dt.qMainGorod.SQL.Add('SELECT s_gorod.kodgorod, s_gorod.namgorod, s_obl.namobl ');
dt.qMainGorod.SQL.Add('FROM s_gorod INNER JOIN s_obl ON s_gorod.kodobl=s_obl.kodobl');
dt.qMainGorod.Open;
fGorod.DataCellSource1.Active := True;
end;
procedure getViewulic();
begin
DT.qMainUlic.Close;
DT.qMainUlic.SQL.Clear;
dt.qMainUlic.SQL.Add('SELECT s_ulic.kodulic, s_ulic.namulic, s_gorod.namgorod, s_obl.namobl ');
dt.qMainUlic.SQL.Add('FROM (s_ulic INNER JOIN s_gorod ON s_ulic.kodgorod=s_gorod.kodgorod) INNER JOIN s_obl ON s_ulic.kodobl=s_obl.kodobl;');
dt.qMainUlic.Open;
fUlic.DataCellSource1.Active := True;
end;
procedure getViewUDO();
begin
DT.qSpravUdo.Close;
DT.qSpravUdo.SQL.Clear;
dt.qSpravUdo.SQL.Add('SELECT s_udo.kodudo, s_udo.namudo, s_obl.namobl ');
dt.qSpravUdo.SQL.Add('FROM s_udo INNER JOIN s_obl ON s_udo.kodobl=s_obl.kodobl');
dt.qSpravUdo.Open;
fUDO.DataCellSource1.Active := True;
{SELECT D_Soldat.Famil, D_Soldat.Imja, D_Soldat.Otch, s_zvan.namzvan, D_Soldat.doljn
FROM s_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan; }
end;
procedure getViewSoldat(_Node : Integer);
var cStr : AnsiString;
begin
DT.qQuery1.Close;
DT.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('SELECT cstr from s_node where kodnode='+IntToStr(_node));
dt.qQuery1.Open;
cstr:=dt.qQuery1.fieldbyname('cstr').AsString;
DT.qMainSoldat.Close;
DT.qMainSoldat.SQL.Clear;
dt.qMainSoldat.SQL.Add('SELECT D_Soldat.KodSoldat, D_Soldat.Famil, D_Soldat.Imja, D_Soldat.Otch, s_zvan.namzvan, D_Soldat.doljn ');
dt.qMainSoldat.SQL.Add('FROM s_zvan INNER JOIN D_Soldat ON s_zvan.kodzvan = D_Soldat.kodzvan ');
dt.qMainSoldat.SQL.Add('where D_Soldat.kodnode in ('+cStr+') and D_Soldat.isOpen=True');
dt.qMainSoldat.Open;
fMain.DataCellSource1.Active := True;
end;
procedure getViewOficer(_Node : Integer);
var cStr : AnsiString;
begin
DT.qQuery1.Close;
DT.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('SELECT cstr from s_node where kodnode='+IntToStr(_node));
dt.qQuery1.Open;
cstr:=dt.qQuery1.fieldbyname('cstr').AsString;
DT.qMainOficer.Close;
DT.qMainOficer.SQL.Clear;
dt.qMainOficer.SQL.Add('SELECT D_Oficer.KodOficer, D_Oficer.Famil, D_Oficer.Imja, D_Oficer.Otch, s_zvan.namzvan, s_doljn.namdoljn ');
dt.qMainOficer.SQL.Add('FROM (d_oficer INNER JOIN s_doljn ON d_oficer.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');
dt.qMainOficer.SQL.Add('where D_Oficer.kodnode in ('+cStr+') and D_Oficer.isOpen=True');
dt.qMainOficer.Open;
fMain.DataCellSource2.Active := True;
end;
procedure getViewDoljn(_Doljn : integer);
begin
DT.qMainDoljn.Close;
DT.qMainDoljn.SQL.Clear;
dt.qMainDoljn.SQL.Add('SELECT d_doljn.num, d_oficer.Famil, d_oficer.Imja, d_oficer.otch, s_zvan.namzvan, D_Doljn.dat1, D_Doljn.dat2 ');
dt.qMainDoljn.SQL.Add('FROM ((D_Doljn INNER JOIN d_oficer ON D_Doljn.kodoficer=d_oficer.kodoficer) INNER JOIN s_doljn ON D_Doljn.koddoljn=s_doljn.koddoljn) INNER JOIN s_zvan ON d_oficer.kodzvan=s_zvan.kodzvan ');
dt.qMainDoljn.SQL.Add('WHERE d_doljn.koddoljn='+IntToStr(_Doljn));
dt.qMainDoljn.Open;
fMain.DataCellSource3.Active := True;
end;
end.
Форма назначения на должность
unit Naznach;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls, DBCtrls;
type
TfNaznach = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
DateTimePicker1: TDateTimePicker;
DBLookupComboBox2: TDBLookupComboBox;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fNaznach: TfNaznach;
implementation
uses DM, Main, Util;
procedure TfNaznach.BitBtn1Click(Sender: TObject);
var nKodDoljn : Integer;
begin
if DBLookupComboBox2.KeyValue = -1 then exit;
nKodDoljn := DBLookupComboBox2.KeyValue;
// Проверить на занятость такой должности
dt.qQuery1.Close;
dt.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('select kodDoljn from D_Oficer where isOpen=True and KodDoljn='+IntToStr(nKodDoljn));
dt.qQuery1.Open;
if DT.qQuery1.RecordCount > 0 then
begin
ShowMessage('Данная должность уже занята.');
exit;
end;
// сначала обновить в d_oficer
dt.qQuery1.Close;
dt.qQuery1.SQL.Clear;
dt.qQuery1.SQL.Add('UPDATE D_oficer SET koddoljn='+IntToStr(nKodDoljn)+' where KodOficer='+IntToStr(gnSoldat));
dt.qQuery1.ExecSQL;
// записать в d_doljn
dt.d_doljn.Close;
dt.d_doljn.Open;
dt.d_doljn.Insert;
dt.d_doljn.FieldByName('kodoficer').AsInteger := gnSoldat;
dt.d_doljn.FieldByName('dat1').AsDateTime := DateTimePicker1.Date;
dt.d_doljn.FieldByName('dat2').AsDateTime := StrToDate('01.01.9999');
dt.d_doljn.FieldByName('koddoljn').AsInteger := nKodDoljn;
dt.d_doljn.Post;
dt.d_doljn.Close;
dt.d_doljn.Open;
getViewOficer(gnNode);
getViewDoljn(gnDoljn);
close;
end;
end.
Форма добавления офицера
unit NewOficer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type
TfNewOficer = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
GroupBox1: TGroupBox;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DateTimePicker1: TDateTimePicker;
ComboBox2: TComboBox;
ComboBox4: TComboBox;
GroupBox2: TGroupBox;
GroupBox4: TGroupBox;
Label14: TLabel;
DateTimePicker2: TDateTimePicker;
GroupBox5: TGroupBox;
Label20: TLabel;
Label21: TLabel;
DateTimePicker3: TDateTimePicker;
Edit11: TEdit;
Memo1: TMemo;
ComboBox1: TComboBox;
Label5: TLabel;
Label7: TLabel;
Edit4: TEdit;
Bevel2: TBevel;
Label9: TLabel;
Edit5: TEdit;
Label10: TLabel;
Edit6: TEdit;
Bevel3: TBevel;
Label11: TLabel;
Edit7: TEdit;
Label12: TLabel;
Edit8: TEdit;
DBLookupComboBox1: TDBLookupComboBox;
Label13: TLabel;
Label15: TLabel;
Edit9: TEdit;
Label16: TLabel;
DBLookupComboBox2: TDBLookupComboBox;
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit8KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit11KeyPress(Sender: TObject; var Key: Char);
procedure Edit9KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fNewOficer: TfNewOficer;
implementation
uses DM, Util, Main;
{$R *.dfm}
procedure TfNewOficer.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
procedure TfNewOficer.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
procedure TfNewOficer.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
procedure TfNewOficer.Edit11KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
procedure TfNewOficer.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
procedure TfNewOficer.BitBtn1Click(Sender: TObject);
var cFamil, cImja, cOtch, cNac, cSemPol, cRodstv, cKemPr, cObr1, cObr2 : String;
nKodZvan, nKodUdo, nNomZap, nNomer, nNomPr, nNomUd, nNomVus : Integer;
dDatRoj, dDatZap, dDatPr : TDate;
begin
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') or
(Edit8.Text='') or (Edit9.Text='') or (Edit8.Text='') or (Edit11.Text='') or
(ComboBox1.ItemIndex=-1) or (ComboBox2.ItemIndex=-1) or (ComboBox4.ItemIndex=-1) or
(DBLookupComboBox1.KeyValue=-1) or (DBLookupComboBox2.KeyValue=-1) then
begin
ShowMessage('Не все поля заполнены.');
exit;
end;
cFamil := Trim(Edit1.Text);
cImja := Trim(Edit2.Text);
cOtch := Trim(Edit3.Text);
cNac := ComboBox2.Text;
cSemPol := ComboBox4.Text;
cRodstv := Memo1.Text;
cKemPr := ComboBox1.Text;
cObr1 := Trim(Edit6.Text);
cObr2 := Trim(Edit7.Text);
nKodZvan := DBLookupComboBox1.KeyValue;
nKodUdo := DBLookupComboBox2.KeyValue;
nNomPr := StrToInt(Edit4.Text);
nNomZap := StrToInt(Edit11.Text);
nNomUd := StrToInt(Edit5.Text);
nNomer := StrToInt(Edit9.Text);
nNomVus := StrToInt(Edit8.Text);
dDatRoj := DateTimePicker1.Date;
dDatZap := DateTimePicker3.Date;
dDatPr := DateTimePicker2.Date;
// сохраняем
DT.d_oficer.Close;
DT.d_oficer.Open;
dt.d_oficer.Insert;
dt.d_oficer.FieldByName('famil').AsString := cFamil;
dt.d_oficer.FieldByName('imja').AsString := cImja;
dt.d_oficer.FieldByName('otch').AsString := cOtch;
dt.d_oficer.FieldByName('datroj').AsDateTime := dDatRoj;
dt.d_oficer.FieldByName('nac').AsString := cNac;
dt.d_oficer.FieldByName('sempol').AsString := cSemPol;
dt.d_oficer.FieldByName('rodstv').AsString := cRodstv;
dt.d_oficer.FieldByName('nomer').AsInteger := nNomer;
dt.d_oficer.FieldByName('nom_ud').AsInteger := nNomUd;
dt.d_oficer.FieldByName('kem_pr').AsString := cKemPr;
dt.d_oficer.FieldByName('nom_pr').AsInteger := nNomPr;
dt.d_oficer.FieldByName('dat_pr').AsDateTime := dDatPr;
dt.d_oficer.FieldByName('dat_zap').AsDateTime := dDatZap;
dt.d_oficer.FieldByName('nom_zap').AsInteger := nNomZap;
dt.d_oficer.FieldByName('kodzvan').AsInteger := nKodZvan;
dt.d_oficer.FieldByName('obr1').AsString := cObr1;
dt.d_oficer.FieldByName('obr2').AsString := cObr2;
dt.d_oficer.FieldByName('nomvus').AsInteger := nNomVus;
dt.d_oficer.FieldByName('kodudo').AsInteger := nKodUdo;
dt.d_oficer.FieldByName('koddoljn').AsInteger := 666;
dt.d_oficer.FieldByName('kodnode').AsInteger := gnNode;
dt.d_oficer.FieldByName('isopen').AsBoolean := True;
try
DT.d_oficer.Post;
except
ShowMessage('Ошибка добавления в справочник солдатов. Обратитесь к разработчику.');
Exit;
end;
Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear;Edit6.Clear; Edit7.Clear; Edit8.Clear; Edit9.Clear; Edit11.Clear;
ComboBox1.ItemIndex := -1;ComboBox2.ItemIndex := -1; ComboBox4.ItemIndex := -1;
DBLookupComboBox1.KeyValue := -1; DBLookupComboBox2.KeyValue := -1;
getViewOficer(gnNode);
end;
end.
Форма добавления солдата
unit NewSoldat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type
TfNewSoldat = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
GroupBox1: TGroupBox;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DateTimePicker1: TDateTimePicker;
ComboBox2: TComboBox;
ComboBox4: TComboBox;
GroupBox2: TGroupBox;
Label5: TLabel;
Edit4: TEdit;
Label7: TLabel;
Edit8: TEdit;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
ComboBox1: TComboBox;
Label11: TLabel;
Edit10: TEdit;
GroupBox4: TGroupBox;
Label14: TLabel;
DateTimePicker2: TDateTimePicker;
Label17: TLabel;
DBLookupComboBox4: TDBLookupComboBox;
GroupBox5: TGroupBox;
Label20: TLabel;
Label21: TLabel;
DateTimePicker3: TDateTimePicker;
Edit11: TEdit;
DBLookupComboBox5: TDBLookupComboBox;
Label22: TLabel;
ComboBox3: TComboBox;
Label23: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure Edit11KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fNewSoldat: TfNewSoldat;
implementation
uses DM, Main, Util;
{$R *.dfm}
procedure TfNewSoldat.BitBtn1Click(Sender: TObject);
var cFamil, cImja, cOtch, cNac, cSemPol, cRodstv, cFamil_r, cImja_r, cOtch_r, cAdres_r, cDoljn : String;
nKodZvan, nKodUdo, nNomZap : Integer;
dDatRoj, dDatZap, dDatPr : TDate;
begin
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit8.Text='') or (Edit9.Text='') or (Edit10.Text='') or (Edit11.Text='') or
(ComboBox1.ItemIndex=-1) or (ComboBox2.ItemIndex=-1) or (ComboBox3.ItemIndex=-1) or (ComboBox4.ItemIndex=-1) or
(DBLookupComboBox5.KeyValue=-1) or (DBLookupComboBox4.KeyValue=-1) then
begin
ShowMessage('Не все поля заполнены.');
exit;
end;
cFamil := Trim(Edit1.Text);
cImja := Trim(Edit2.Text);
cOtch := Trim(Edit3.Text);
cNac := ComboBox2.Text;
cSemPol := ComboBox4.Text;
cRodstv := ComboBox1.Text;
cFamil_r := Trim(Edit4.Text);
cImja_r := Trim(Edit8.Text);
cOtch_r := Trim(Edit9.Text);
cAdres_r := Trim(Edit10.Text);
cDoljn := ComboBox3.Text;
nKodZvan := DBLookupComboBox5.KeyValue;
nKodUdo := DBLookupComboBox4.KeyValue;
nNomZap := StrToInt(Edit11.Text);
dDatRoj := DateTimePicker1.Date;
dDatZap := DateTimePicker2.Date;
dDatPr := DateTimePicker3.Date;
// сохраняем
DT.D_Soldat.Close;
DT.D_Soldat.Open;
dt.D_Soldat.Insert;
dt.D_Soldat.FieldByName('famil').AsString := cFamil;
dt.D_Soldat.FieldByName('imja').AsString := cImja;
dt.D_Soldat.FieldByName('otch').AsString := cOtch;
dt.D_Soldat.FieldByName('datroj').AsDateTime := dDatRoj;
dt.D_Soldat.FieldByName('nac').AsString := cNac;
dt.D_Soldat.FieldByName('sempol').AsString := cSemPol;
dt.D_Soldat.FieldByName('rodstv').AsString := cRodstv;
dt.D_Soldat.FieldByName('famil_r').AsString := cFamil_r;
dt.D_Soldat.FieldByName('imja_r').AsString := cImja_r;
dt.D_Soldat.FieldByName('otch_r').AsString := cOtch_r;
dt.D_Soldat.FieldByName('adres_r').AsString := cAdres_r;
dt.D_Soldat.FieldByName('kodudo').AsInteger := nKodUdo;
dt.D_Soldat.FieldByName('dat_pr').AsDateTime := dDatPr;
dt.D_Soldat.FieldByName('dat_zap').AsDateTime := dDatZap;
dt.D_Soldat.FieldByName('nom_zap').AsInteger := nNomZap;
dt.D_Soldat.FieldByName('kodzvan').AsInteger := nKodZvan;
dt.D_Soldat.FieldByName('doljn').AsString := cDoljn;
dt.D_Soldat.FieldByName('kodnode').AsInteger := gnNode;
dt.D_Soldat.FieldByName('isopen').AsBoolean := True;
try
DT.D_Soldat.Post;
except
ShowMessage('Ошибка добавления в справочник солдатов. Обратитесь к разработчику.');
Exit;
end;
Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit8.Clear;
Edit9.Clear; Edit10.Clear; Edit11.Clear;
ComboBox1.ItemIndex:=-1; ComboBox2.ItemIndex:=-1; ComboBox3.ItemIndex:=-1;
getViewSoldat(gnNode);
end;
procedure TfNewSoldat.Edit11KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0', #8])
then key:=#0;
end;
end.
Размещено на Allbest.ru
Подобные документы
Разработка требований к программному обеспечению отдела воинского учета, методология проектирования информационной системы. Реализация и аттестация информационной системы, взаимодействие приложения с источниками данных, его экономическая эффективность.
дипломная работа [1,3 M], добавлен 30.11.2010Варианты использования информационной системы: заказ билета, просмотр каталога фильмов и списка кинотеатров. Проектирование реляционной модели базы данных, ее мапирование в метамодель, логическая и физическая реализация. Результаты работы программы.
курсовая работа [673,9 K], добавлен 20.11.2011Технико-экономическая характеристика предприятия. Выбор комплекса задач автоматизации, анализ бизнес-процессов. Концептуальный уровень архитектуры базы данных, ее физическая модель. Программная реализация информационной системы для учета ремонтных работ.
дипломная работа [8,8 M], добавлен 27.06.2012Создание реляционной базы данных для закупки и реализации товаров. Оптовая база - крупная сеть складских и рабочих помещений. Требования к функциональным характеристикам. Структурная схема базы данных. Программная реализация системы, ее тестирование.
курсовая работа [1,6 M], добавлен 08.07.2012Классификация архитектуры базы данных. Компьютерные сети и их виды. Обзор программных продуктов для учета компьютерной техники и оргтехники. Проектирование информационной структуры предметной области и программная реализация задачи учета оргтехники.
дипломная работа [1,9 M], добавлен 16.05.2017Разработка реляционной базы данных информационной системы для учета доходов потребительского общества средствами программного продукта СУБД MS SQL Server 2012. Преобразование концептуальной модели данных к реляционной. Набор предварительных таблиц.
курсовая работа [11,9 M], добавлен 06.10.2014Автоматизированные системы учета и обработки заявок от пользователей. Функциональное проектирование и моделирование системы учета. Проектирование базы данных, алгоритм работы системы и ее программная реализация. Технико-экономическое обоснование проекта.
дипломная работа [1,6 M], добавлен 05.04.2014Проектирование базы данных в среде MS Access 2000 для учета кадров РОВД г. Климовичи. Описание основных функций, которые должна выполнять данная информационная система. Верификация спроектированной логической модели. Результаты тестирования программы.
курсовая работа [655,4 K], добавлен 06.09.2015Назначение и логическая структура системы документооборота ИП Быкова Л.Ф. Техническое задание и программное обеспечение информационной подсистемы учета закупок и реализации продовольственной продукции; создание базы данных и клиентского приложения.
дипломная работа [5,7 M], добавлен 11.06.2014Разработка информационной системы для отдела учета приема пациентов и медицинского секретариата. Описание исходной (входной) информации и пользовательского интерфейса, логической структуры и технических средств. Построение реляционной базы данных.
дипломная работа [1,9 M], добавлен 16.04.2012