Разработка программы складского учёта

Требования к функциональным характеристикам программы. Выбор средств проектирования. Язык SQL как стандартный язык баз данных. Локальные базы данных и архитектура "файл-сервер". Пользовательский интерфейс. Руководство программиста. Работа с программой.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.03.2016
Размер файла 288,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

word.EndOfTable;

l.Free;

end;

end.

Параметр

Значение

Имя файла

sklads.pas

Имя модуля

sklads

Количество строк

81

Количество символов

1570

Размер файла

1,69 Кб

Количество комментариев

7

Процент закоментированности

6,18 %

Модуль : sklads.pas

Всего строк : 81

unit sklads;

//поставщики

interface

uses

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

Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, Buttons, ExtCtrls, DBCtrls,

sqlAdoTools,sg2word,msword,rusdlg;

type

TFrmSklads = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Panel1: TPanel;

DBNavigator1: TDBNavigator;

SpeedButton1: TSpeedButton;

BtnRep: TSpeedButton;

procedure FormCreate(Sender: TObject);

procedure qryNewRecord(DataSet: TDataSet);

procedure SpeedButton1Click(Sender: TObject);

procedure BtnRepClick(Sender: TObject);

procedure DataSource1DataChange(Sender: TObject; Field: TField);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FrmSklads: TFrmSklads;

implementation

uses dat,orders;

{$R *.dfm}

//создание формы

procedure TFrmSklads.FormCreate(Sender: TObject);

begin

dm.UpdateSettings(self);

DataSource1.DataSet.Open;

end;

procedure TFrmSklads.qryNewRecord(DataSet: TDataSet);

begin

end;

//помощь

procedure TFrmSklads.SpeedButton1Click(Sender: TObject);

begin

ShowHelp('FrmKlKat');

end;

//отчет

procedure TFrmSklads.BtnRepClick(Sender: TObject);

var word:TMSWord;

i:integer;

begin

i:=0;

word:=TMSWord.Create('');

if not word.Open then

begin

Error('Не могу открыть msWord');

exit;

end;

word.New;

word.InsertCenterText(caption+#13);

DataSetToWordTable(DBGrid1,DataSource1.DataSet,word);

word.Show;

word.Free;

end;

procedure TFrmSklads.DataSource1DataChange(Sender: TObject; Field: TField);

begin

BtnRep.Enabled := not DataSource1.DataSet.IsEmpty;

end;

end.

Параметр

Значение

Имя файла

SQLAdoTools.pas

Имя модуля

SQLAdoTools

Количество строк

245

Количество символов

5553

Размер файла

5,9 Кб

Количество комментариев

14

Процент закоментированности

18,21 %

Модуль : SQLAdoTools.pas

Всего строк : 245

unit SQLADOtools;

//модуль упрощенной работы с SQL для ADO

{

Прежде чем работать с любыми методами данного модуля

необходимо присвоить значение AdoConnection

}

interface

uses db,dbtables,SysUtils,ADODB,classes;

{Следующие функции получают параметром строку содержащую SQL запрос select

В качестве результата возвращается первое поле первой записи результата

}

Function CalculateBool(SQL: string):boolean;

Function CalculateInt(SQL: string):integer;overload;

Function CalculateInt(SQL: string;const Args: array of const):integer;overload;

Function CalculateFloat(SQL: string):real;overload;

Function CalculateFloat(SQL: string;const Args: array of const):real;overload;

{Функция расчитывает новое уникальное значение идентификатора}

Function GetId(table: string):integer;overload;

Function GetId(idname,table: string):integer;overload;

{Получение строкового значения поля из запроса}

function GetFieldFalue(id:integer;field,tbl:string):string;

{

Следующие функции открывают запрос и возвращают его результат.

Параметром запрос - результат tADOQuery

}

Function MakeCursor(SelectSQL: string):tADOQuery;overload;

Function MakeCursor(SelectSQL: string;const Args: array of const):tADOQuery;overload;

//параметрический запрос с полями типа tDateTime

Function OpenParamDtSQL(SQL: string;params:array of tDateTime):tADOQuery;

{Выполняют безкурсорные команды SQL}

Procedure RunSQL(SQL: string);overload;

Procedure RunSQL(SQL: string;const Args: array of const);overload;

Procedure RunParamDtSQL(SQL: string;params:array of tDateTime);

{Преобразует цисло в строку с учетом формата разделителя принятого в SQL "."}

function FlToSql(f:double):string;

{Результат запроса сохраняет в tStringList}

procedure CursorToList(sql:string;l:tStringList);

{

Считывает скрипт из файла и выполняет его.

Скрипт представляет собой список безкурсорных команд SQL.

Разделитель между командами - строка содержащая "-".

}

procedure RunScriptFromFile(ScriptName:string);

var

DBCon:tAdoConnection=nil; {Объект AdoConnection}

implementation

procedure RunScriptFromFile(ScriptName:string);

var l:tStringList;

s:string;

i:integer;

begin

l:=tStringList.Create;

l.LoadFromFile(ScriptName);

s:='';

for i:=0 to l.Count-1 do

begin

if trim(l[i])='-' then

begin

RunSql(s);

s:='';

end

else s:=s+#13#10+l[i];

end;

if trim(s)<>'' then RunSql(s);

l.Free;

end;

procedure CursorToList(sql:string;l:tStringList);

begin

if assigned(l) then l.clear else

l:=tStringList.Create;

with MakeCursor(sql) do

begin

while not eof do

begin

l.AddObject(fields[1].AsString,pointer(fields[0].AsInteger));

next;

end;

free;

end;

end;

function FlToSql(f:double):string;

begin

result := FloatToStr(f);

if pos(',',result)<>0 then result[pos(',',result)]:='.';

end;

Function GetId(table: string):integer;

var i:integer;

begin

i:=CalculateInt('select max(id) from '+table);

if i=0 then result:=1

else result:=i+1;

end;

Function GetId(idname,table: string):integer;

var i:integer;

begin

i:=CalculateInt('select max('+idname+') from '+table);

if i=0 then result:=1

else result:=i+1;

end;

Function CalculateInt(SQL: string;const Args: array of const):integer;overload;

begin

result := CalculateInt(format(sql,args));

end;

Function CalculateInt(SQL: string):integer;

var qu:tADOQuery;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

qu.Open;

result:=qu.Fields[0].AsInteger;

qu.Close;

qu.free;

end;

Function CalculateFloat(SQL: string;const Args: array of const):real;overload;

begin

result := CalculateInt(format(sql,args));

end;

Function CalculateFloat(SQL: string):real;

var qu:tADOQuery;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

qu.Open;

result:=qu.Fields[0].AsFloat;

qu.Close;

qu.free;

end;

Function CalculateBool(SQL: string):boolean;

var qu:tADOQuery;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

qu.Open;

result:=qu.Fields[0].AsBoolean;

qu.Close;

qu.free;

end;

procedure RunParamDtSQL(SQL: string;params:array of tDateTime);

var qu:tADOQuery;

i:integer;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

for i:=low(params) to high(params) do

begin

// qu.Params.CreateParam(ftTimeStamp,'d'+IntToStr(i),ptInputOutput);

qu.Parameters.ParamByName('d'+IntToStr(i)).Value:=params[i];

end;

qu.ExecSQL;

qu.Close;

qu.Free;

end;

Function MakeCursor(SelectSQL: string):tADOQuery;

begin

result:=tADOQuery.Create(nil);

result.Connection:=DbCon;

result.SQL.Text:=SelectSQL;

result.Open;

end;

Function MakeCursor(SelectSQL: string;const Args: array of const):tADOQuery;

begin

result:= MakeCursor(format(SelectSQL,Args));

end;

procedure SQLInsertInto(tableName:string;ValFrmt:string;const Values: array of const;Fields:string='');

begin

RunSQL('insert into '+TableName+' '+Fields+ ' values ('+ValFrmt+')',Values);

end;

Procedure RunSQL(SQL: string;const Args: array of const);

begin

RunSql(format(SQL,Args));

end;

Procedure RunSQL(SQL: string);

var qu:tADOQuery;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

qu.ExecSQL;

qu.Close;

qu.free;

end;

function GetFieldFalue(id:integer;field,tbl:string):string;

begin

with MakeCursor('select '+field+' from '+tbl+' where id='+IntToStr(id)) do

begin

result:=fields[0].AsString;

free;

end;

end;

Function OpenParamDtSQL(SQL: string;params:array of tDateTime):tADOQuery;

var qu:tADOQuery;

i:integer;

begin

qu:=tADOQuery.Create(nil);

qu.Connection:=DBCon;

qu.sql.Text:=SQL;

for i:=low(params) to high(params) do

begin

// qu.Params.CreateParam(ftTimeStamp,'d'+IntToStr(i),ptInputOutput);

qu.Parameters.ParamByName('d'+IntToStr(i)).Value:=params[i];

end;

qu.open;

result := qu;

end;

end.

Параметр

Значение

Имя файла

StrTools.pas

Имя модуля

StrTools

Количество строк

254

Количество символов

4779

Размер файла

5,16 Кб

Количество комментариев

5

Процент закоментированности

4,56 %

Модуль : StrTools.pas

Всего строк : 254

unit StrTools;

//строковые функции

interface

const Dividers=' '#9;

function Split(var s: String; c: Char): String;

function SplitDiv(var s: String): String;

function Replace(str,FindStr,ReplaceStr: String): String;

function gat(str: String;index:integer;c:char): String;

function sat(str,ins: String;index:integer;c:char):String;

function GetToken(var str:string):string;

function CharPos(Str:string;StartIndex,NumberToSkip:integer;ch:char):integer;

function DupeChar(ch:char;count:integer):string;

function HexStrToInt(hex:string):int64;

function CompareStrXX(s1,s2:string):boolean;

function IsInt(s:string):boolean;

function IsFloat(s:string):boolean;

function Fl2Str(v:double;FlCount:integer=2;NoNull:boolean=true):string;

function AddStr(OldStr,AddStr,Delimiter:string):string;

var DigSeparator:char='.';

implementation

uses sysutils;

function Fl2Str(v:double;FlCount:integer=2;NoNull:boolean=true):string;

var s:string;

begin

s:='%.'+IntToStr(FlCount)+'f';

result:=format(s,[v]);

if NoNull then

begin

while (result<>'') and (result[length(result)]<>DigSeparator) do

begin

if result[length(result)]<>'0' then break;

delete(result,length(result),1);

end;

if result[length(result)]=DigSeparator then delete(result,length(result),1);

end;

end;

function Replace(str,FindStr,ReplaceStr: String): String;

var i:integer;

begin

i := pos(FindStr,str);

if i=0 then result:=str else

begin

result := copy(str,1,i-1)+ReplaceStr;

delete(str,1,i+length(FindStr)-1);

result:=result+str;

end;

end;

// Функция разделяет строку на две части - до первого разделителя и после него

// Результат функции - то что до разделителя

// Остается в исходной строке - тоо чтот после

// Символ разделителя удаляется

function Split(var s: String; c: Char): String;

var i:Integer;

begin

i:=pos(c,s);

if i=0 then

begin

result:=s;

s:='';

end

else begin

result:=copy(s,1,i-1);

delete(s,1,i);

end;

end;

function SplitDiv(var s: String): String;

begin

Result:= '';

while Length(s)<>0 do

begin

if pos(s[1],Dividers)<>0 then

begin

Delete(s,1,1);

break;

end;

Result:= Result + s[1];

Delete(s,1,1);

end;

end;

function GetToken(var str:string):string;

begin

while str<>'' do

begin

if str[1]=' ' then begin delete(str,1,1); continue; end;

if str[1]=#9 then begin delete(str,1,1);continue; end;

break;

end;

result:=splitDiv(str);

end;

function IsInt(s:string):boolean;

var i:integer;

begin

result:=false;

if s='' then exit;

if s='-' then exit;

for i:=1 to length(s) do

begin

if not (s[i] in ['0'..'9','-']) then exit;

if (s[i]='-') and (i>1) then exit;

end;

result:=true;

end;

function IsFloat(s:string):boolean;

var i,j:integer;

begin

result:=false;

j:=0;

if s='' then exit;

if s='-' then exit;

for i:=1 to length(s) do

begin

if not (s[i] in ['0'..'9','-',DigSeparator]) then exit;

if s[i]=DigSeparator then inc(j);

if j>1 then exit;

if (s[i]='-') and (i>1) then exit;

end;

result:=true;

end;

function CharPos(Str:string;StartIndex,NumberToSkip:integer;ch:char):integer;

begin

for result:=StartIndex to length(Str) do

begin

if Str[result]<>ch then continue;

dec(NumberToSkip);

if NumberToSkip<=0 then exit;

end;

result:=-NumberToSkip;

end;

function DupeChar(ch:char;count:integer):string;

var

i:integer;

begin

result:='';

for i:=1 to count do

begin

result:=result+ch;

end;

end;

function sat(str,ins: String;index:integer;c:char):String;

var i,j:integer;

begin

if index=0 then

begin

i:=1;

j:=pos(c,Str);

result:=ins+copy(str,j,length(str));

exit;

end

else

begin

i:=CharPos(str,1,index,c);

if i<0 then

begin

result:=str+DupeChar(c,-i)+ins;

exit;

end;

j:=CharPos(str,i+1,0,c);

if j=0 then

begin

result:=copy(str,1,i-1)+c+ins;

exit;

end;

result := copy(str,1,i)+ins+copy(str,j,length(str));

end;

end;

function gat(str: String;index:integer;c:char): String;

var i,j:integer;

begin

if index=0 then

begin

i:=1;

j:=pos(c,Str);

result:=copy(str,i,j-i);

exit;

end;

i:=CharPos(str,1,index,c);

if i<0 then

begin

result:='';

exit;

end;

j:=CharPos(str,i+1,0,c);

if j=0 then

begin

result:=copy(str,i+1,length(str));

exit;

end;

result := copy(str,i+1,j-i-1);

end;

function HexStrToInt(hex:string):int64;

var i:integer;

b:byte;

begin

result:=0;

for i:=0 to (length(hex) div 2)-1 do

begin

b:= StrToInt ('$' + copy(hex,i*2+1,2));

result:=result*$100+b;

end;

end;

function CompareStrXX(s1,s2:string):boolean;

var i:integer;

begin

result:=false;

for i := 1 to length(s1) do

begin

if (s1[i]=s2[i])or(s1[i]='X')or(s2[i]='X') then continue;

exit;

end;

result:=true;

end;

function AddStr(OldStr,AddStr,Delimiter:string):string;

begin

result:=OldStr;

if result<>'' then result:=result+Delimiter;

result:=result+AddStr;

end;

begin

DigSeparator:=FloatToStr(1.5)[2];

end.

Параметр

Значение

Имя файла

WaitUnit.pas

Имя модуля

WaitUnit

Количество строк

87

Количество символов

1939

Размер файла

2,06 Кб

Количество комментариев

2

Процент закоментированности

1,34 %

Модуль : WaitUnit.pas

Всего строк : 87

unit WaitUnit;

//модуль ожидания

interface

uses

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

StdCtrls, ComCtrls, ExtCtrls;

type

TWaitForm = class(TForm)

StaticText: TStaticText;

Animate: TAnimate;

Progress: TProgressBar;

Bevel1: TBevel;

procedure FormShow(Sender: TObject);

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

private

public

end;

Procedure StartWaiting(Msg:string);

Procedure ChangeWaitText(Msg:string);

Procedure ChangeWaitCaption(Msg:string);

Procedure ShowProgress(CurrentPosition,AllPosition:integer);

Procedure SetMax(maxpos:integer);

Procedure SetPos(pos:integer);

Procedure ProgressVisible(Visible:boolean);

Procedure HideWaiting;

var

WaitForm: TWaitForm;

implementation

{$R *.DFM}

Procedure StartWaiting(Msg:string);

begin

if Not Assigned(WaitForm) then application.CreateForm(tWaitForm,WaitForm);

WaitForm.Show;

WaitForm.Progress.Hide;

WaitForm.StaticText.Caption:=Msg;

WaitForm.refresh;

end;

Procedure ChangeWaitText(Msg:string);

begin

WaitForm.StaticText.Caption:=Msg;

WaitForm.repaint;

end;

Procedure ChangeWaitCaption(Msg:string);

begin

WaitForm.Caption:=Msg;

WaitForm.repaint;

end;

Procedure ShowProgress(CurrentPosition,AllPosition:integer);

begin

WaitForm.Progress.Show;

WaitForm.Progress.Max:=AllPosition;

WaitForm.Progress.position := CurrentPosition;

WaitForm.Repaint;

end;

Procedure SetMax(maxpos:integer);

begin

WaitForm.Progress.Max:=MaxPos;

end;

Procedure SetPos(pos:integer);

begin

WaitForm.Progress.Position:=Pos;

end;

Procedure ProgressVisible(Visible:boolean);

begin

WaitForm.Progress.Visible:=Visible;

end;

Procedure HideWaiting;

begin

WaitForm.Hide;

end;

procedure TWaitForm.FormShow(Sender: TObject);

begin

Animate.Active:= True;

end;

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

begin

Animate.Active:= False;

end;

end.

Параметр

Значение

Имя файла

About.pas

Имя модуля

About

Количество строк

37

Количество символов

562

Размер файла

636 б

Количество комментариев

5

Процент закоментированности

16,01 %

Модуль : About.pas

Всего строк : 37

unit About;

//о программе

interface

uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox = class(TForm)

Panel1: TPanel;

OKButton: TButton;

ProductName: TLabel;

Version: TLabel;

Comments: TLabel;

Label1: TLabel;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox: TAboutBox;

implementation

uses dat;

{$R *.dfm}

procedure TAboutBox.FormCreate(Sender: TObject);

begin

dm.UpdateSettings(self); //визуальные настройки

end;

end.

Параметр

Значение

Имя файла

Ost.pas

Имя модуля

Ost

Количество строк

123

Количество символов

3175

Размер файла

3,34 Кб

Количество комментариев

9

Процент закоментированности

5,70 %

Модуль : Ost.pas

Всего строк : 123

unit Ost;

//остатки на складе

interface

uses

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

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

type

TFrmOst = class(TForm)

Panel1: TPanel;

QryOst: TADOQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label2: TLabel;

ComboKat: TComboBox;

BtnReport: TSpeedButton;

DBNavigator1: TDBNavigator;

QryOstaid: TIntegerField;

QryOstTowarId: TIntegerField;

QryOstKolwo: TFloatField;

QryOstbid: TIntegerField;

QryOstbname: TWideStringField;

QryOstRasmern: TWideStringField;

QryOstkategory: TIntegerField;

QryOstcname: TWideStringField;

QryOstcostb: TFloatField;

QryOstcosts: TFloatField;

QryOstSumb: TFloatField;

QryOstSums: TFloatField;

procedure FormCreate(Sender: TObject);

procedure ComboSkladChange(Sender: TObject);

procedure BtnReportClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FrmOst: TFrmOst;

implementation

uses dat,msword,rusdlg,SqlAdoTools;

{$R *.dfm}

//создание формы

procedure TFrmOst.FormCreate(Sender: TObject);

begin

ComboKat.Items := klkat; //классификатор типов товаров

ComboKat.ItemIndex := 0;

ComboSkladChange(nil);

dm.UpdateSettings(self); //настройки отображения

end;

//изменение параметров фильтрации

procedure TFrmOst.ComboSkladChange(Sender: TObject);

begin

with QryOst do

begin

filtered:=ComboKat.ItemIndex>0;

if filtered then

filter :='kategory='+IntToStr(integer(ComboKat.Items.Objects[ComboKat.ItemIndex]));

open;

QryOstcname.Visible := not filtered;

end;

end;

//отчет

procedure TFrmOst.BtnReportClick(Sender: TObject);

var word:TMSWord;

sp1,sp2:real;

i:integer;

begin

sp1:=0;sp2:=0;

word:=TMSWord.Create('');

if not word.Open then

begin

Error('Не могу открыть msWord');

exit;

end;

word.New;

word.InsertCenterText('Отчет по остаткам'#13);

i:=0;

if ComboKat.ItemIndex>0 then

word.InsertText('Фильтрация по категории: '+ComboKat.Text+#13);

word.InsertTable(9,0);

word.InsertTableHead([15,100,60,60,60,60,60,60,60],

['№','Наименование товара','Категория','Размерность','Цена закуп.','Цена прод.','Количество','Цена закуп.','Цена прод.']);

with QryOst do

begin

First;

while not eof do

begin

inc(i);

sp1:=sp1+QryOstcostb.AsFloat;

sp2:=sp2+QryOstcosts.AsFloat;

word.InsertTableLine([IntToStr(i),

QryOstbname.AsString,

QryOstcname.AsString,

QryOstRasmern.AsString,

QryOstcostb.Text,

QryOstcosts.Text,

QryOstKolwo.AsString,

QryOstSumb.Text,

QryOstSums.Text]);

next;

end;

word.EndOfTable;

end;

word.InsertText(#13);

word.InsertText('Всего позиций : '+format('%d',[i])+#13);

word.InsertText('Сумма остатка по закупочной цене: '+format('%.2f р',[sp1])+#13);

word.InsertText('Сумма остатка по продажной цене: '+format('%.2f р',[sp2])+#13);

word.InsertText(#13+'Время создания отчета :'+DateTimeToStr(now));

word.Show;

word.Free;

end;

end.

Параметр

Значение

Имя файла

SelMonth.pas

Имя модуля

SelMonth

Количество строк

58

Количество символов

1041

Размер файла

1,13 Кб

Количество комментариев

3

Процент закоментированности

5,19 %

Модуль : SelMonth.pas

Всего строк : 58

unit SelMonth;

interface

uses

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

Dialogs, StdCtrls, Buttons, Spin;

type

TFrmSelYM = class(TForm)

GroupBox1: TGroupBox;

Label1: TLabel;

sy: TSpinEdit;

Label2: TLabel;

cm: TComboBox;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FrmSelYM: TFrmSelYM;

function EnterYM(var y,m:word;SetCurrent:boolean=true):boolean;

implementation

{$R *.dfm}

function EnterYM(var y,m:word;SetCurrent:boolean=true):boolean;

begin

result:=false;

Application.CreateForm(TFrmSelYM, FrmSelYM);

if not SetCurrent then

begin

FrmSelYM.sy.Value := y;

FrmSelYM.cm.ItemIndex := m-1;

end;

if FrmSelYM.ShowModal=mrOk then

begin

y:=FrmSelYM.sy.Value;

m:=FrmSelYM.cm.ItemIndex+1;

result:=true;

end;

FrmSelYM.free;

end;

procedure TFrmSelYM.FormCreate(Sender: TObject);

var y,m,d:word;

begin

DecodeDate(date,y,m,d);

sy.Value := y;

cm.ItemIndex := m-1;

end;

end.

Параметр

Значение

Имя файла

rep2.pas

Имя модуля

rep2

Количество строк

91

Количество символов

2180

Размер файла

2,31 Кб

Количество комментариев

11

Процент закоментированности

10,50 %

Модуль : rep2.pas

Всего строк : 91

unit rep2;

//классификатор моделей

interface

uses

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

Dialogs, DB, DBCtrls, Grids, DBGrids, ExtCtrls, Buttons, StdCtrls,

ComCtrls, ADODB;

type

TFrmSaleTo = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ds: TDataSource;

BtnRep: TSpeedButton;

StatusBar: TStatusBar;

Label1: TLabel;

SpeedButton1: TSpeedButton;

Panel2: TPanel;

DBGrid2: TDBGrid;

DataSource1: TDataSource;

qry: TADOQuery;

Splitter1: TSplitter;

qrydt: TDateTimeField;

qryname: TWideStringField;

qrycnt: TFloatField;

qrycostb: TFloatField;

qrycosts: TFloatField;

qryExpr1005: TFloatField;

qryExpr1006: TFloatField;

procedure BtnRepClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure dsDataChange(Sender: TObject; Field: TField);

procedure DataSource1DataChange(Sender: TObject; Field: TField);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FrmSaleTo: TFrmSaleTo;

implementation

uses dat,sg2word,msword,rusdlg;

{$R *.dfm}

procedure TFrmSaleTo.BtnRepClick(Sender: TObject);

var word:TMSWord;

i:integer;

begin

i:=0;

word:=TMSWord.Create; //создать класс TMSWord

if not word.Open then //открыть связь с Ole объектом

begin

Error('Не могу открыть msWord');

exit;

end;

word.New; //новый документ

word.InsertCenterText(caption+#13); //вставить заголовок документа

DataSetToWordTable(DBGrid1,ds.DataSet,word); //вставить таблицу

word.Show; //показать Word

word.Free; //Освободить память

end;

procedure TFrmSaleTo.FormCreate(Sender: TObject);

begin

ds.DataSet.Close;

ds.DataSet.Open;

dm.TblClients.Close;

dm.TblClients.Open;

end;

procedure TFrmSaleTo.dsDataChange(Sender: TObject; Field: TField);

begin

StatusBar.SimpleText :='Всего записей '+IntToStr(ds.DataSet.RecordCount);

end;

procedure TFrmSaleTo.DataSource1DataChange(Sender: TObject; Field: TField);

begin

caption := format('Продажи клиенту: %s',[dm.TblClientsFio.value]);

Qry.Close;

Qry.Parameters.ParamByName('id').Value := dm.TblClientsid.Value;

Qry.Open;

end;

end.

Параметр

Значение

Имя файла

rep1.pas

Имя модуля

rep1

Количество строк

65

Количество символов

1536

Размер файла

1,63 Кб

Количество комментариев

11

Процент закоментированности

14,91 %

Модуль : rep1.pas

Всего строк : 65

unit rep1;

//классификатор моделей

interface

uses

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

Dialogs, DB, DBCtrls, Grids, DBGrids, ExtCtrls, Buttons, StdCtrls,

ComCtrls;

type

TFrmklmodels = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ds: TDataSource;

BtnRep: TSpeedButton;

StatusBar: TStatusBar;

Label1: TLabel;

SpeedButton1: TSpeedButton;

procedure BtnRepClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure dsDataChange(Sender: TObject; Field: TField);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Frmklmodels: TFrmklmodels;

implementation

uses dat,sg2word,msword,rusdlg;

{$R *.dfm}

procedure TFrmklmodels.BtnRepClick(Sender: TObject);

var word:TMSWord;

i:integer;

begin

i:=0;

word:=TMSWord.Create; //создать класс TMSWord

if not word.Open then //открыть связь с Ole объектом

begin

Error('Не могу открыть msWord');

exit;

end;

word.New; //новый документ

word.InsertCenterText(caption+#13); //вставить заголовок документа

DataSetToWordTable(DBGrid1,ds.DataSet,word); //вставить таблицу

word.Show; //показать Word

word.Free; //Освободить память

end;

procedure TFrmklmodels.FormCreate(Sender: TObject);

begin

ds.DataSet.Close;

ds.DataSet.Open;

end;

procedure TFrmklmodels.dsDataChange(Sender: TObject; Field: TField);

begin

StatusBar.SimpleText :='Всего записей '+IntToStr(ds.DataSet.RecordCount);

end;

end.

Параметр

Значение

Имя файла

Main.pas

Имя модуля

Main

Количество строк

437

Количество символов

10964

Размер файла

11,56 Кб

Количество комментариев

48

Процент закоментированности

7,48 %

Модуль : Main.pas

Всего строк : 437

unit Main;

// главное окно программы

interface

uses Windows, Classes, Graphics, Forms, Controls, Menus,

Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, ImgList, StdActns,

ActnList, ToolWin, DB, ADODB, Grids, DBGrids, Mask, DBCtrls;

type

TFrmMain = class(TForm)

ActionList1: TActionList;

FileExit1: TAction;

HelpAbout1: TAction;

StatusBar: TStatusBar;

ImageList1: TImageList;

MainMenu1: TMainMenu;

File1: TMenuItem;

FileExitItem: TMenuItem;

ActTowars: TAction;

N3: TMenuItem;

ActTowars1: TMenuItem;

ActKlKat: TAction;

ActKlKat1: TMenuItem;

ToolBar1: TToolBar;

ToolButton5: TToolButton;

ToolButton8: TToolButton;

N8: TMenuItem;

ActOst: TAction;

N9: TMenuItem;

N10: TMenuItem;

N5: TMenuItem;

N1: TMenuItem;

About1: TMenuItem;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton4: TToolButton;

ToolButton9: TToolButton;

ActSklads: TAction;

N11: TMenuItem;

LabelPred: TLabel;

ActStatistic: TAction;

N12: TMenuItem;

ActStatistic1: TMenuItem;

Help: TAction;

ToolButton11: TToolButton;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

CreateDB: TAction;

OpenDB: TAction;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

OpenDialog: TOpenDialog;

SaveDialog: TSaveDialog;

Income: TAction;

OutData: TAction;

N2: TMenuItem;

N4: TMenuItem;

OutData1: TMenuItem;

Setting: TAction;

Operations: TAction;

ToolButton3: TToolButton;

ToolButton7: TToolButton;

ToolButton10: TToolButton;

ToolButton12: TToolButton;

ToolButton13: TToolButton;

ToolButton14: TToolButton;

ToolButton6: TToolButton;

ToolButton15: TToolButton;

ToolButton16: TToolButton;

ToolButton17: TToolButton;

ReservCopy: TAction;

N6: TMenuItem;

datClient: TAction;

N7: TMenuItem;

N19: TMenuItem;

DatViewDisc: TAction;

N20: TMenuItem;

N21: TMenuItem;

DBGrid1: TDBGrid;

query: TADOQuery;

DataSource1: TDataSource;

queryid: TIntegerField;

queryprim: TWideStringField;

querydt: TDateTimeField;

queryOperation: TIntegerField;

querysumm: TFloatField;

querywaluta: TWideStringField;

queryNDSProc: TFloatField;

querySummNDS: TFloatField;

queryPostawId: TIntegerField;

queryClientId: TIntegerField;

queryFio: TWideStringField;

querydiscN: TIntegerField;

DatKlUslug: TAction;

DatEditSales: TAction;

ToolButton18: TToolButton;

N23: TMenuItem;

N24: TMenuItem;

Panel1: TPanel;

DBEdit1: TDBEdit;

ToolButton19: TToolButton;

ToolButton20: TToolButton;

ToolButton21: TToolButton;

RepMonth: TAction;

N22: TMenuItem;

N25: TMenuItem;

RepPerClient: TAction;

N26: TMenuItem;

procedure FileExit1Execute(Sender: TObject);

procedure HelpAbout1Execute(Sender: TObject);

procedure ActTowarsExecute(Sender: TObject);

procedure ActKlKatExecute(Sender: TObject);

procedure ActOstExecute(Sender: TObject);

procedure ActSkladsExecute(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ActStatisticExecute(Sender: TObject);

procedure HelpExecute(Sender: TObject);

procedure CreateDBExecute(Sender: TObject);

procedure OpenDBExecute(Sender: TObject);

procedure IncomeExecute(Sender: TObject);

procedure SettingExecute(Sender: TObject);

procedure OutDataExecute(Sender: TObject);

procedure OperationsExecute(Sender: TObject);

procedure ReservCopyExecute(Sender: TObject);

procedure datClientExecute(Sender: TObject);

procedure DatViewDiscExecute(Sender: TObject);

procedure DataSource1DataChange(Sender: TObject; Field: TField);

procedure DatEditSalesExecute(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure RepMonthExecute(Sender: TObject);

procedure RepPerClientExecute(Sender: TObject);

private

curDb:string;

public

procedure refrData;

published

{ Public declarations }

end;

var

FrmMain: TFrmMain;

implementation

uses

SysUtils, about,sqlAdoTools,towars, kl_kat, dat, rusdlg,

ost,sklads, IniFiles,waitUnit,MovUn, Sett,

orders, Klients,disc,SelMonth, rep1, rep2;

{$R *.dfm}

// выход из рпограммы

procedure TFrmMain.FileExit1Execute(Sender: TObject);

begin

Close;

end;

//о программе

procedure TFrmMain.HelpAbout1Execute(Sender: TObject);

begin

Application.CreateForm(TAboutBox, AboutBox);

AboutBox.ShowModal;

AboutBox.Free;

end;

//товары

procedure TFrmMain.ActTowarsExecute(Sender: TObject);

begin

Application.CreateForm(TFrmTowar, FrmTowar); //создать форму

FrmTowar.ShowModal; //показать

FrmTowar.free; //освободить форму

end;

//классификатор категория

procedure TFrmMain.ActKlKatExecute(Sender: TObject);

begin

Application.CreateForm(TFrmKlKat, FrmKlKat);

FrmKlKat.prepare; //подготовить данные

FrmKlKat.ShowModal;

FrmKlKat.Free;

dm.LoadKlassifikator(klkat,dm.tblKlKat); //загрузить классификатор

end;

//остатки на складе

procedure TFrmMain.ActOstExecute(Sender: TObject);

begin

Application.CreateForm(TFrmOst, FrmOst);

FrmOst.ShowModal;

FrmOst.Free;

end;

//список поставщиков

procedure TFrmMain.ActSkladsExecute(Sender: TObject);

begin

Application.CreateForm(TFrmSklads, FrmSklads);

FrmSklads.ShowModal;

FrmSklads.free;

end;

procedure TFrmMain.refrData;

begin

query.Close;

query.Parameters.ParamByName('d0').Value:=0;

query.Open;

end;

//создание формы

procedure TFrmMain.FormCreate(Sender: TObject);

var fn:string;

begin

//предыдущий запуск

LabelPred.Caption := 'Предыдущий запуск: '+ini.ReadString('main','pred','');

LabelPred.Visible := ini.ValueExists('main','pred');

fn:=ini.ReadString('main', 'LastBase',''); //последняя рабочая база

if FileExists(fn) then //если есть

begin

dm.OpenDataBase(fn); //открыть базу

caption := 'АСУ СКЛАД. '+ExtractFileName(fn);

CurDb:=fn;

end;

dm.UpdateSettings(self); //визуальные настройки

refrData;

end;

//статистика базы

procedure TFrmMain.ActStatisticExecute(Sender: TObject);

var s:string;

begin

s:='Статистика'#13#13;

s:=format('%s Товаров:%d'#13,[s,CalculateInt('select count(*) from [towar]')]);

s:=format('%s Клиентов:%d'#13,[s,CalculateInt('select count(*) from [clients]')]);

s:=format('%s Проведено операций:%d'#13,[s,CalculateInt('select count(*) from [orders]')]);

s:=format('%s Позиций на складе:%d'#13,[s,CalculateInt('select count(*) from [skladdata]')]);

Notify(s); //вывод сообщения

end;

//помощь

procedure TFrmMain.HelpExecute(Sender: TObject);

begin

showHelp('main');

end;

//создать БД

procedure TFrmMain.CreateDBExecute(Sender: TObject);

begin

if not SaveDialog.Execute then exit; //диалог сохранения

dm.CloseDataBase; //закрыть текущую базу

//скопировать empty.mdb

if not CopyFile(pchar(ExtractFilePath(ParamStr(0))+'empty.mdb'),pchar(savedialog.FileName),false)

then

begin

Error('Не могу скопировать '+ExtractFilePath(ParamStr(0))+'empty.mdb'+' в '+savedialog.FileName);

exit;

end;

dm.OpenDataBase(savedialog.FileName,true); //созлать со скриптом

caption := 'АСУ СКЛАД. '+ExtractFileName(savedialog.FileName);

curDb:=savedialog.FileName;

refrData;

end;

//открыть БД

procedure TFrmMain.OpenDBExecute(Sender: TObject);

begin

if not OpenDialog.Execute then exit;

dm.CloseDataBase; //закрыть текущую

dm.OpenDataBase(OpenDialog.FileName); //открыть базу

caption := 'АСУ СКЛАД. '+ExtractFileName(OpenDialog.FileName);

curDb:=OpenDialog.FileName;

refrData;

end;

//приход на склад

procedure TFrmMain.IncomeExecute(Sender: TObject);

begin

Application.CreateForm(TFrmMovTowar, FrmMovTowar); //форма движения

with FrmMovTowar do

begin

caption := 'Поступление на склад';

newOp:=1; // 1 - приход ]

Notebook1.PageIndex:=1;

Qry.Open; //открыть

Qry.Append; //добавить запись

Qry.post;

Qry.edit;

if ShowModal<>mrOk then

begin

runsql('delete from TowForOrder where OrderId=%d',[qryid.Value]);

qry.delete;

end else BtnApplyClick(nil);

Qry.close; //закрыть таблицу

free;

end;

refrData;

end;

//настройки

procedure TFrmMain.SettingExecute(Sender: TObject);

begin

Application.CreateForm(TFrmSetting, FrmSetting); //форма настроек

FrmSetting.ShowModal;

FrmSetting.free;

end;

//отгрузка товара

procedure TFrmMain.OutDataExecute(Sender: TObject);

begin

Application.CreateForm(TFrmMovTowar, FrmMovTowar);

with FrmMovTowar do

begin

caption := 'Отгрузка со склада';

newOp:=2; //код 2

Notebook1.PageIndex:=0;

Qry.Open;

Qry.Append;

Qry.Post;

Qry.Edit;

RefreshTbls;

if ShowModal<>mrOk then

begin

runsql('delete from TowForOrder where OrderId=%d',[qryid.Value]);

qry.delete;

end else BtnApplyClick(nil);

Qry.close;

free;

end;

refrData;

end;

//операции

procedure TFrmMain.OperationsExecute(Sender: TObject);

begin

Application.CreateForm(TFrmOrders, FrmOrders); //форма движений товара

FrmOrders.showmodal;

FrmOrders.free;

end;

//резервная копия базы

procedure TFrmMain.ReservCopyExecute(Sender: TObject);

begin

if not SaveDialog.Execute then exit;

//копировать файл под новым именем

if not CopyFile(pchar(CurDb),pchar(savedialog.FileName),false) then

begin

Error('Не могу скопировать '+CurDb+' в '+savedialog.FileName);

exit;

end;

notify('Копирование закончено');

end;

procedure TFrmMain.datClientExecute(Sender: TObject);

begin

Application.CreateForm(TFrmClients, FrmClients);

FrmClients.ShowModal;

FrmClients.Free;

refrData;

end;

procedure TFrmMain.DatViewDiscExecute(Sender: TObject);

begin

Application.CreateForm(TFrmDisc, FrmDisc);

FrmDisc.ShowModal;

FrmDisc.Free;

end;

procedure TFrmMain.DataSource1DataChange(Sender: TObject; Field: TField);

begin

DatEditSales.Enabled :=not query.IsEmpty;

Panel1.Visible := not query.IsEmpty;

end;

procedure TFrmMain.DatEditSalesExecute(Sender: TObject);

begin

Application.CreateForm(TFrmMovTowar, FrmMovTowar);

with FrmM...


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

  • Разработка системы "РЭО-ГАИ" и соответствующей ей базы данных, позволяющей документировать в электронном виде автоматизацию учета движений автомобилей. Язык SQL - стандартный язык доступа к реляционным базам данных. Структура программы и описание модулей.

    курсовая работа [83,1 K], добавлен 18.08.2009

  • Техническое задание на разработку программного продукта и требования к программе. Написание алгоритма работы и разработка интерфейса программы. Руководство системного программиста и оператора. Основные методы и принципы тестирования базы данных.

    дипломная работа [2,7 M], добавлен 27.01.2013

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

  • Понятие банка и базы данных, их назначение. Создание базы данных "Учет нарушений ПДД" с удобным пользовательским интерфейсом. Требования к функциональным характеристикам. Условия эксплуатации и программные требования. Описание входных и выходных данных.

    курсовая работа [2,9 M], добавлен 22.09.2012

  • Обоснование выбора языков разметки гипертекста HTML и стилей CSS. Описание архитектуры клиент-сервер. Разработка базы данных средствами структурированного языка запросов SQL. Пользовательский интерфейс и руководство пользователя для работы с программой.

    курсовая работа [2,1 M], добавлен 16.04.2017

  • Эволюция концепций баз данных. Требования, которым должна удовлетворять организация базы данных. Модели представления данных. Язык SQL как стандартный язык баз данных. Архитектуры баз данных. Среда Delphi как средство для разработки СУБД.

    дипломная работа [278,9 K], добавлен 26.11.2004

  • Анализ аналогов и выбор прототипа, разработка алгоритма и графического интерфейса, кодирование и тестирование. Логическая модель данных "Нотариальная контора". Особенности реализации в MS SQL. Требования к функциональным характеристикам базы данных.

    курсовая работа [1,3 M], добавлен 12.01.2013

  • Описание экспертной системы по подбору кадров. Требования к функциональным характеристикам программы. Состав и параметры технических средств ЭВМ. Структура входных данных. Руководство программиста и пользователя. Тестирование программного средства.

    курсовая работа [897,0 K], добавлен 13.11.2016

  • Разработка инфологической модели базы данных "Рабочее место кассира", требования к ее функциональным характеристикам. Создание программы в Delphi. Описание компонентов для реализации графического интерфейса и интерфейса ввода справочника кассиров.

    курсовая работа [2,2 M], добавлен 17.04.2014

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Реализация прямого проектирования в архитектуре "файл-сервер". Процесс изменения структуры базы данных, реализация прямого проектирования в архитектуре "клиент-сервер", генерирование SQL-кода создания базы данных на основе физической модели данных.

    контрольная работа [697,8 K], добавлен 16.02.2015

  • Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.

    курсовая работа [1,5 M], добавлен 17.11.2010

  • Информационная поддержка деятельности магазина по продаже компьютеров. Работа с программой. Этапы проектирования базы данных. Анализ информационных задач. Выбор программных средств. Особенности проектирования программного комплекса информационной системы.

    курсовая работа [1,8 M], добавлен 09.06.2016

  • Использование основных свойств объектно-ориентированного языка программирования C ++ при написании программы по реализации списка футболистов разных амплуа. Руководство пользователя и руководство программиста. Работа со списком, программный интерфейс.

    курсовая работа [516,5 K], добавлен 20.07.2014

  • Разработка программы на языке Visual Basic. Спецификация на программный модуль. Ввод, изменение и удаление данных по определенным требованиям. Руководство системного программиста, программиста и оператора. Ведение базы данных в виде таблицы Excel.

    курсовая работа [272,5 K], добавлен 21.04.2014

  • Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.

    дипломная работа [1,1 M], добавлен 15.02.2017

  • Разработка программы, позволяющей реализовать шифрование и дешифрование текстового файла методом замены и методом перестановки. Требования к функциональным характеристикам, надежности, составу и параметрам технических средств ПО. Интерфейс пользователя.

    курсовая работа [19,0 K], добавлен 30.04.2011

  • Виды связей между объектами в системе управления базами данных MS Access. Ввод и редактирование данных в таблицах, обработка информации базы данных. Архитектура БД по принципу файл-сервер. Создания формы в окне базы данных, использование отчетов.

    презентация [511,9 K], добавлен 20.01.2014

  • Функциональная модель системы. Проектирование схемы базы данных. Проектирование архитектуры системы. Принцип технологии клиент-сервер. Построение схемы ресурсов. Выбор программных средств. Разработка базы данных с использованием Microsoft SQL Server.

    дипломная работа [1,1 M], добавлен 30.03.2015

  • Модели информационного процесса обработки данных. Классификация баз данных. Сеть архитектуры и технология клиент-сервер. Создание запросов к реляционным базам данных на SQL. Работа с электронными таблицами MS Excel: форматирование данных, вычисления.

    контрольная работа [17,8 K], добавлен 17.01.2010

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