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

StatusBar1.Panels[0].Text:= DateTimeToStr(now);

procedure TFrmMain.N15Click(Sender: TObject);

end;

begin

 

FrmRep1:= TFrmRep1.Create(self);

procedure TFrmMain.N8Click(Sender: TObject);

FrmRep1.ShowModal;

begin

end;

aboutbox.ShowModal;

 

end;

procedure TFrmMain.N16Click(Sender: TObject);

 

begin

procedure TFrmMain.N11Click(Sender: TObject);

FrmRep2:= TFrmRep2.Create(self);

begin

FrmRep2.ShowModal;

dm.ADOconnection.Close;

end;

CompactDatabase_JRO('bd.mdb', 'bd_bakup.mdb','');

 

DM.ADOconnection.Open;

procedure TFrmMain.N17Click(Sender: TObject);

end;

begin

 

FrmRep3:= TFrmRep3.Create(self);

procedure TFrmMain.N10Click(Sender: TObject);

FrmRep3.ShowModal;

begin

end;

Frm_change_password:=TFrm_change_password.Create(self);

procedure TFrmMain.N18Click(Sender: TObject);

Frm_change_password.ShowModal;

begin

end;

FrmRep4:= TFrmRep4.Create(self);

 

FrmRep4.ShowModal;

procedure TFrmMain.N9Click(Sender: TObject);

end;

begin

 

Frm_ChUser:=TFrm_ChUser.Create(self);

procedure TFrmMain.N19Click(Sender: TObject);

Frm_ChUser.ShowModal;

begin

end;

FrmRep5:= TFrmRep5.Create(self);

 

FrmRep5.ShowModal;

procedure TFrmMain.N3Click(Sender: TObject);

end;

begin

 

 

procedure TFrmMain.Button1Click(Sender: TObject);

F:=TiniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');

begin

if OpenDialog1.Execute then

FrmRep6:= TFrmRep6.Create(self);

begin

FrmRep6.ShowModal;

DBPath:=ExtractFilePath(OpenDialog1.FileName);

end;

F.WriteString('Section_DBPath','Path',DBPath);

 

DM.ADOConnection.Close;

procedure TFrmMain.Button2Click(Sender: TObject);

 

begin

DM.ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLED

FrmRep7:= TFrmRep7.Create(self);

B.4.0;Data Source='+DBPath+'bd.mdb;Persist Security Info=False';

FrmRep7.ShowModal;

DM.ADOConnection.Open;

end;

end;

 

F.Free;

end.

end;

 

 

unit DataModule;

procedure TFrmMain.FormShow(Sender: TObject);

 

begin

interface

if chek='Пользователь' then

 

N11.Enabled:=false;

uses

if chek='Гость' then

SysUtils, Classes, DB, ADODB, IniFiles, Forms;

N11.Enabled:=false;

 

 

type

end;

TDM = class(TDataModule)

 

ADOConnection: TADOConnection;

procedure TFrmMain.N12Click(Sender: TObject);

ADODataSetUserTable: TADODataSet;

begin

update_pas: TADOQuery;

FrmPacient:= TFrmPacient.Create(self);

DataSource1: TDataSource;

FrmPacient.ShowModal;

PacientiQuery: TADOQuery;

end;

DiagQuery: TADOQuery;

 

DataSource2: TDataSource;

procedure TFrmMain.N13Click(Sender: TObject);

DataSource3: TDataSource;

begin

ADOQuery3: TADOQuery;

FrmDiag:= TFrmDiag.Create(self);

ADOQuery3pacientip_id: TAutoIncField;

FrmDiag.ShowModal;

ADOQuery3p_fam: TWideStringField;

end;

ADOQuery3p_name: TWideStringField;

 

ADOQuery3p_otch: TWideStringField;

procedure TFrmMain.N14Click(Sender: TObject);

ADOQuery3p_birthday: TDateTimeField;

begin

ADOQuery3p_pol: TWideStringField;

FrmSpravki:= TFrmSpravki.Create(self);

ADOQuery3p_tel: TIntegerField;

FrmSpravki.ShowModal;

ADOQuery3p_work: TWideStringField;

end;

ADOQuery3p_invalid: TWideStringField;

 

ADOQuery3p_datebegin: TDateTimeField;

procedure TFrmMain.N20Click(Sender: TObject);

ADOQuery3p_dateend: TDateTimeField;

begin

ADOQuery3diagd_id: TAutoIncField;

FrmPreiskurant:= TFrmPreiskurant.Create(self);

ADOQuery3d_shifr: TIntegerField;

FrmPreiskurant.ShowModal;

ADOQuery3d_name: TWideStringField;

end;

ADOQuery3soedp_id: TIntegerField;

 

ADOQuery3soedd_id: TIntegerField;

32

ADOQuery1: TADOQuery;

end;

 

DataSource4: TDataSource;

 

 

ADOQuery1d_name: TWideStringField;

var

 

ADOQuery1Countp_id: TIntegerField;

DM: TDM;

 

DataSource5: TDataSource;

DBPath:widestring;

ADOQuery2: TADOQuery;

F:TiniFile;

 

ADOQuery2p_work: TWideStringField;

implementation

 

ADOQuery2Countp_id: TIntegerField;

 

 

ADOQuery4: TADOQuery;

uses authorization;

DataSource6: TDataSource;

 

 

ADOQuery4Countp_id: TIntegerField;

{$R *.dfm}

 

PacientiQueryp_id: TAutoIncField;

 

 

PacientiQueryp_fam: TWideStringField;

procedure

TDM.ADOConnectionBeforeConnect(Sender:

PacientiQueryp_name: TWideStringField;

TObject);

 

PacientiQueryp_otch: TWideStringField;

begin

 

PacientiQueryp_foto: TWideStringField;

 

 

