Продажа медикаментов

 

Прежде чем нажимать кнопку «Продать» (Операции->Продажа) необходимо навести указатель в таблице на продаваемый товар. Выбранный товар предлагается продать. На форме цифровое поле для выбора количества продаваемого медикаментов (по умолчанию весь товар) и три кнопки: «Да» - для продажи указанного количества, «Выход» - для закрытия формы и «Накладная» для распечатки накладной документации о проданном товаре.

 

 

 

4.4. Смена режима работы.

 

В программе предусмотрены несколько режимов работы для разных целей. В режиме работы «Просмотр» доступна одна таблица «Медикаменты», операции смены режимы и выборки. Изменение информации не возможно. Этот режим загружается по умолчанию и для перехода в него не нужен пароль. Режим «Продажа» дополняется возможностью продажи медикаментов. В режиме «Завоз» есть возможность завоза продуктов. Наибольший приоритет у режима «Администрирование». В этом режиме доступны все кнопки и пункты меню. Имеется возможность смены паролей для всех режимов. Таблицы могут редактироваться напрямую через сетку. Это предусмотрено на случай опечатки или ошибки. Пароли режимов хранятся в реестре Windows.

 

 

 

Выборка записей.

Назначение этой операции – удобство представления информации. Здесь возможны два действия – выборка и сортировка. Выборка – это выделение записей из все таблицы, удовлетворяющих определенному условию. Для ее осуществления необходимо указать таблицу и условие, по которому проводится поиск. Список полей меняется динамически с выбором таблицы. Также меняются и операции в соответствии с типом выбранного поля (операции сравнения для численных значений и функции вхождения и совпадения для строковых типов). В поле «Значение» вводится образец. Для сортировки достаточно указать имя таблицы и имя поля. Заполнение остальных полей не требуется. После нажатия соответствующей кнопки в сетке отображается выборочные данные. Отмена выборки (вывод всех записей таблицы) выполняется нажатием кнопки «Отмена выборки». Необходимые данные – название таблицы.

 

 

Смена паролей.

Эта опция доступна только для администратора. Достаточно выбрать режим работы, и два раза (для исключения опечатки) набрать новый пароль. Значения в реестре будут изменены.

 

 

Отчеты.

Форма показывает содержимое файла report.txt, куда ежемесячно программа записывает отчеты по купле продаже товаров. Если файл по какой-либо причине не существует он будет создан заново.

 

 

Заключение.

Как уже отмечалось ранее, эта программа не является уникальной или особенной, хотя и реализует многие потребности средних и мелких торговых организаций. Подобных программ, в том числе и более совершенных, очень много. Но спрос есть, а значит будет и предложение. Отсюда и такое количество. Понятно, что пользоваться, в конце концов будут только лучшими. Дальнейшая разработка программного продукта может резко увеличить шансы на «жизнь». Так возможен переход на другой, основанный полностью на SQL сервер (например, Interbase, MS SQL, Oracle). Это даст приложению больше скорости в работе с данными и больше гибкости, так как язык SQL специально для этого предназначен. Также хорошим плюсом был бы переход от использования локальных, файл-серверных к клиент серверным приложениям. Такие комплексы программ вполне «тянут» на коммерческие.

Список литературы.

1. П. В. Шумаков, В. В. Фаронов. Delphi 7 для руководство разработчика баз данных. Нолидж, М. 1999г.

2. Delphi 5 и базы данных. Питер СПб. 2000г.

3. Интернет-сайт Delphi.mastak.ru/

4. Лекции по дисциплине «ТРП».

 

Приложение

program Main;

uses Forms,

MainUnit in 'MainUnit.pas' {MainForm},

PassUnit in 'PassUnit.pas' {PassForm},

SaleUnit in 'SaleUnit.pas' {SaleForm},

RecieveUnit in 'RecieveUnit.pas' {RecieveForm},

reportUnit in 'reportUnit.pas' {ReportForm},

PropUnit in 'PropUnit.pas' {PropForm},

FindUnit in 'FindUnit.pas' {SelectForm};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TMainForm, MainForm);

