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

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure e1Change(Sender: TObject); procedure e2Change(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FLgL: TFLgL;

implementation uses datm;

{$R *.dfm}

procedure TFLgL.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

dm.COM.CommandText:='Update lgot set log_lg = FALSE WHERE id_lg='+tmp+''; dm.COM.Execute;

end;

procedure TFLgL.SpeedButton1Click(Sender: TObject);

begin

if ll1.Fields[0].AsString='' then exit; dm.TEMP.Active:=false; dm.TEMP.CommandText:='select id_ll FROM lgl WHERE (id_l_ll='+ll1.Fields[0].AsString+') AND (id_lg_ll='+tmp+')';

dm.TEMP.Active:=true;

if dm.TEMP.RecordCount>0 then begin

showmessage('Данноое лекарство уже естьв списке');

exit; end

else begin

dm.COM.CommandText:='Insert into lgl (id_l_ll,id_lg_ll) values ('+ll1.Fields[0].AsString+','+tmp+')';

dm.COM.Execute;

ll1.Requery();

ll2.Requery(); showmessage('Лекарство добавлено'); end;

end;

procedure TFLgL.SpeedButton2Click(Sender: TObject);

begin

if ll2.Fields[0].AsString='' then exit;

if application.MessageBox('Вы хотите удалить лекарство у данного льготника?','Удаление лекарства',mb_yesno+mb_iconquestion)=idyes then

begin

dm.COM.CommandText:='delete * from lgl WHERE (id_l_ll = '+ll2.Fields[0].AsString+') AND (id_lg_ll = '+tmp+')';

dm.COM.Execute;

ll1.Requery();

ll2.Requery(); showmessage('Лекарство удалено'); end;

end;

procedure TFLgL.e1Change(Sender: TObject); begin

Flgl.LL1.Active:=false; Flgl.LL1.CommandText:='select id_l,nazv_l FROM lek WHERE id_l not in (select id_l_ll from lgl WHERE (id_lg_ll='+tmp+')) AND (nazv_l like "%'+e1.Text+'%") ';

Flgl.LL1.Active:=true;

end;

procedure TFLgL.e2Change(Sender: TObject); begin

Flgl.LL2.Active:=false; Flgl.LL2.CommandText:='select id_l,nazv_l FROM lek WHERE id_l in (select id_l_ll from lgl WHERE (id_lg_ll='+tmp+')) AND (nazv_l like "%'+e2.text+'%")';

Flgl.LL2.Active:=true;

end;

end.

unit Lgot; interface uses

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

Dialogs, Menus, Grids, DBGrids;

type

TFLgot = class(TForm) DBGrid1: TDBGrid; PopupMenu1: TPopupMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N9Click(Sender: TObject);

private

{ Private declarations } public

42

{ Public declarations } end;

var

FLgot: TFLgot; implementation

uses datm, ALgot, LgL, Rec; {$R *.dfm}

procedure TFLgot.N1Click(Sender: TObject); begin

tm:=0;

falgot.ShowModal;

end;

procedure TFLgot.N2Click(Sender: TObject); begin

if dm.lg.Fields[0].AsString='' then exit; tm:=1;

tmp:=dm.lg.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_lg from lgot where id_lg = '+tmp+'';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit; end

else begin

dm.COM.CommandText:='Update lgot set log_lg = TRUE WHERE id_lg='+tmp+'';

dm.COM.Execute;

end;

falgot.e1.Text:=dm.lg.Fields[1].AsString;

falgot.e3.Text:=dm.lg.Fields[2].AsString;

falgot.e4.Text:=dm.lg.Fields[3].AsString;

falgot.dtp.date:=dm.lg.Fields[4].AsDateTime;

falgot.e2.Text:=dm.lg.Fields[5].AsString;

falgot.ShowModal;

end;

procedure TFLgot.N3Click(Sender: TObject); begin

if dm.lg.Fields[0].AsString='' then exit; tmp:=dm.lg.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_lg from lgot where id_lg = '+tmp+'';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit;

end;

if application.MessageBox('Вы хотите удалить запись?','Удаление', mb_yesno+mb_iconquestion)=idyes then

begin

dm.COM.CommandText:='delete * FROM lgl WHERE (id_lg_ll='+tmp+')';

dm.COM.Execute; dm.COM.CommandText:='delete * FROM lgot

WHERE (id_lg='+tmp+')'; dm.COM.Execute; dm.lg.Requery(); showmessage('Запись удалена'); end;

end;

procedure TFLgot.N5Click(Sender: TObject); begin

if dm.lg.Fields[0].AsString='' then exit; tmp:=dm.lg.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_lg from lgot where id_lg = '+tmp+'';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit; end

else begin

dm.COM.CommandText:='Update lgot set log_lg = TRUE WHERE id_lg='+tmp+'';

dm.COM.Execute;

end;

Flgl.Label2.Caption:=dm.LG.Fields[1].AsString;

Flgl.LL1.Active:=false; Flgl.LL1.CommandText:='select id_l,nazv_l FROM lek WHERE id_l not in (select id_l_ll from lgl WHERE (id_lg_ll='+tmp+')) '; Flgl.LL1.Active:=true;

Flgl.LL2.Active:=false; Flgl.LL2.CommandText:='select id_l,nazv_l FROM lek WHERE id_l in (select id_l_ll from lgl WHERE (id_lg_ll='+tmp+')) ';

Flgl.LL2.Active:=true;

flgl.ShowModal;

end;

procedure TFLgot.N6Click(Sender: TObject); begin

if dm.lg.Fields[0].AsString='' then exit; tmp:=dm.lg.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_lg from lgot where id_lg = '+tmp+'';

dm.TEMP.Active:=true;

43

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit; end

else begin

dm.COM.CommandText:='Update lgot set log_lg = TRUE WHERE id_lg='+tmp+'';

dm.COM.Execute;

end;

tmp2:='0';

Frec.Label2.Caption:=dm.LG.Fields[1].AsString;

Frec.rc1.Active:=false; Frec.rc1.CommandText:='select id_l,nazv_l FROM lek WHERE id_l in ((select id_l_ll from lgl WHERE (id_lg_ll='+tmp+'))) AND (id_l not in (select id_l_rl FROM recl WHERE (id_rc_rl='+tmp2+')))'; Frec.rc1.Active:=true;

Frec.rc2.Active:=false; Frec.rc2.CommandText:='select nazv_l from lek WHERE id_l in (select id_l_rl from recL WHERE (id_rc_rl = '+tmp2+'))';

Frec.rc2.Active:=true;

Frec.ShowModal;

end;

procedure TFLgot.N10Click(Sender: TObject); begin

dm.Lg.Active:=false;

dm.Lg.CommandText:='select id_lg,fio_lg,sp_lg,np_lg,data_lg,tel_lg from lgot'; dm.Lg.Active:=true;

end;

procedure TFLgot.N9Click(Sender: TObject); var zap:string;

begin

zap:=inputbox('Поиск льготников','Паспорт! Формат: Серия-Номер',''); dm.Lg.Active:=false; dm.Lg.CommandText:='select id_lg,fio_lg,sp_lg,np_lg,data_lg,tel_lg from lgot WHERE (sp_lg & "-" & np_lg) = "'+zap+'"'; dm.Lg.Active:=true;

end;

end.

unit main; interface uses

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

Dialogs, Menus, ComCtrls,inifiles;

type

TFmain = class(TForm) StatusBar1: TStatusBar; MainMenu1: TMainMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N13Click(Sender: TObject); function data(data:tdatetime):string; procedure N17Click(Sender: TObject); procedure N16Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

Fmain: TFmain; implementation

uses datm, Lek, Lgot, Vr4, Vrec, ot, chpass; {$R *.dfm}

procedure TFmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if application.MessageBox('Вы хоите выйти из программы?','Выход',mb_yesno+mb_iconquestion)=i dyes then

begin application.Terminate; end

else canclose:=false; end;

procedure TFmain.N4Click(Sender: TObject); begin

dm.L.Active:=false; dm.L.CommandText:='Select * from lek'; dm.L.Active:=true;

flek.ShowModal;

end;

procedure TFmain.N5Click(Sender: TObject); begin

dm.Lg.Active:=false;

dm.Lg.CommandText:='select id_lg,fio_lg,sp_lg,np_lg,data_lg,tel_lg from lgot'; dm.Lg.Active:=true;

flgot.ShowModal;

end;

44

 

 

 

begin

procedure TFmain.N6Click(Sender: TObject);

fchpass.ShowModal;

begin

 

 

end;

dm.vr.Active:=false;

 

end.

dm.vr.CommandText:='select

 

id_vr,fio_vr,sp_vr,np_vr,data_vr,tel_vr from vr4';

unit ot;

dm.vr.Active:=true;

 

interface

fvr4.ShowModal;

 

uses

end;

 

 

Windows, Messages, SysUtils, Variants, Classes,

 

 

 

Graphics, Controls, Forms,

procedure TFmain.N8Click(Sender: TObject);

Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls,

begin

 

 

WordXP, OleServer,registry;

dm.rc.Active:=false;

 

 

dm.rc.CommandText:='select

type

id_rc,fio_lg,fio_vr,data_rc,log_rc,id_lg FROM

TFot = class(TForm)

rec,lgot,vr4 WHERE (id_lg=id_lg_rc) AND (id_vr =

Panel1: TPanel;

id_vr_rc)';

 

Panel2: TPanel;

dm.rc.Active:=true;

 

BitBtn1: TBitBtn;

fvrec.ShowModal;

 

BitBtn2: TBitBtn;

end;

 

 

dtp1: TDateTimePicker;

 

 

 

dtp2: TDateTimePicker;

procedure TFmain.N12Click(Sender: TObject);

Label1: TLabel;

begin

 

 

Label2: TLabel;

tm:=0;

 

 

WordDocument1: TWordDocument;

fot.ShowModal;

 

WordApplication1: TWordApplication;

end;

 

 

procedure BitBtn1Click(Sender: TObject);

 

 

 

procedure FormShow(Sender: TObject);

procedure TFmain.N13Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

begin

 

 

private

tm:=1;

 

 

{ Private declarations }

fot.ShowModal;

 

public

end;

 

 

{ Public declarations }

function TFmain.data (data:tdatetime):string;

end;

var g,m,d:word;

 

var

begin

 

 

Fot: TFot;

decodedate(data,g,m,d);

implementation

result:=''+currtostr(m)+'/'+currtostr(d)+'/'+currtostr(g)

uses datm, main;

+'';

 

 

{$R *.dfm}

end;

 

 

 

procedure TFmain.N17Click(Sender: TObject);

procedure TFot.BitBtn1Click(Sender: TObject);

var inifile:tinifile;

 

begin

dbp:string;

 

closequery;

begin

 

 

end;

IniFile

:=

 

 

TIniFile.Create(ExtractFilePath(Application.ExeName

procedure TFot.FormShow(Sender: TObject);

)+'options.ini');

// загрузка из фала настроек

begin

пути к базе

 

dtp1.Date:=date;

DBP := IniFile.ReadString('Options', 'DBPath',

dtp2.Date:=date;

ExtractFilePath(Application.ExeName)+'DB\Base_V1

end;

1.mdb');

 

 

 

IniFile.Free;

 

procedure TFot.BitBtn2Click(Sender: TObject);

copyfile(pchar(DBP),pchar(ExtractFilePath(Applicati

var peremen:string;

on.ExeName)+'rezerv\base_'+datetostr(date)+'.mdb'),t

Template,NewTemplate,FindText, NewStr,

rue);

 

 

Replace,ReplaceWith:OleVariant;

if

 

 

LinkToFile,SaveWithDocument,Range:OleVariant;

fileexists(ExtractFilePath(Application.ExeName)+'rez

Table1: Table;

erv\base_'+datetostr(date)+'.mdb') =true then

i: integer;

showmessage('Резервная копия создана успешно')

Reg: TRegistry;

else showmessage('Ошибка при создании

flag:boolean;

резервной копии');

 

 

end;

 

 

begin

 

 

 

//Если проводилась то происходит генерация

procedure TFmain.N16Click(Sender: TObject);

отчета в ворд

45

//Проверяем, инсталлирован ли Word

Reg := TRegistry.Create;

Reg.RootKey := HKEY_CLASSES_ROOT; flag:=reg.KeyExists('Word.Application'); reg.Free;

//flag:=true; if tm=0 then

begin

IF flag then //Если Word установлен, работаем дальше

begin {if}

WordApplication1.Connect; // Устанавливаем связь с сервером

//Открываем шаблон otchet.dot в Word

Template:=ExtractFilePath(Application.EXEName)+'

Льготники.dot'; //путь к шаблону документа

WordApplication1.Documents.Add(Template,EmptyP aram,EmptyParam,EmptyParam);// создаем документ на основе шаблона

WordDocument1.ConnectTo(WordApplication1.Activ eDocument); //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select fio_lg,data_rl

from lgot,lek,recl,rec WHERE (id_lg=id_lg_rc) AND (id_rc = id_rc_rl) AND (id_l_rl = id_l) AND (log_rc = true) AND (data_rl between #'+fmain.data(dtp1.Date)+'# AND #'+fmain.data(dtp2.Date)+'#) group by id_rc_rl,fio_lg,data_rl';

dm.TEMP.Active:=true;

//Заполняем таблицу списка объектов

Table1:=WordDocument1.Tables.Item(1);

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

//WordDocument1.Tables - это массив таблиц документа (тип Tables), а

WordDocument1.Tables.Item(i) - i-ая таблица i:=2;

dm.temp.First;

While not dm.temp.Eof do begin

Table1.Rows.Add(EmptyParam); Table1.Cell(i, 1).Range.Text :=

dm.temp.Fields[0].AsString; Table1.Cell(i, 2).Range.Text :=

dm.temp.Fields[1].AsString;

inc(i);dm.temp.next;

end; Table1.Rows.Item(i).Delete;

WordApplication1.Visible:=true; //делаем приложение MS Word видимым

WordApplication1.Disconnect; // Разрываем связь с сервером

end {if}

else MessageDlg('MS Word не установлен', mtInformation, [mbOK],0);

end else

begin

IF flag then //Если Word установлен, работаем дальше

begin {if}

WordApplication1.Connect; // Устанавливаем связь с сервером

//Открываем шаблон otchet.dot в Word

Template:=ExtractFilePath(Application.EXEName)+'

Лекарства.dot'; //путь к шаблону документа

WordApplication1.Documents.Add(Template,EmptyP aram,EmptyParam,EmptyParam);// создаем документ на основе шаблона

WordDocument1.ConnectTo(WordApplication1.Activ eDocument); //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select nazv_l from

lgot,lek,recl,rec WHERE (id_lg=id_lg_rc) AND (id_rc = id_rc_rl) AND (id_l_rl = id_l) AND (log_rc = true) AND (data_rl between #'+fmain.data(dtp1.Date)+'# AND #'+fmain.data(dtp2.Date)+'#) group by nazv_l';

dm.TEMP.Active:=true;

//Заполняем таблицу списка объектов

Table1:=WordDocument1.Tables.Item(1);

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

//WordDocument1.Tables - это массив таблиц документа (тип Tables), а

WordDocument1.Tables.Item(i) - i-ая таблица i:=2;

dm.temp.First;

While not dm.temp.Eof do begin

Table1.Rows.Add(EmptyParam); Table1.Cell(i, 1).Range.Text :=

dm.temp.Fields[0].AsString;

inc(i);dm.temp.next;

end; Table1.Rows.Item(i).Delete;

WordApplication1.Visible:=true; //делаем приложение MS Word видимым

WordApplication1.Disconnect; // Разрываем связь с сервером

end {if}

else MessageDlg('MS Word не установлен', mtInformation, [mbOK],0);

end;

end;

end.

unit pass; interface uses

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

Dialogs, StdCtrls, Buttons, ExtCtrls,inifiles; type

TFpass = class(TForm) Panel1: TPanel; Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label1: TLabel;

cb: TComboBox;

46

Label2: TLabel; e: TEdit;

procedure BitBtn1Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var

CanClose: Boolean);

procedure BitBtn2Click(Sender: TObject); procedure FormShow(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

Fpass: TFpass;

implementation

uses datm, main;

{$R *.dfm}

procedure TFpass.BitBtn1Click(Sender: TObject); begin

closequery;

end;

procedure TFpass.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if application.MessageBox('Вы хоите выйти из программы?','Выход',mb_yesno+mb_iconquestion)=i dyes then

begin application.Terminate; end

else canclose:=false;

end;

procedure TFpass.BitBtn2Click(Sender: TObject); begin

if cb.Text='' then showmessage('Вы не выбрали пользователя')

else if e.Text='' then showmessage('Вы не ввели пароль')

else begin

dm.TEMP.Active:=false; dm.TEMP.CommandText:='Select * fROM pass

WHERE (log="'+cb.Text+'") AND (pass="'+e.Text+'")';

dm.TEMP.Active:=true;

if dm.TEMP.RecordCount=0 then showmessage('Ошибка в логине и(или) пароле')

else begin

if cb.ItemIndex=0 then begin fmain.N11.Visible:=false; pas:=e.Text; login:=cb.Text; fpass.Hide;

fmain.ShowModal; end

else begin

fmain.N17.Visible:=false;

pas:=e.Text;

login:=cb.Text;

fpass.Hide;

fmain.ShowModal;

end;

end;

end;

end;

procedure TFpass.FormShow(Sender: TObject); var inifile:tinifile;

dbp:string; begin IniFile :=

TIniFile.Create(ExtractFilePath(Application.ExeName )+'options.ini'); // загрузка из фала настроек пути к базе

DBP := IniFile.ReadString('Options', 'DBPath', ExtractFilePath(Application.ExeName)+'DB\Base_V1 1.mdb');

//proc := IniFile.ReadString('Options', 'proc', ExtractFilePath(Application.ExeName)+'DataBase\'); IniFile.Free;

dm.ADO.Connected:=false;

dm.ADO.ConnectionString:='Provider=Microsoft.Jet. OLEDB.4.0;Data Source='+dbp+';Persist Security Info=False';

dm.ADO.Connected:=true;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='Select * fROM pass'; dm.TEMP.Active:=true;

While not dm.TEMP.Eof do begin

cb.Items.Add(dm.TEMP.Fields[0].AsString);

dm.TEMP.Next;

end;

end;

end.

unit Rec;

interface

uses

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

Dialogs, DB, ADODB, Buttons, Grids, DBGrids, StdCtrls, ExtCtrls, ComCtrls;

type

TFRec = class(TForm) Panel1: TPanel; Label1: TLabel;

47

Label2: TLabel;

Panel2: TPanel; GroupBox1: TGroupBox; Panel4: TPanel;

e1: TEdit; DBGrid1: TDBGrid; Panel3: TPanel;

GroupBox2: TGroupBox; Panel5: TPanel;

e2: TEdit; DBGrid2: TDBGrid;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton; Rc1: TADODataSet;

rc1s: TDataSource; rc2: TADODataSet; rc2s: TDataSource; Panel6: TPanel; Label3: TLabel; cb: TComboBox;

dtp: TDateTimePicker; Label4: TLabel; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton;

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure FormShow(Sender: TObject); procedure cbChange(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure e1Change(Sender: TObject); procedure e2Change(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FRec: TFRec;

implementation uses datm;

{$R *.dfm}

procedure TFRec.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if (tmp2<>'0') then begin

dm.TEMP.Active:=false; dm.TEMP.CommandText:='Select id_rl from recl

WHERE (id_rc_rl = '+tmp2+')'; dm.TEMP.Active:=true;

if dm.TEMP.RecordCount=0 then begin

dm.COM.CommandText:='delete * from rec WHERE (id_rc='+tmp2+')';

dm.COM.Execute;

showmessage('Рецепт, который не содержал ни одного ликрства был удален');

end;

tmp2:='0';

end;

dm.COM.CommandText:='Update lgot set log_lg = FALSE WHERE id_lg='+tmp+''; dm.COM.Execute;

end;

procedure TFRec.FormShow(Sender: TObject); begin

cb.Clear;tmp2:='0';id_vr:=''; dm.TEMP.Active:=false; dm.TEMP.CommandText:='select fio_vr from vr4'; dm.TEMP.Active:=true;

While not dm.TEMP.Eof do begin

cb.Items.Add(dm.TEMP.Fields[0].AsString);

dm.TEMP.Next;

end;

end;

procedure TFRec.cbChange(Sender: TObject); begin

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select id_vr from vr4 WHERE (fio_vr = "'+cb.Text+'")'; dm.TEMP.Active:=true; id_vr:=dm.TEMP.Fields[0].AsString;

end;

procedure TFRec.SpeedButton4Click(Sender: TObject);

begin

if (id_vr='') then showmessage('Не все поля заполнены')

else if (tmp2<>'0') then showmessage('Вы уже начали выписывать рецепт')

else begin

dm.COM.CommandText:='Insert into rec (id_lg_rc,id_vr_rc,data_rc) values ('+tmp+','+id_vr+',"'+datetostr(dtp.Date)+'")';

dm.COM.Execute;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select max(id_rc) from

rec';

dm.TEMP.Active:=true;

tmp2:=dm.TEMP.Fields[0].AsString; showmessage('Теперь внесите лекарства в

рецепт'); end;

end;

procedure TFRec.SpeedButton1Click(Sender: TObject);

begin

if tmp2='0' then exit;

if rc1.Fields[0].AsString='' then exit;

48

dm.COM.CommandText:='Insert into recl (id_l_rl,id_rc_rl) values ('+rc1.Fields[0].AsString+','+tmp2+')'; dm.COM.Execute; Frec.rc1.Active:=false;

Frec.rc1.CommandText:='select id_l,nazv_l FROM lek WHERE id_l in ((select id_l_ll from lgl WHERE (id_lg_ll='+tmp+'))) AND (id_l not in (select id_l_rl FROM recl WHERE (id_rc_rl='+tmp2+')))'; Frec.rc1.Active:=true;

Frec.rc2.Active:=false; Frec.rc2.CommandText:='select id_l,nazv_l from lek WHERE id_l in (select id_l_rl from recL WHERE (id_rc_rl = '+tmp2+'))';

Frec.rc2.Active:=true;

showmessage('Лекарство добавлено в рецепт'); end;

procedure TFRec.SpeedButton2Click(Sender: TObject);

begin

if tmp2='0' then exit;

if rc2.Fields[0].AsString='' then exit;

if application.MessageBox('Вы хотите удалить лекарство из рецепта?','Удаление лекарства',mb_yesno+mb_iconquestion)=idyes then

begin

dm.COM.CommandText:='delete * from recl WHERE (id_l_rl = '+rc2.Fields[0].AsString+') AND (id_rc_rl = '+tmp2+')';

dm.COM.Execute;

Frec.rc1.Active:=false; Frec.rc1.CommandText:='select id_l,nazv_l FROM

lek WHERE id_l in ((select id_l_ll from lgl WHERE (id_lg_ll='+tmp+'))) AND (id_l not in (select id_l_rl FROM recl WHERE (id_rc_rl='+tmp2+')))';

Frec.rc1.Active:=true;

Frec.rc2.Active:=false; Frec.rc2.CommandText:='select nazv_l from lek

WHERE id_l in (select id_l_rl from recL WHERE (id_rc_rl = '+tmp2+'))';

Frec.rc2.Active:=true; showmessage('Лекарство удалено'); end;

end;

procedure TFRec.SpeedButton3Click(Sender: TObject);

begin

if (tmp2='0') then showmessage('Вы еще не начали выписывать рецепт')

else begin

if application.MessageBox('Вы хотите удалить рецепт?','Удаление рецепта',mb_yesno+mb_iconquestion)=idyes then

begin

dm.COM.CommandText:='delete * from recl WHERE (id_rc_rl='+tmp2+')';

dm.COM.Execute;

dm.COM.CommandText:='delete * from rec WHERE (id_rc='+tmp2+')';

dm.COM.Execute;

tmp2:='0';

Frec.rc1.Active:=false; Frec.rc1.CommandText:='select id_l,nazv_l FROM

lek WHERE id_l in ((select id_l_ll from lgl WHERE (id_lg_ll='+tmp+'))) AND (id_l not in (select id_l_rl FROM recl WHERE (id_rc_rl='+tmp2+')))';

Frec.rc1.Active:=true;

Frec.rc2.Active:=false; Frec.rc2.CommandText:='select id_l,nazv_l from

lek WHERE id_l in (select id_l_rl from recL WHERE (id_rc_rl = '+tmp2+'))';

Frec.rc2.Active:=true; showmessage('Рецепт удален'); end;

end;

end;

procedure TFRec.e1Change(Sender: TObject); begin

Frec.rc1.Active:=false; Frec.rc1.CommandText:='select id_l,nazv_l FROM

lek WHERE id_l in ((select id_l_ll from lgl WHERE (id_lg_ll='+tmp+'))) AND (id_l not in (select id_l_rl FROM recl WHERE (id_rc_rl='+tmp2+'))) AND (nazv_l like "%'+e1.Text+'%")';

Frec.rc1.Active:=true;

end;

procedure TFRec.e2Change(Sender: TObject); begin

Frec.rc2.Active:=false; Frec.rc2.CommandText:='select id_l,nazv_l from

lek WHERE id_l in (select id_l_rl from recL WHERE (id_rc_rl = '+tmp2+')) AND (nazv_l like "%'+e1.Text+'%")';

Frec.rc2.Active:=true;

end;

end.

unit SpL; interface

uses

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

Dialogs, Grids, DBGrids;

type

TFSpL = class(TForm) DBGrid1: TDBGrid;

private

{Private declarations } public

{Public declarations } end;

var

49

FSpL: TFSpL;

implementation uses datm;

{$R *.dfm}

end.

unit Vr4; interface uses

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

Dialogs, Menus, Grids, DBGrids;

type

TFVr4 = class(TForm) DBGrid1: TDBGrid; PopupMenu1: TPopupMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

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

private

{Private declarations } public

{Public declarations } end;

var

FVr4: TFVr4;

implementation uses datm, Avr4;

{$R *.dfm}

procedure TFVr4.N1Click(Sender: TObject); begin

tm:=0;

favr4.ShowModal;

end;

procedure TFVr4.N2Click(Sender: TObject); begin

if dm.vr.Fields[0].AsString='' then exit; tm:=1;

tmp:=dm.vr.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_vr from vr4 where id_vr = '+tmp+'';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit; end

else begin

dm.COM.CommandText:='Update vr4 set log_vr = TRUE WHERE id_vr='+tmp+'';

dm.COM.Execute;

end;

favr4.e1.Text:=dm.vr.Fields[1].AsString;

favr4.e3.Text:=dm.vr.Fields[2].AsString;

favr4.e4.Text:=dm.vr.Fields[3].AsString;

favr4.dtp.date:=dm.vr.Fields[4].AsDateTime;

favr4.e2.Text:=dm.vr.Fields[5].AsString;

favr4.ShowModal;

end;

procedure TFVr4.N3Click(Sender: TObject); begin

if dm.vr.Fields[0].AsString='' then exit; tmp:=dm.vr.Fields[0].AsString;

dm.TEMP.Active:=false; dm.TEMP.CommandText:='select log_vr from vr4 where id_vr = '+tmp+'';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsBoolean=true then begin

showmessage('Запись используется другим пользователем!');

exit;

end;

if application.MessageBox('Вы хотите удалить запись?','Удаление', mb_yesno+mb_iconquestion)=idyes then

begin

dm.COM.CommandText:='delete * FROM vr4 WHERE (id_vr='+tmp+')';

dm.COM.Execute;

dm.vr.Requery(); showmessage('Запись удалена'); end;

end;

end.

unit Vrec;

interface uses

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

Dialogs, Grids, DBGrids, Menus;

type

TFVrec = class(TForm) DBGrid1: TDBGrid; PopupMenu1: TPopupMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

50

procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure N2Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N4Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

FVrec: TFVrec; implementation

uses datm, SpL; {$R *.dfm}

procedure TFVrec.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if dm.Rc.FieldByName('log_rc').AsBoolean=false then

begin

DBGrid1.Canvas.brush.color := Clskyblue; end

else begin

DBGrid1.Canvas.brush.color := Clmoneygreen; end;

dbgrid1.DefaultDrawColumnCell(rect, DataCol, Column, State)

end;

procedure TFVrec.N2Click(Sender: TObject); begin

if dm.Rc.Fields[0].AsString='' then exit; tmp:=dm.Rc.Fields[0].AsString;

if dm.Rc.FieldByName('log_rc').AsBoolean=true then begin

showmessage('Лекарства по данному рецепту уже выданы');

end else

begin dm.TEMP.Active:=false;

dm.TEMP.CommandText:='SELECT Count(id_rc) FROM rec WHERE (((log_rc)=True) AND ((id_rc) In (select distinct id_rc_rl from recL where (year(data_rl) = year(date())) AND (month(data_rl) = month(date())) ))) AND (id_lg_rc = '+dm.Rc.fieldbyname('id_lg').AsString+')';

dm.TEMP.Active:=true;

if dm.TEMP.Fields[0].AsInteger=10 then begin

showmessage('В этом месяце данному льготнику выдано уже 10 рецептов' +#13+ 'Выдача лекарств по данному рецепту возможна только в следующем месяце' );

exit;

end;

dm.COM.CommandText:='Update rec set log_rc=TRUE WHERE (id_rc='+tmp+')';

dm.COM.Execute; dm.COM.CommandText:='Update recl set

data_rl="'+datetostr(date)+'" WHERE (id_rc_rl='+tmp+')';

dm.COM.Execute;

dm.Rc.Requery(); showmessage('Лекарства выданы!'); end;

end;

procedure TFVrec.N1Click(Sender: TObject); begin

dm.L.Active:=false;

dm.L.CommandText:='select nazv_l,cena_l,data_rl from lek,recL WHERE (id_l = id_l_rl) AND (id_rc_rl = '+dm.Rc.Fields[0].AsString+')';

dm.L.Active:=true;

fspl.ShowModal;

end;

procedure TFVrec.N5Click(Sender: TObject); begin

dm.rc.Active:=false;

dm.rc.CommandText:='select id_rc,fio_lg,fio_vr,data_rc,log_rc,id_lg FROM rec,lgot,vr4 WHERE (id_lg=id_lg_rc) AND (id_vr = id_vr_rc)';

dm.rc.Active:=true;

end;

procedure TFVrec.N6Click(Sender: TObject); begin

dm.rc.Active:=false;

dm.rc.CommandText:='select id_rc,fio_lg,fio_vr,data_rc,log_rc,id_lg FROM rec,lgot,vr4 WHERE (id_lg=id_lg_rc) AND (id_vr = id_vr_rc) AND (log_rc=TRUE)'; dm.rc.Active:=true;

end;

procedure TFVrec.N7Click(Sender: TObject); begin

dm.rc.Active:=false;

dm.rc.CommandText:='select id_rc,fio_lg,fio_vr,data_rc,log_rc,id_lg FROM rec,lgot,vr4 WHERE (id_lg=id_lg_rc) AND (id_vr = id_vr_rc) AND (log_rc=FALSE)'; dm.rc.Active:=true;

end;

procedure TFVrec.N4Click(Sender: TObject); var zap:string;

begin

zap:=inputbox('Поиск льготников','Паспорт! Формат: Серия-Номер',''); dm.rc.Active:=false; dm.rc.CommandText:='select id_rc,fio_lg,fio_vr,data_rc,log_rc,id_lg FROM

rec,lgot,vr4 WHERE (id_lg=id_lg_rc) AND (id_vr = id_vr_rc) AND ((sp_lg & "-" & np_lg) = "'+zap+'")'; dm.rc.Active:=true;

end;

end.

51

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