PacientiQueryp_birthday: TDateTimeField;

F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini')

PacientiQueryp_pol: TWideStringField;

;

 

PacientiQueryp_address: TWideStringField;

DBPath:=F.ReadString('Section_DBPath','Path', '');

PacientiQueryp_tel: TIntegerField;

 

 

PacientiQueryp_work: TWideStringField;

ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0

PacientiQueryp_invalid: TWideStringField;

;Data Source='+DBPath+'bd.mdb;Persist Security Info=False';

PacientiQueryp_datebegin: TDateTimeField;

end;

 

PacientiQueryp_dateend: TDateTimeField;

 

 

PacientiQueryEDIT: TBooleanField;

end

 

DataSource7: TDataSource;

 

 

SpravkiQuery: TADOQuery;

unit authorization;

SpravkiQuerys_id: TAutoIncField;

 

 

SpravkiQuerys_fam: TWideStringField;

interface

 

SpravkiQuerys_name: TWideStringField;

 

 

SpravkiQuerys_otch: TWideStringField;

uses

 

SpravkiQuerys_date: TDateTimeField;

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

SpravkiQuerys_stoim: TIntegerField;

Controls, Forms,

 

SpravkiQueryEDIT: TBooleanField;

Dialogs, StdCtrls, DBCtrls, DB, ADODB, ExtCtrls, IniFiles;

ADOQuery5: TADOQuery;

 

 

DataSource8: TDataSource;

type

 

ADOQuery5Counts_id: TIntegerField;

TFrm_authorization = class(TForm)

ADOQuery5Sums_stoim: TFloatField;

Label1: TLabel;

DataSource9: TDataSource;

Button1: TButton;

ADOQuery6: TADOQuery;

Button2: TButton;

ADOQuery6s_id: TAutoIncField;

Image1: TImage;

ADOQuery6s_fam: TWideStringField;

Edit2: TEdit;

 

ADOQuery6s_name: TWideStringField;

Label2: TLabel;

ADOQuery6s_otch: TWideStringField;

Label3: TLabel;

ADOQuery6s_date: TDateTimeField;

Edit1: TEdit;

 

ADOQuery6s_stoim: TIntegerField;

OpenDialog1: TOpenDialog;

ADOQuery6s_nomer: TIntegerField;

procedure Button2Click(Sender: TObject);

SpravkiQuerys_nomer: TIntegerField;

procedure Button1Click(Sender: TObject);

ADOQuery7: TADOQuery;

procedure FormShow(Sender: TObject);

DataSource10: TDataSource;

private

 

ADOQuery7Countp_id: TIntegerField;

{ Private declarations }

DataSource11: TDataSource;

public

 

PreiskurantQuery: TADOQuery;

{ Public declarations }

PreiskurantQuerypr_id: TAutoIncField;

end;

 

PreiskurantQuerypr_name: TWideStringField;

 

 

PreiskurantQuerypr_cena: TIntegerField;

var

 

ADOQuery8: TADOQuery;

Frm_authorization: TFrm_authorization;

DataSource12: TDataSource;

UserIndex: Integer;

ADOQuery8pr_name: TWideStringField;

chek: string;

 

ADOQuery8pr_cena: TIntegerField;

implementation

 

DataSource13: TDataSource;

 

 

ADOQuery9: TADOQuery;

uses DataModule, Main;

DataSource14: TDataSource;

 

 

ADOQuery10: TADOQuery;

{$R *.dfm}

 

ADOQuery10d_name: TWideStringField;

 

 

ADOQuery9d_name: TWideStringField;

procedure

TFrm_authorization.Button2Click(Sender:

DiagQueryd_id: TAutoIncField;

TObject);

 

DiagQueryd_shifr: TIntegerField;

begin

 

DiagQueryd_name: TWideStringField;

Application.Terminate;

DiagQueryEDIT: TBooleanField;

end;

 

PreiskurantQuerypr_day: TWideStringField;

 

 

PreiskurantQueryEDIT: TBooleanField;

procedure

TFrm_authorization.Button1Click(Sender:

procedure

ADOConnectionBeforeConnect(Sender:

TObject);

 

TObject);

 

var LogPass: array of string;

private

 

I,H, Counts: integer;

{ Private declarations }

ResultLogPass: string;

public

 

begin

 

{ Public declarations }

Counts:=0;

 

33

SetLength (LogPass,800);

dm.ADODataSetUserTable.Active:=true;

dm.ADODataSetUserTable.First;

for I := 0 to dm.ADODataSetUserTable.RecordCount -1 do //Обработка данных Логина и Пароля пользователя.

begin

LogPass[I]:= dm.ADODataSetUserTable.FieldValues ['login']+' '+dm.ADODataSetUserTable.FieldValues ['pass'];

dm.ADODataSetUserTable.Next;

Inc(Counts);

end;

ResultLogPass:= Trim(Edit1.Text)+' '+Trim(Edit2.Text);

for H := 0 to Counts do //Цикл проверки данных на

истину.

begin

if ResultLogPass = LogPass[H] then begin

UserIndex:=H; chek:= Edit1.Text; FrmMain.Show; close;

end Else

Label3.Caption:='Не верный логин или пароль';

end;

chek:= Edit1.Text; end;

procedure TFrm_authorization.FormShow(Sender: TObject); begin

if DM.ADOConnection.Connected then DM.ADOConnection.Close;

F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini')

;

DBPath:=f.ReadString('Section_DBPath','Path', ''); try

if DBPath='' then

if OpenDialog1.Execute then begin

DBPath:=ExtractFilePath(OpenDialog1.FileName); F.WriteString('Section_DBPath','Path',DBPath); DM.ADOConnection.Close;

DM.ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLED B.4.0;Data Source='+DBPath+'bd.mdb;Persist Security Info=False';

DM.ADOConnection.Open;

end; finally F.Free;

end;

end;

end.

unit change_password;

interface

uses

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

Dialogs, StdCtrls;

type

TFrm_change_password = class(TForm) Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;

Edit4: TEdit; Label5: TLabel;

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

private

{Private declarations } public

{Public declarations } end;

var

Frm_change_password: TFrm_change_password;

implementation

uses Main, authorization, DataModule;

{$R *.dfm}

procedure TFrm_change_password.Button1Click(Sender:

TObject);

var LogPass: array of string; I,H, Counts: integer; ResultLogPass: string;

begin Counts:=0;

SetLength (LogPass,800);

dm.ADODataSetUserTable.Active:=true;

dm.ADODataSetUserTable.First;

for I := 0 to dm.ADODataSetUserTable.RecordCount -1 do //Обработка данных Логина и Пароля пользователя.

begin

LogPass[I]:= dm.ADODataSetUserTable.FieldValues ['login']+' '+dm.ADODataSetUserTable.FieldValues ['pass'];

dm.ADODataSetUserTable.Next;

Inc(Counts);

end;

ResultLogPass:= Trim(Edit1.Text)+' '+Trim(Edit4.Text);

for H := 0 to Counts do //Цикл проверки данных на

истину.

begin

if (ResultLogPass = LogPass[H]) and (Edit2.Text=Edit3.Text) then

begin UserIndex:=H;

dm.update_pas.SQL.Clear; dm.update_pas.sql.add('update users set pass=par1 where

id_user=par2');

dm.update_pas.Parameters.Refresh;

dm.update_pas.Parameters.ParamByName('par1').Value:=Edit2.Text;

dm.update_pas.Parameters.ParamByName('par2').Value:=UserIndex+1; dm.update_pas.ExecSQL;

close; end

Else

Label5.Caption:='Не верный логин или пароль';

end;

end;

procedure TFrm_change_password.Button2Click(Sender:

TObject);

begin close; end;

procedure TFrm_change_password.FormShow(Sender:

TObject);

begin label5.Caption:=''; edit1.Clear; edit2.Clear; edit3.Clear;

34

edit4.Clear;

dm.ADOConnection.Close;

dm.ADOConnection.Open;

end;

end.

unit ChUser;

interface

uses

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

Dialogs, StdCtrls, DBCtrls ;

type

TFrm_ChUser = class(TForm) Edit1: TEdit;

Label1: TLabel; Button1: TButton; Button2: TButton; Label2: TLabel; Label3: TLabel; Edit2: TEdit;

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

private

{Private declarations } public

{Public declarations } end;

var

Frm_ChUser: TFrm_ChUser; UserIndex: Integer;

implementation

uses Main, DataModule, authorization; {$R *.dfm}

procedure TFrm_ChUser.Button1Click(Sender: TObject); var LogPass: array of string;

I,H, Counts: integer; ResultLogPass: string;

begin Counts:=0;

SetLength (LogPass,800);

dm.ADODataSetUserTable.Active:=true;

dm.ADODataSetUserTable.First;

for I := 0 to dm.ADODataSetUserTable.RecordCount -1 do //Обработка данных Логина и Пароля пользователя.

begin

LogPass[I]:= dm.ADODataSetUserTable.FieldValues ['login']+' '+dm.ADODataSetUserTable.FieldValues ['pass'];

dm.ADODataSetUserTable.Next;

Inc(Counts);

end;

ResultLogPass:= Trim(Edit1.Text)+' '+Trim(Edit2.Text);

for H := 0 to Counts do //Цикл проверки данных на

истину.

begin

if ResultLogPass = LogPass[H] then begin

UserIndex:=H;

close; end

Else

Label3.Caption:='Не верный логин или пароль';

end;

chek:= Edit1.Text; end;

procedure TFrm_ChUser.Button2Click(Sender: TObject);

begin close end;

procedure TFrm_ChUser.FormShow(Sender: TObject); begin

label3.Caption:='';

edit1.Clear;

edit2.Clear;

end;

end.

unit Diag;

interface

uses

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

Dialogs, Menus, StdCtrls, ExtCtrls, Grids, DBGrids;

type

TFrmDiag = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem; DBGrid1: TDBGrid; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Edit1: TEdit;

ComboBox1: TComboBox;

GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton;

procedure Edit1Change(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure FormCreate(Sender: TObject); procedure Refresh;

procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure FormShow(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

const

diag_SQL= 'Select * from diag';

var

FrmDiag: TFrmDiag;

implementation

uses DataModule, EditDiag, authorization;

{$R *.dfm}

procedure TFrmDiag.Refresh; var

s:string; begin

if DM.DiagQuery.FieldValues['d_id']<>null then begin

s:=DM.DiagQuery.FieldValues['d_id'];//запоминаем код DM.DiagQuery.Close;

DM.DiagQuery.Open; DM.DiagQuery.Locate('d_id',s,[]);// перемещаемся на

нужную позицию end;

end;

procedure TFrmDiag.Edit1Change(Sender: TObject); var

S:String;

35

begin

if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0;

//Сохранение имени поля BDGrid1 в переменную S, по индексу выбранной записи в ComboBox1

s:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName;

DM.DiagQuery.SQL.Clear;

// Формирования запроса по полю сохраненному в переменную S

DM.DiagQuery.SQL.Add(diag_SQL+' WHERE '+s+' LIKE

'''+Edit1.Text+'%''');

DM.DiagQuery.Open; // Обновляем

Refresh;

end;

procedure TFrmDiag.DBGrid1TitleClick(Column: TColumn); var

s:string; //направление сорировки i:integer;

clr:TColor; // цвет колонки при сортировке begin

//по умолчанию сортировка по возрастанию

//цвет колонки - зеленый s:=' ASC';

clr:= clMoneyGreen;

//меняем цвет и направление если пользователь выбрал

иное

if RadioButton2.Checked then begin

s:=' DESC'; clr:= clSkyBlue;

end;

//возвращаем исходный цвет всех колонок

//и подсвечиваем выбранную колонку

for i:=0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns.Items[i].Title.Color:= clBtnFace;

DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; // выполняем сортировку по выбранной колонке

DM.DiagQuery.Sort:=

DBGrid1.Columns.Items[Column.Index].FieldName+s;

end;

procedure TFrmDiag.FormCreate(Sender: TObject); var

i: integer; begin

//подключение к БД

DM.ADOConnection.Connected:=true; //очистка текста запроса

DM.DiagQuery.SQL.Clear;

//формирование запроса

DM.DiagQuery.SQL.Add(diag_SQL+';');

//исполнение запроса и вывод результата

DM.DiagQuery.Open;

// Заполняем ComboBox1 по заголовкам секций компонента

DBGrid1

for i:=0 to DBGrid1.Columns.Count-1 do

ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);

end;

procedure TFrmDiag.N1Click(Sender: TObject); begin

OpenForm(false); // вызов процедуры "открытие формы" второй случай (см.выше)

Refresh; //вызов процедуры обновления end;

procedure TFrmDiag.N2Click(Sender: TObject); begin

Refresh; // вызов процедуры обновления

if DM.DiagQuery.FieldValues['edit']=false then begin

OpenForm(true);

Refresh; end

else

MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0);

end;

procedure TFrmDiag.N3Click(Sender: TObject); begin

Refresh;

if DM.DiagQuery.FieldValues['edit']=false then begin

if MessageDlg('Удалить запись?',mtWarning,[mbYes,mbNo],0)=mrYes then//если "да"

begin DM.DiagQuery.Delete; Refresh;

end; end

else

MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0);