Application.CreateForm(TPassForm, PassForm);

Application.CreateForm(TSaleForm, SaleForm);

Application.CreateForm(TRecieveForm, RecieveForm);

Application.CreateForm(TReportForm, ReportForm);

Application.CreateForm(TPropForm, PropForm);

Application.CreateForm(TSelectForm, SelectForm);

Application.Run;

end.

 

unit MainUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, Db, DBTables, PropUnit, ReportUnit, RecieveUnit, PassUnit, SaleUnit, Menus;

type TMainForm = class(TForm)

PassButton: TButton;

DataSourceTov: TDataSource;

TableTov: TTable;

DBGrid1: TDBGrid;

Label1: TLabel;

ExitButton: TButton;

SaleButton: TButton;

RecieveButton: TButton;

TableNakl: TTable;

DataSourceNakl: TDataSource;

TablePost: TTable;

DataSourcePost: TDataSource;

DBGrid3: TDBGrid;

DBGrid4: TDBGrid;

Label3: TLabel;

Label4: TLabel;

PropButton: TButton;

ReportButton: TButton;

SelectButton: TButton;

QueryTov: TQuery;

QueryNakl: TQuery;

QueryPost: TQuery;

SaveButton: TButton;

CancelSelectButton: TButton;

QueryPostPostCode: TIntegerField;

QueryPostPostName: TStringField;

QueryPostPostPhone: TIntegerField;

QueryNaklNaklNum: TIntegerField;

QueryNaklTovarCode: TSmallintField;

QueryNaklPostCode: TSmallintField;

QueryNaklDate: TDateField;

QueryNaklRecieved: TIntegerField;

QueryNaklSum: TIntegerField;

QueryTovTovarCode: TIntegerField;

QueryTovTovarName: TStringField;

QueryTovEdIzm: TStringField;

QueryTovPrice: TCurrencyField;

QueryTovCol: TIntegerField;

TableNaklNaklNum: TAutoIncField;

TableNaklTovarCode: TSmallintField;

TableNaklPostCode: TSmallintField;

TableNaklDate: TDateField;

TableNaklRecieved: TIntegerField;

TableNaklSum: TIntegerField;

TableTovTovarCode: TAutoIncField;

TableTovTovarName: TStringField;

TableTovEdIzm: TStringField;

TableTovPrice: TCurrencyField;

TableTovCol: TIntegerField;

TablePostPostCode: TAutoIncField;

TablePostPostName: TStringField;

TablePostPostPhone: TIntegerField;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

procedure PassButtonClick(Sender: TObject);

procedure ExitButtonClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure SaleButtonClick(Sender: TObject);

procedure Rights;

procedure RecieveButtonClick(Sender: TObject);

procedure ReportButtonClick(Sender: TObject);

procedure PropButtonClick(Sender: TObject);

procedure SelectButtonClick(Sender: TObject);

procedure SaveButtonClick(Sender: TObject);

