Разработка программы складского учёта
Требования к функциональным характеристикам программы. Выбор средств проектирования. Язык 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