end;

procedure TFrmDiag.FormShow(Sender: TObject); begin

if chek='Пользователь' then begin

N1.Enabled:=false;

N2.Enabled:=false;

end;

if chek='Гость' then begin

N1.Enabled:=false;

N2.Enabled:=false;

N3.Enabled:=false;

end;

end;

end.

unit EditDiag;

interface

uses

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

Dialogs, StdCtrls, Mask, DBCtrls;

type

TFrmEditDiag = class(TForm) DBEdit1: TDBEdit; DBEdit2: TDBEdit;

Label1: TLabel;

Label2: TLabel; Button1: TButton; Button2: TButton;

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

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{Private declarations } public

{Public declarations } end;

procedure openform(ed:boolean);

var

FrmEditDiag: TFrmEditDiag;

implementation

uses DataModule;

{$R *.dfm}

procedure openform(ed:boolean); begin

if ed then

36

begin FrmEditDiag.Caption:='Измененние'; DM.DiagQuery.Edit; DM.DiagQuery.FieldValues['edit']:=true; DM.DiagQuery.Post; DM.DiagQuery.Edit;

end else

begin FrmEditDiag.Caption:='Добавление'; DM.DiagQuery.Append;

end;

FrmEditDiag.ShowModal;

end;

procedure TFrmEditDiag.Button1Click(Sender: TObject); begin

if (dbedit1.Text='') or (dbedit2.Text='') then begin

MessageDlg('Введите все данные!',mtError,[mbOk],0); Abort;

end;

dm.DiagQuery.FieldValues['edit']:=false;// признак редактирования - не редактируется

DM.DiagQuery.Post; //подтверждение изменений

FrmEditDiag.Close; // форма закрывается end;

procedure TFrmEditDiag.Button2Click(Sender: TObject);

begin

 

DM.DiagQuery.Cancel;

//Отмена несохраненных

изменений

 

DM.DiagQuery.Edit; dm.DiagQuery.FieldValues['edit']:=false;// признак

редактирования - не редактируется

DM.DiagQuery.Post; //подтверждение изменений

FrmEditDiag.Close;

end;

procedure TFrmEditDiag.FormClose(Sender: TObject; var

Action: TCloseAction);

 

begin

 

DM.DiagQuery.Cancel;

//Отмена несохраненных

изменений

 

DM.DiagQuery.Edit; dm.DiagQuery.FieldValues['edit']:=false;// признак

редактирования - не редактируется

DM.DiagQuery.Post;

end;

end.

unit EditPacienti;

interface

uses

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

Dialogs, StdCtrls, DBCtrls, ComCtrls, Mask, ExtDlgs, Grids,

DBGrids;

type

TFrmEditPacienti = class(TForm) DBEdit1: TDBEdit;

Label1: TLabel; DBEdit2: TDBEdit; Label2: TLabel; DBEdit3: TDBEdit; Label3: TLabel; DBEdit4: TDBEdit; Label4: TLabel; DBEdit5: TDBEdit; Label5: TLabel; DBEdit6: TDBEdit; Label6: TLabel; Label7: TLabel;

DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker;

DateTimePicker3: TDateTimePicker; Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Button1: TButton; DBComboBox1: TDBComboBox; Label11: TLabel; DBComboBox2: TDBComboBox; Label12: TLabel; DBComboBox3: TDBComboBox; Button2: TButton;

Button3: TButton;

OpenPictureDialog1: TOpenPictureDialog; DBListBox1: TDBListBox;

DBListBox2: TDBListBox; Button4: TButton; Button5: TButton; Label13: TLabel;

Label14: TLabel;

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

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Button1Click(Sender: TObject);

procedure DateTimePicker1CloseUp(Sender: TObject); procedure DateTimePicker2CloseUp(Sender: TObject); procedure DateTimePicker3CloseUp(Sender: TObject); procedure FormShow(Sender: TObject);

procedure Button5Click(Sender: TObject); procedure Button4Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