procedure CancelSelectButtonClick(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var MainForm: TMainForm;

implementation

uses FindUnit;

{$R *.DFM}

procedure TMainForm.Rights;

 var i:byte;

begin

for i:=0 to ComponentCount-1 do begin

 If (Components[i] is TButton) then (Components[i] as TButton).enabled:=false;

 If (Components[i] is TLabel) and ((Components[i] as TLabel).Caption<>'Медикаменты') then (Components[i] as TLabel).visible:=false;

 If (Components[i] is TDBGrid) then

begin

If (Components[i] as TDBGrid).Name='DBGrid1' then (Components[i] as TDBGrid).ReadOnly:=true

else (Components[i] as TDBGrid).visible:=false;

end; end;

 ExitButton.Enabled:=true;

 SelectButton.Enabled:=true;

 CancelSelectButton.Enabled:=true;

 PassButton.Enabled:=true;

 N3.enabled:=false;

 N5.enabled:=false;

 N7.enabled:=false;

 N8.enabled:=false;

 If Mode='Завоз' then

begin

RecieveButton.Enabled:=true;

N7.enabled:=true;

end

 else If Mode='Продажа' then

begin

SaleButton.enabled:=true;

N8.enabled:=true;

end

else If Mode='Администрирование' then

begin

for i:=0 to ComponentCount-1 do begin

 If (Components[i] is TButton) then (Components[i] as TButton).enabled:=true;

 If (Components[i] is TMenuItem) then (Components[i] as TMenuItem).enabled:=true;

 If (Components[i] is TLabel) then (Components[i] as TLabel).visible:=true;

 If (Components[i] is TDBGrid) then

begin

(Components[i] as TDBGrid).ReadOnly:=false;

(Components[i] as TDBGrid).visible:=true;

end; end; end;end;

procedure TMainForm.PassButtonClick(Sender: TObject);

begin

 PassForm.Edit1.text:='';

 PassForm.ShowModal;

 Rights;

end;

procedure TMainForm.ExitButtonClick(Sender: TObject);

begin

Close;

end;

procedure TMainForm.FormCreate(Sender: TObject);

 Var curday,curmonth,curyear,

 day,month,year:word;

 f:textfile;

 rash,doh:longint;

 num:word;

Procedure GenerateReport;

begin

rash:=0;

doh:=0;

num:=0;

TableNakl.First;

while not TableNakl.Eof do begin

DecodeDate(TableNakl.FieldByName('Date').AsDateTime,Year,month,day);

if (year=curyear) and (month=curmonth-1) then begin;

   inc(num);

   rash:=rash+TableNakl.FieldByName('sum').AsInteger;

   doh:=doh+TableNakl.FieldByName('col').AsInteger*

   TableTov.FieldByName('Price').AsInteger;

  end;

  TableNakl.Next;

  end;

assignfile(f,'report.txt');

If Fileexists('report.txt') then append(f)

else rewrite(f);

 Writeln(f);

Writeln(f,'==== Отчет за ',curmonth-1,'/',curyear,'г ====');

Writeln(f);

Writeln(f,'Совершено ',num,' сделок на общую сумму ',rash,' рублей.');

Writeln(f,'Ожидаемая выручка от реализации ',doh-rash);

closefile(f);

end;

 begin

 If not PassForm.regexists then begin

ShowMessage('Ключи паролей не найдены и будут воссозданы');

PropForm.writereg('Продажа','1');

PropForm.writereg('Завоз','2');

PropForm.writereg('Администрирование','3');

end;

Mode:='Просмотр';

 Rights;

 DecodeDate(Date,curyear,curmonth,curday);

 if curday=1 then GenerateReport;

end;

procedure TMainForm.SaleButtonClick(Sender: TObject);

begin

with SaleForm do begin

SpinEdit1.MaxValue:=TableTov.Fields[4].AsInteger;

SpinEdit1.Value:=TableTov.Fields[4].AsInteger;

ShowModal;

end;

end;

procedure TMainForm.RecieveButtonClick(Sender: TObject);

begin

RecieveForm.ShowModal;

end;

procedure TMainForm.ReportButtonClick(Sender: TObject);

begin

 ReportForm.ShowModal;

end;

procedure TMainForm.PropButtonClick(Sender: TObject);

begin

 PropForm.ShowModal;

end;

procedure TMainForm.SelectButtonClick(Sender: TObject);

begin

 SelectForm.SortButton.Visible:=true;

 SelectForm.SelectButton.Caption:='Выборка';

 SelectForm.Caption:='Найти все';

 SelectForm.Height:=260;

 SelectForm.Panel1.Visible:=true;

 CancelSelection:=false;

 SelectForm.Show;

end;

procedure TMainForm.SaveButtonClick(Sender: TObject);

begin

 If TableTov.State in [dsInsert,dsEdit] then TableTov.Post;

 If TableNakl.State in [dsInsert,dsEdit] then TableNakl.Post;

 If TablePost.State in [dsInsert,dsEdit] then TablePost.Post;

end;

procedure TMainForm.CancelSelectButtonClick(Sender: TObject);

begin

 SelectForm.SortButton.Visible:=false;

 SelectForm.Caption:='Отменить выборку';

 SelectForm.SelectButton.Caption:='Отменить';

 SelectForm.Height:=140;

 SelectForm.Panel1.Visible:=false;

 SelectForm.Show;

 CancelSelection:=true;

end;

procedure TMainForm.FormDestroy(Sender: TObject);

begin

QueryTov.Active:=false;

QueryNakl.Active:=false;

QueryPost.Active:=false;

end;

end.

 

unit FindUnit;

interface

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

Dialogs, StdCtrls, ExtCtrls, DBCtrls;

type TSelectForm = class(TForm)

RadioGroup1: TRadioGroup;

SelectButton: TButton;

ExitButton: TButton;

Panel1: TPanel;

ComboBox1: TComboBox;

Label1: TLabel;

Label2: TLabel;

ComboBox2: TComboBox;

Label3: TLabel;

Edit1: TEdit;

SortButton: TButton;

procedure ExitClick(Sender: TObject);

procedure SelectButtonClick(Sender: TObject);

procedure SortClick(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var SelectForm: TSelectForm;

Selecttype:boolean;

CancelSelection:boolean;

implementation

uses MainUnit;

{$R *.dfm}

procedure TSelectForm.ExitClick(Sender: TObject);

begin

 Close;

end;

procedure TSelectForm.SelectButtonClick(Sender: TObject);

begin

With MainForm do

 case RadioGroup1.ItemIndex of

 0: begin

QueryTov.Active:=false;

QueryTov.SQL.Clear;

If CancelSelection Then begin

                         QueryTov.SQL.Add('Select * From Tovar');

                         DataSourceTov.DataSet:=TableTov;

                        end

else begin

      DataSourceTov.DataSet:=QueryTov;

      QueryTov.SQL.Add('Select * From Tovar where '+ComboBox1.Text);

      If SelectType then QueryTov.SQL.Add(ComboBox2.Text+Edit1.text)

      else QueryTov.SQL.Add(' Like "'+Edit1.text+'"');

     end;

QueryTov.Active:=true;

  end;

 1: begin

QueryNakl.Active:=false;

QueryNakl.SQL.Clear;

If CancelSelection Then begin

                         QueryNakl.SQL.Add('Select * From Nakladnie');

                         DataSourceNakl.DataSet:=TableNakl;

                        end

else begin

      DataSourceNakl.DataSet:=QueryNakl;

      QueryNakl.SQL.Add('Select * From Nakladnie where '+ComboBox1.Text);

      If SelectType then

      QueryNakl.SQL.Add(' '+ComboBox2.Text+' '+Edit1.text)

      else QueryNakl.SQL.Add(' Like "'+Edit1.text+'"');

     end;

QueryNakl.Active:=true;

end;

 2: begin

QueryPost.Active:=false;

QueryPost.SQL.Clear;

If CancelSelection Then begin

                         QueryPost.SQL.Add('Select * From Postavschik');

                         DataSourcePost.DataSet:=TablePost;

                        end

else begin

      DataSourcePost.DataSet:=QueryPost;

      QueryPost.SQL.Add('Select * From Postavschik where '+ComboBox1.Text);

      If SelectType then

      QueryPost.SQL.Add(' '+ComboBox2.Text+' '+Edit1.text)

      else QueryPost.SQL.Add(' Like "'+Edit1.text+'"');

     end;

QueryPost.Active:=true;

end;

end;

Close;

end;

procedure TSelectForm.RadioGroup1Click(Sender: TObject);

begin

 case RadioGroup1.ItemIndex of

 0:begin ComboBox1.Items:=MainForm.TableTov.FieldList; end;

 1:begin ComboBox1.Items:=MainForm.TableNakl.FieldList; end;

 2:begin ComboBox1.Items:=MainForm.TablePost.FieldList;end;

end;

end;

procedure TSelectForm.ComboBox1Change(Sender: TObject);

begin

Combobox2.Items.Clear;

 If (ComboBox1.Text='Price') or

(ComboBox1.Text='Col') or

(ComboBox1.Text='Recieved') or

(ComboBox1.Text='Sum')

then begin

Combobox2.Items.Add('=');

Combobox2.Items.Add('>');

Combobox2.Items.Add('<');

Combobox2.Items.Add('>=');

Combobox2.Items.Add('<=');

Combobox2.Items.Add('<>');

Selecttype:=true;

end

else If (ComboBox1.Text='TovarCode') or

   (ComboBox1.Text='NaklNum') or

   (ComboBox1.Text='PostCode')

then begin

Combobox2.Items.Add('=');

Combobox2.ItemIndex:=0;

Selecttype:=true;

end

else If (ComboBox1.Text='TovarName') or

   (ComboBox1.Text='PostName')

then begin

Combobox2.Items.Add('ёютярфрхЄ');

Combobox2.ItemIndex:=0;

Selecttype:=false;

end;

end;

procedure TSelectForm.SortClick(Sender: TObject);

Var txt:string;

begin

txt:=ComboBox1.Text;

With MainForm do

case RadioGroup1.ItemIndex of

0:begin

QueryTov.Active:=false;

QueryTov.SQL.Clear;

DataSourceTov.DataSet:=QueryTov;

QueryTov.SQL.Add('Select * From Tovar where '+txt+'='+Txt+' order by '+txt);

QueryTov.Active:=true;

end;

1:begin

QueryNakl.Active:=false;

QueryNakl.SQL.Clear;

DataSourceNakl.DataSet:=QueryNakl;

QueryNakl.SQL.Add('Select * From Nakladnie where '+Txt+'='+txt+' order by '+Txt);

QueryNakl.Active:=true;

end;

2:begin

QueryPost.Active:=false;

QueryPost.SQL.Clear;

DataSourcePost.DataSet:=QueryPost;

QueryPost.SQL.Add('Select * From Postavschik where '+Txt+'='+Txt+' order by '+Txt);

QueryPost.Active:=true;

end;

end;

Close;

end;end.

 

unit PassUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Registry;

type TPassForm = class(TForm)

ComboBox1: TComboBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

PassButton: TButton;

CancelButton: TButton;

procedure ComboBoxChange(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ChMode;

procedure PassButtonClick(Sender: TObject);

procedure CancelButtonClick(Sender: TObject);

function regexists:boolean;

private { Private declarations }

public { Public declarations }

end;

var PassForm: TPassForm;

Mode:string[20];

 SalerPwd, RecieverPwd, AdminPwd:string[10];

implementation

uses mainunit;

{$R *.DFM}

Function TPassForm.regexists:boolean;

 Var reg:tregistry;

begin

regexists:=true;

Reg:=TRegistry.Create;

 Reg.RootKey:=HKEY_CURRENT_USER;

 If REG.OpenKey('Software\OM',true) then begin

if REG.ValueExists('Продажа') then SalerPwd:=REG.ReadString('Продажа')

else regexists:=false;

if REG.ValueExists('Завоз') then RecieverPwd:=REG.ReadString('Завоз')

else regexists:=false;

if REG.ValueExists('Администрирование') then AdminPwd:=REG.ReadString('Администрирование')

else regexists:=false;

end

 else ShowMessage('Ошибка работы с реестром');

 REG.CloseKey;

 Reg.Destroy;

end;

Procedure TPassForm.ChMode;

begin

If ComboBox1.Text='Просмотр' then begin

                           Label2.enabled:=false;

                           Edit1.enabled:=false;

                           Edit1.text:='';

                          end

else begin

Label2.enabled:=true;

edit1.enabled:=true;

end;

end;

procedure TPassForm.ComboBoxChange(Sender: TObject);

begin

ChMode;

end;

procedure TPassForm.FormCreate(Sender: TObject);

 var Reg:TRegistry;

begin

ChMode;

end;

procedure TPassForm.PassButtonClick(Sender: TObject);

 var modestr,pwd:shortstring;

begin

 modestr:=AnsiUppercase(Combobox1.text);

 pwd:=Edit1.text;

 If (modestr='ПРОСМОТР') or

((modestr='АДМИНИСТРИРОВАНИЕ') and (pwd=AdminPwd)) or

((modestr='ПРОДАЖА')      and (pwd=SalerPwd)) or

((modestr='ЗАВОЗ')        and (pwd=RecieverPwd))

then Mode:=Combobox1.text

else ShowMessage('Не верно задан режим '+modestr+#13+'или неверно введен пароль для режима '+modestr);

 Close;

end;

procedure TPassForm.CancelButtonClick(Sender: TObject);

begin

 Close;

end;end.

 

unit PropUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Registry;

type TPropForm = class(TForm)

ChPassButton: TButton;

ExitButton: TButton;

ComboBox1: TComboBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Edit2: TEdit;

procedure ExitButtonClick(Sender: TObject);

procedure ChPassButtonClick(Sender: TObject);

Procedure writereg(name,value:string);

private { Private declarations }

public { Public declarations }

end;

var PropForm: TPropForm;

implementation

{$R *.DFM}

Procedure TPropForm.writereg(name,value:string);

 var Reg:TRegistry;

begin

Reg:=Tregistry.Create;

Reg.Rootkey:=HKEY_CURRENT_USER;

Reg.OpenKey('Software\OM',true);

Reg.WriteString(name,value);

Reg.CloseKey;

Reg.Destroy;

end;

procedure TPropForm.ExitButtonClick(Sender: TObject);

begin

 Close;

end;

procedure TPropForm.ChPassButtonClick(Sender: TObject);

begin

 If Edit1.text<>Edit2.text then ShowMessage('Пароли не совппадают')

 else if length(Edit1.text)>10 then Showmessage('Пароль должен быть не более 10 символов')

 else writereg(ComboBox1.text,Edit1.text);

end;

end.

 

unit RecieveUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, DBCtrls, Spin, ExtCtrls, ComCtrls;

type TRecieveForm = class(TForm)

AddButton: TButton;

CancelButton: TButton;

DBLookupComboBox1: TDBLookupComboBox;

SpinEdit2: TSpinEdit;

SpinEdit3: TSpinEdit;

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Label6: TLabel;

Bevel1: TBevel;

Bevel2: TBevel;

DateTimePicker1: TDateTimePicker;

Label7: TLabel;

DBLookupComboBox2: TDBLookupComboBox;

Label8: TLabel;

CheckBox1: TCheckBox;

Edit1: TEdit;

ComboBox1: TComboBox;

Label9: TLabel;

Label10: TLabel;

CheckBox2: TCheckBox;

Edit2: TEdit;

Edit3: TEdit;

Label11: TLabel;

Edit4: TEdit;

procedure CancelButtonClick(Sender: TObject);

procedure NewPostButtonClick(Sender: TObject);

procedure AddButtonClick(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure CheckBox2Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var RecieveForm: TRecieveForm;

implementation

uses mainunit;

{$R *.DFM}

procedure TRecieveForm.CancelButtonClick(Sender: TObject);

begin

 Close;

end;

procedure TRecieveForm.AddButtonClick(Sender: TObject);

begin

 with MainForm do begin

 If CheckBox1.checked then

begin

TableTov.Insert;

TableTov.FieldByName('TovarName').AsString:=Edit1.Text;

TableTov.FieldByName('EdIzm').AsString:=ComboBox1.Text;

TableTov.FieldByName('Price').AsFloat:=strtofloat(Edit4.Text);

TableTov.FieldByName('Col').AsInteger:=SpinEdit2.Value;

TableTov.Post;

end

 //Увеличиваем количество в таблице "медикаменты"

else begin

 TableTov.edit;

 TableTov.FieldByName('Col').AsInteger:= TableTov.FieldByName('Col').AsInteger+SpinEdit2.Value;

 TableTov.post;

 end;

//Дополняем таблицу "Накладные"

 TableNakl.Insert;

 If not (CheckBox1.checked) then TableNakl.FieldByName('TovarCode').AsInteger:=strtoint(DBLookUpComboBox1.text)

                      else TableNakl.FieldByName('TovarCode').AsInteger:=TableTov.FieldByName('TovarCode').AsInteger;

 TableNakl.FieldByName('Date').AsDateTime:=DateTimePicker1.Date;

 TableNakl.FieldByName('Sum').AsInteger:=SpinEdit3.Value;

 TableNakl.FieldByName('Recieved').AsInteger:=Spinedit2.Value;

 If CheckBox2.checked then

begin

TablePost.Insert;

TablePost.FieldByName('PostName').AsString:=Edit2.text;

TablePost.FieldByName('PostPhone').AsInteger:=strtoint(Edit3.text);

TablePost.Post;

TableNakl.FieldByName('PostCode').AsInteger:=TablePost.FieldByName('PostCode').AsInteger;

end

else TableNakl.FieldByName('PostCode').AsInteger:=strtoint(DBLookUpComboBox2.Text);

 TableNakl.Post;

 end;

end;

procedure TRecieveForm.CheckBox1Click(Sender: TObject);

begin

 DBLookupComboBox1.enabled:=not(DBLookupComboBox1.enabled);

 edit1.enabled:=not(edit1.enabled);

 ComboBox1.enabled:=not(ComboBox1.enabled);

 Edit4.enabled:=not(Edit4.enabled);

end;

procedure TRecieveForm.FormCreate(Sender: TObject);

begin

Edit1.enabled:=false;

ComboBox1.enabled:=false;

Edit4.enabled:=false;

Edit2.enabled:=false;

Edit3.enabled:=false;

end;

procedure TRecieveForm.CheckBox2Click(Sender: TObject);

begin

 DBLookupComboBox2.enabled:=not(DBLookupComboBox2.enabled);

 Edit2.enabled:=not(Edit2.enabled);

 Edit3.enabled:=not(Edit3.enabled);

end;

end.

 

unit reportUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type TReportForm = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var ReportForm: TReportForm;

implementation

{$R *.DFM}

procedure TReportForm.Button1Click(Sender: TObject);

begin

 Close;

end;

procedure TReportForm.FormCreate(Sender: TObject);

begin

 if fileexists('report.txt') then Memo1.Lines.LoadFromFile('report.txt')

 else ShowMessage('Файл report.txt в текущем каталоге не найден');

end;end.

 

unit SaleUnit;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

DBCtrls, StdCtrls, Db, DBTables, Mask, Spin, Printers;

type TSaleForm = class(TForm)

Label1: TLabel;

SaleYesButton: TButton;

SailCancelButton: TButton;

SpinEdit1: TSpinEdit;

NaklButton: TButton;

procedure SailCancelButtonClick(Sender: TObject);

procedure SaleYesButtonClick(Sender: TObject);

procedure NaklButtonClick(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var SaleForm: TSaleForm;

implementation

uses mainunit;

{$R *.DFM}

procedure TSaleForm.SailCancelButtonClick(Sender: TObject);

begin

Close;

end;

procedure TSaleForm.SaleYesButtonClick(Sender: TObject);

begin

with MainForm do begin

TableTov.Edit;

TableTov.Fields[4].AsInteger:=TableTov.Fields[4].AsInteger - SaleForm.SpinEdit1.Value;

TableTov.Post;

end;

end;

procedure TSaleForm.NaklButtonClick(Sender: TObject);

begin

 printer.begindoc;

with printer.canvas do begin

 textout(200,80,'Накладная №______');

 textout(80,100,'Дата');

 textout(280,100,'Продавец');

 textout(480,100,'Адрес');

 DateSeparator:= '.';

 textout(80,120,DateToStr(Date));

 textout(280,120,'АО АРГО');

 textout(480,120,'Махачкала, пр. Шамиля 1');

 textout(80,220,'Товар');

 textout(280,220,'Количество');

 textout(480,220,'Общая стоимость');

 textout(80,240,MainForm.TableTov.Fields[1].AsString);

 textout(280,240,inttostr(SpinEdit1.value));

 textout(480,240,inttostr(SpinEdit1.value*MainForm.TableTov.Fields[3].AsInteger));

 end;

 printer.enddoc;

end;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: