Разработка информационной системы воинского учета

Анализ существующей методики воинского учета. Схема архитектуры и программная реализация разрабатываемого АРМ специалиста отдела мобилизационной работы и комплектования. Логическая структура реляционной базы данных. Результаты тестирования программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.