procedure openform(ed:boolean);

var

FrmEditPacienti: TFrmEditPacienti; yes, yes1,no,no1:boolean;

implementation

uses DataModule, Pacient;

{$R *.dfm}

procedure openform(ed:boolean); begin

if ed then begin

FrmEditPacienti.Caption:='Измененние'; DM.PacientiQuery.Edit; DM.PacientiQuery.FieldValues['edit']:=true; DM.PacientiQuery.Post; DM.PacientiQuery.Edit; dm.AdoQuery3.Last; DM.ADOQuery3.Edit; FrmEditPacienti.DBListBox1.Items.clear; FrmEditPacienti.DBListBox2.Items.clear; FrmEditPacienti.DateTimePicker1.Date:=

dm.PacientiQuery.FieldValues['p_birthday']; FrmEditPacienti.DateTimePicker2.Date:=

dm.PacientiQuery.FieldValues['p_datebegin']; FrmEditPacienti.DateTimePicker3.Date:=

dm.PacientiQuery.FieldValues['p_dateend']; yes:=false;

yes1:=false;

no:=false;

no1:=false;

dm.ADOQuery9.First;

while not dm.ADOQuery9.Eof do begin

FrmEditPacienti.DBListBox1.Items.Add(dm.ADOQuery9.FieldValues['d _name']);

dm.ADOQuery9.Next;

end; end

37

else begin

FrmEditPacienti.Caption:='Добавление'; DM.PacientiQuery.Append; DM.ADOQuery3.Append; FrmEditPacienti.DateTimePicker1.Date:= now; FrmEditPacienti.DateTimePicker2.Date:= now; FrmEditPacienti.DateTimePicker3.Date:= now; FrmEditPacienti.DBListBox1.Items.clear; FrmEditPacienti.DBListBox2.Items.clear; yes:=false;

yes1:=false;

no:=false;

no1:=false;

end;

FrmEditPacienti.ShowModal;

end;

procedure TFrmEditPacienti.Button2Click(Sender: TObject); begin

if (dbedit1.Text='') or (dbedit2.Text='') or (dbedit3.Text='') or (dbedit4.Text='')

or (dbedit5.Text='')or (dbedit6.Text='') then begin

MessageDlg('Введите все данные!',mtError,[mbOk],0); Abort;

end;

DM.PacientiQuery.Edit; dm.PacientiQuery.FieldValues['edit']:=false;// признак

редактирования - не редактируется

DM.PacientiQuery.Post; if yes1=true then

DM.ADOQuery3.Post; if yes=true then

DM.ADOQuery3.Connection.CommitTrans; FrmEditPacienti.Close; // форма закрывается

end;

procedure TFrmEditPacienti.Button3Click(Sender: TObject); begin

no:=true;

no1:=true;

FrmEditPacienti.Close;

end;

procedure TFrmEditPacienti.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if no1=true then DM.ADOQuery3.Cancel;

if no=true then begin

if yes=false then dm.AdoQuery3.Connection.BeginTrans;

DM.ADOQuery3.Connection.RollbackTrans;

end;

 

DM.PacientiQuery.Cancel;

//Отмена несохраненных

изменений

DM.PacientiQuery.Edit; dm.PacientiQuery.FieldValues['edit']:=false;// признак

редактирования - не редактируется

DM.PacientiQuery.Post;

end;

procedure TFrmEditPacienti.Button1Click(Sender: TObject); begin

try

if OpenPictureDialog1.Execute then begin

DM.PacientiQuery.FieldByName('p_foto').AsVariant:=ExtractFileName(

OpenPictureDialog1.FileName);

CopyFile(Pchar(OpenPictureDialog1.FileName),Pchar(ExtractFilePath(A

pplication.ExeName)+'\image\'+ExtractFileName(OpenPictureDialog1.Fi

leName)),true);

end; except

on e:Exception do end;

end;

procedure TFrmEditPacienti.DateTimePicker1CloseUp(Sender: TObject);

begin

dm.PacientiQuery.FieldValues['p_birthday']:=DateTimePicker1.Datetime

;

end;

procedure TFrmEditPacienti.DateTimePicker2CloseUp(Sender: TObject);

begin

dm.PacientiQuery.FieldValues['p_datebegin']:=DateTimePicker2.Datetim e;

end;

procedure TFrmEditPacienti.DateTimePicker3CloseUp(Sender: TObject);

begin

dm.PacientiQuery.FieldValues['p_dateend']:=DateTimePicker3.Datetime; end;

procedure TFrmEditPacienti.FormShow(Sender: TObject); begin

dm.ADOQuery10.First;

while not dm.ADOQuery10.Eof do begin

DBListBox2.Items.Add(dm.ADOQuery10.FieldValues['d_name']); dm.ADOQuery10.Next;

end;

end;

procedure TFrmEditPacienti.Button5Click(Sender: TObject); begin

dm.AdoQuery3.Connection.BeginTrans;

dm.AdoQuery3.SQL.Clear;

dm.AdoQuery3.SQL.Text := 'delete from soed where soed.p_id='+inttostr(key)+

' and soed.d_id =(select d_id from diag where d_name="'+DbListBox1.items[DbListBox1.ItemIndex]+'")';

dm.AdoQuery3.ExecSQL;

DbListBox1.DeleteSelected;

yes:=true;

end;

procedure TFrmEditPacienti.Button4Click(Sender: TObject); begin

DbListBox1.Items.Add(DbListBox2.items[DbListBox2.ItemIndex]);

DM.DiagQuery.SQL.Clear; DM.DiagQuery.SQL.Add('select * from diag where

d_name="'+DbListBox2.items[DbListBox2.ItemIndex]+'"'); DM.DiagQuery.Open; DM.ADOQuery3.SQL.Clear;

DM.ADOQuery3.SQL.Add('select * from pacienti, diag, soed where pacienti.p_id = soed.p_id and diag.d_id = soed.d_id and pacienti.p_id =:PARAM');

DM.ADOQuery3.Parameters.ParamByName('PARAM').Value:=dm.Paci entiQuery.Fields[0].AsInteger;

DM.ADOQuery3.Open;

dm.AdoQuery3.Insert; dm.AdoQuery3.FieldByName('soed.p_id').AsInteger:=key;

dm.AdoQuery3.FieldByName('soed.d_id').AsInteger:=DM.DiagQuery.Fi elds[0].AsInteger;

yes1:=true;

end;

end.

unit EditPreiskurant;

38

interface

 

 

 

end.

 

 

 

 

 

 

unit EditSpavki;

 

 

uses

 

 

 

 

 

 

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

interface

 

 

Controls, Forms,

 

 

 

 

 

 

Dialogs, StdCtrls, DBCtrls, Mask;

 

uses

 

 

 

 

 

 

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

type

 

 

 

Controls, Forms,

 

 

TFrmEditPreiskurant = class(TForm)

 

Dialogs, ComCtrls, StdCtrls, Mask, DBCtrls;

 

DBEdit1: TDBEdit;

 

 

 

 

 

DBEdit2: TDBEdit;

 

 

type

 

 

Button1: TButton;

 

 

TFrmEditSpravki = class(TForm)

 

 

Button2: TButton;

 

 

DateTimePicker1: TDateTimePicker;

 

Label1: TLabel;

 

 

 

Label1: TLabel;

 

 

Label2: TLabel;

 

 

 

DBEdit1: TDBEdit;

 

 

Label3: TLabel;

 

 

 

Label2: TLabel;

 

 

DBComboBox1: TDBComboBox;

 

DBEdit2: TDBEdit;

 

 

procedure Button2Click(Sender: TObject);

 

Label3: TLabel;

 

 

procedure Button1Click(Sender: TObject);

 

DBEdit3: TDBEdit;

 

 

private

 

 

 

Label4: TLabel;

 

 

{ Private declarations }

 

 

Label5: TLabel;

 

 

public

 

 

 

Button1: TButton;

 

 

{ Public declarations }

 

 

Button2: TButton;

 

 

end;

 

 

 

Label6: TLabel;

 

 

procedure openform(ed:boolean);

 

DBEdit5: TDBEdit;

 

 

var

 

 

 

DBLookupComboBox1: TDBLookupComboBox;

 

FrmEditPreiskurant: TFrmEditPreiskurant;

 

DBEdit4: TDBEdit;

 

 

 

 

 

 

procedure FormClose(Sender:

TObject; var

Action:

implementation

 

 

 

TCloseAction);

 

 

 

 

 

 

procedure Button2Click(Sender: TObject);

 

uses DataModule;

 

 

 

procedure Button1Click(Sender: TObject);

 

 

 

 

 

procedure DateTimePicker1CloseUp(Sender: TObject);

{$R *.dfm}

 

 

 

private

 

 

 

 

 

 

{ Private declarations }

 

 

procedure openform(ed:boolean);

 

public

 

 

begin

 

 

 

{ Public declarations }

 

 

if ed then

 

 

 

end;

 

 

begin

 

 

 

procedure openform(ed:boolean);

 

 

FrmEditPreiskurant.Caption:='Измененние';

 

 

 

 

DM.PreiskurantQuery.Edit;

 

 

var

 

 

DM.PreiskurantQuery.FieldValues['edit']:=true;

 

FrmEditSpravki: TFrmEditSpravki;

 

DM.PreiskurantQuery.Post;

 

 

 

 

 

DM.PreiskurantQuery.Edit;

 

 

implementation

 

 

end

 

 

 

 

 

 

else

 

 

 

uses DataModule, EditPacienti;

 

 

begin

 

 

 

 

 

 

FrmEditPreiskurant.Caption:='Добавление';

 

{$R *.dfm}

 

 

DM.PreiskurantQuery.Append;

 

 

 

 

end;

 

 

 

procedure openform(ed:boolean);

 

 

FrmEditPreiskurant.ShowModal;

 

begin

 

 

end;

 

 

 

if ed then

 

 

 

 

 

 

begin

 

 

procedure

TFrmEditPreiskurant.Button2Click(Sender:

FrmEditSpravki.Caption:='Измененние';

 

TObject);

 

 

 

DM.SpravkiQuery.Edit;

 

 

begin

 

 

 

DM.SpravkiQuery.FieldValues['edit']:=true;

 

DM.PreiskurantQuery.Cancel;

//Отмена несохраненных

DM.SpravkiQuery.Post;

 

 

изменений

 

 

 

DM.SpravkiQuery.Edit;

 

 

DM.PreiskurantQuery.Edit;

 

 

FrmEditSpravki.DateTimePicker1.Date:=

 

dm.PreiskurantQuery.FieldValues['edit']:=false;//

признак

dm.SpravkiQuery.FieldValues['s_date'];

 

 

редактирования - не редактируется

 

 

end

 

 

DM.PreiskurantQuery.Post;

//подтверждение изменений

else

 

 

FrmEditPreiskurant.Close;

 

 

begin

 

 

end;

 

 

 

FrmEditSpravki.Caption:='Добавление';

 

 

 

 

 

DM.SpravkiQuery.Append;

 

 

procedure

TFrmEditPreiskurant.Button1Click(Sender:

FrmEditSpravki.DateTimePicker1.Date:= now;

 

TObject);

 

 

 

end;

 

 

begin

 

 

 

FrmEditSpravki.ShowModal;

 

 

if (dbedit1.Text='') or (dbedit2.Text='') then

 

end;

 

 

begin

 

 

 

 

 

 

MessageDlg('Введите все данные!',mtError,[mbOk],0);

procedure TFrmEditSpravki.FormClose(Sender: TObject;

Abort;

 

 

 

var Action: TCloseAction);

 

 

end;

 

 

 

begin

 

 

dm.PreiskurantQuery.FieldValues['edit']:=false;//

признак

DM.SpravkiQuery.Cancel;

//Отмена несохраненных

редактирования - не редактируется

 

 

изменений

 

 

DM.PreiskurantQuery.Post;

//подтверждение изменений

DM.SpravkiQuery.Edit;

 

 

FrmEditPreiskurant.Close; // форма закрывается

 

dm.SpravkiQuery.FieldValues['edit']:=false;//

признак

end;

 

 

 

редактирования - не редактируется

 

 

39

DM.SpravkiQuery.Post;

end;

procedure TFrmEditSpravki.Button2Click(Sender: TObject);

begin

 

DM.SpravkiQuery.Cancel;

//Отмена несохраненных

изменений

 

DM.SpravkiQuery.Edit; dm.SpravkiQuery.FieldValues['edit']:=false;// признак

редактирования - не редактируется

DM.SpravkiQuery.Post; //подтверждение изменений

FrmEditSpravki.Close;

end;

procedure TFrmEditSpravki.Button1Click(Sender: TObject); begin

if (dbedit1.Text='') or (dbedit2.Text='') or (dbedit3.Text='') or (dbedit4.Text='') or (dbedit5.Text='') then

begin

MessageDlg('Введите все данные!',mtError,[mbOk],0); Abort;

end;

dm.SpravkiQuery.FieldValues['edit']:=false;// признак редактирования - не редактируется

DM.SpravkiQuery.Post; //подтверждение изменений FrmEditSpravki.Close; // форма закрывается

end;

procedure TFrmEditSpravki.DateTimePicker1CloseUp(Sender: TObject);

begin

dm.SpravkiQuery.FieldValues['s_date']:=DateTimePicker1.Datetime; end;

end.

unit Pacient;

interface

uses

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

Dialogs, Menus, Grids, DBGrids, StdCtrls, ExtCtrls, Mask,

DBCtrls;

type

TFrmPacient = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem; DBGrid1: TDBGrid; DBGrid2: TDBGrid; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Edit1: TEdit;

ComboBox1: TComboBox;

GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Image1: TImage;

DBEdit1: TDBEdit;

procedure FormCreate(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject); procedure Refresh;

procedure N3Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure DBEdit1Change(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject);

private

{Private declarations } public

{Public declarations }

end; const

pacienti_SQL= 'Select * from pacienti'; var

FrmPacient: TFrmPacient; key: integer;

implementation

uses DataModule, authorization, EditPacienti, Diag;

{$R *.dfm}

procedure TFrmPacient.Refresh; var

s,d:string; begin

if DM.PacientiQuery.FieldValues['p_id']<>null then begin

s:=DM.PacientiQuery.FieldValues['p_id'];//запоминаем

код

DM.PacientiQuery.Close;

DM.PacientiQuery.Open; DM.PacientiQuery.Locate('p_id',s,[]);// перемещаемся на

нужную позицию end;

if DM.ADOQuery3.FieldValues['soed.p_id']<>null then begin

d:=DM.ADOQuery3.FieldValues['soed.p_id'];//запоминаем код DM.ADOQuery3.Close;

DM.ADOQuery3.Open; DM.ADOQuery3.Locate('soed.p_id',d,[]);//

перемещаемся на нужную позицию end;

DM.ADOQuery3.SQL.Clear; //формирование запроса

DM.ADOQuery3.SQL.Add('select * from pacienti, diag, soed where pacienti.p_id = soed.p_id and diag.d_id = soed.d_id and pacienti.p_id =:PARAM');

//исполнение запроса и вывод результата

DM.ADOQuery3.Parameters.ParamByName('PARAM').Value:=dm.Paci entiQuery.Fields[0].AsInteger;

DM.ADOQuery3.Open;

end;

procedure TFrmPacient.FormCreate(Sender: TObject); var

i: integer; begin

//подключение к БД

DM.ADOConnection.Connected:=true; //очистка текста запроса

DM.PacientiQuery.SQL.Clear;

//формирование запроса

DM.PacientiQuery.SQL.Add(pacienti_SQL+';');

//исполнение запроса и вывод результата

DM.PacientiQuery.Open;

DM.DiagQuery.SQL.Clear;

//формирование запроса

DM.DiagQuery.SQL.Add(diag_SQL+';');

//исполнение запроса и вывод результата

DM.DiagQuery.Open;

DM.ADOQuery3.SQL.Clear;

//формирование запроса

DM.ADOQuery3.SQL.Add('select * from pacienti, diag, soed where pacienti.p_id = soed.p_id and diag.d_id = soed.d_id and pacienti.p_id =:PARAM');

//исполнение запроса и вывод результата

DM.ADOQuery3.Parameters.ParamByName('PARAM').Value:=dm.Paci entiQuery.Fields[0].AsInteger;

DM.ADOQuery3.Open;

DM.ADOQuery9.SQL.Clear; DM.ADOQuery9.SQL.Add('select diag.d_name from

pacienti, diag, soed where pacienti.p_id = soed.p_id and diag.d_id = soed.d_id and pacienti.p_id =:PARAM');

40

 

 

 

 

// Формирования запроса по полю сохраненному в

DM.ADOQuery9.Parameters.ParamByName('PARAM').Value:=dm.Paci

переменную S

 

 

entiQuery.Fields[0].AsInteger;

 

 

DM.PacientiQuery.SQL.Add(pacienti_SQL+' WHERE '+s+'

DM.ADOQuery9.Open;

 

 

LIKE '''+Edit1.Text+'%''');

 

 

DM.ADOQuery10.SQL.Clear;

 

 

DM.PacientiQuery.Open;

 

 

//формирование запроса

 

 

// Обновляем

 

 

DM.ADOQuery10.SQL.Add('select d_name from diag');

 

Refresh;

 

 

//исполнение запроса и вывод результата

 

end;

 

 

DM.ADOQuery10.Open;

 

 

 

 

 

// Заполняем ComboBox1 по заголовкам секций компонента

procedure TFrmPacient.N3Click(Sender: TObject);

 

DBGrid1

 

 

 

begin

 

 

for i:=0 to DBGrid1.Columns.Count-1 do

 

Refresh;

 

 

 

 

 

 

if DM.PacientiQuery.FieldValues['edit']=false then

 

ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);

 

begin

 

 

end;

 

 

 

if

MessageDlg('Удалить

 

 

 

 

запись?',mtWarning,[mbYes,mbNo],0)=mrYes then//если "да"

 

procedure

TFrmPacient.DBGrid1CellClick(Column:

begin

 

 

TColumn);

 

 

 

DM.PacientiQuery.Delete;

 

begin

 

 

 

Refresh;

 

 

key:=dm.PacientiQuery.Fields[0].AsInteger;

 

end;

 

 

DM.ADOQuery3.SQL.Clear;

 

 

end

 

 

DM.ADOQuery3.SQL.Add('select * from pacienti, diag, soed

else

 

 

where pacienti.p_id = soed.p_id and diag.d_id = soed.d_id and

MessageDlg('Запись

редактируется

другим

pacienti.p_id =:PARAM');

 

 

пользователем',mtError,[mbOK],0);

 

 

 

 

 

 

end;

 

 

DM.ADOQuery3.Parameters.ParamByName('PARAM').Value:=dm.Paci

 

 

 

entiQuery.Fields[0].AsInteger;

 

 

procedure TFrmPacient.FormShow(Sender: TObject);

 

DM.ADOQuery3.Open;

 

 

begin

 

 

DM.ADOQuery9.SQL.Clear;

 

 

if chek='Пользователь' then

 

 

DM.ADOQuery9.SQL.Add('select

diag.d_name

from

begin

 

 

pacienti, diag, soed where pacienti.p_id = soed.p_id and diag.d_id =

N1.Enabled:=false;

 

 

soed.d_id and pacienti.p_id =:PARAM');

 

 

N2.Enabled:=false;

 

 

 

 

 

 

end;

 

 

DM.ADOQuery9.Parameters.ParamByName('PARAM').Value:=dm.Paci

if chek='Гость' then

 

 

entiQuery.Fields[0].AsInteger;

 

 

begin

 

 

DM.ADOQuery9.Open;

 

 

N1.Enabled:=false;

 

 

end;

 

 

 

N2.Enabled:=false;

 

 

 

 

 

 

N3.Enabled:=false;

 

 

procedure

TFrmPacient.DBGrid1TitleClick(Column:

end;

 

 

TColumn);

 

 

 

end;

 

 

var

 

 

 

 

 

 

s:string;

//направление сорировки

 

 

procedure TFrmPacient.DBEdit1Change(Sender: TObject);

i:integer;

 

 

 

begin

 

 

clr:TColor; // цвет колонки при сортировке

 

if (DBEdit1.Text<>'') then

 

 

begin

 

 

 

begin

 

 

// по умолчанию сортировка по возрастанию

 

 

 

 

// цвет колонки - зеленый

 

 

Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'i

s:=' ASC';

 

 

mage\'+dm.PacientiQuery.FieldByName('p_foto').AsString);

 

clr:= clMoneyGreen;

 

 

end;

 

 

// меняем цвет и направление если пользователь выбрал

end;

 

 

иное

 

 

 

 

 

 

if RadioButton2.Checked then

 

 

procedure TFrmPacient.N1Click(Sender: TObject);

 

begin

 

 

 

begin

 

 

s:=' DESC';

 

 

OpenForm(false); // вызов процедуры "открытие формы"

clr:= clSkyBlue;

 

 

второй случай (см.выше)

 

 

end;

 

 

 

Refresh; //вызов процедуры обновления

 

// возвращаем исходный цвет всех колонок

 

end;

 

 

// и подсвечиваем выбранную колонку

 

 

 

 

for i:=0 to DBGrid1.Columns.Count-1 do

 

procedure TFrmPacient.N2Click(Sender: TObject);

 

DBGrid1.Columns.Items[i].Title.Color:= clBtnFace;

 

begin

 

 

DBGrid1.Columns.Items[Column.Index].Title.Color:=clr;

Refresh; // вызов процедуры обновления

 

// выполняем сортировку по выбранной колонке

 

if DM.PacientiQuery.FieldValues['edit']=false then

 

DM.PacientiQuery.Sort:=

 

 

begin

 

 

DBGrid1.Columns.Items[Column.Index].FieldName+s;

 

OpenForm(true);

 

 

end;

 

 

 

Refresh;

 

 

 

 

 

 

end

 

 

procedure TFrmPacient.Edit1Change(Sender: TObject);

 

else

 

 

var

 

 

 

MessageDlg('Запись

редактируется

другим

S:String;

 

 

 

пользователем',mtError,[mbOK],0);

 

 

begin

 

 

 

end;

 

 

if

ComboBox1.ItemIndex=-1

then

 

 

 

ComboBox1.ItemIndex:=0;

 

 

end.

 

 

//Сохранение имени поля BDGrid1 в переменную S, по

unit Preiskurant;

 

 

индексу выбранной записи в ComboBox1

 

 

 

 

 

 

 

 

 

interface

 

 

s:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName;

 

 

 

 

DM.PacientiQuery.SQL.Clear;

 

 

uses

 

 

41

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