📄 u_datamodule.pas
字号:
unit u_datamodule;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;
type
TDM_main = class(TDataModule)
Database: TDatabase;
Q_login: TQuery;
T_merchant: TTable;
DS_merchant: TDataSource;
T_parts: TTable;
DS_parts: TDataSource;
T_buy: TTable;
DS_buy: TDataSource;
T_counter: TTable;
T_buy_items: TTable;
DS_buy_items: TDataSource;
Q_buy_stat: TQuery;
T_sale: TTable;
T_sale_items: TTable;
DS_sale: TDataSource;
DS_sale_items: TDataSource;
Q_sale_stat: TQuery;
T_import: TTable;
DS_import: TDataSource;
T_import_items: TTable;
DS_import_items: TDataSource;
Q_contact_items: TQuery;
DS_contact_items: TDataSource;
T_export: TTable;
T_export_items: TTable;
DS_export: TDataSource;
DS_export_items: TDataSource;
T_store: TTable;
DS_store: TDataSource;
Q_sum_store: TQuery;
procedure T_buyNewRecord(DataSet: TDataSet);
procedure T_buy_itemsNewRecord(DataSet: TDataSet);
procedure T_buy_itemsAfterPost(DataSet: TDataSet);
procedure T_saleNewRecord(DataSet: TDataSet);
procedure T_sale_itemsAfterPost(DataSet: TDataSet);
procedure T_importNewRecord(DataSet: TDataSet);
procedure T_import_itemsNewRecord(DataSet: TDataSet);
procedure T_exportNewRecord(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
//连接登录
procedure Logout;
function Login:Boolean;
//商家
procedure OpenMerchant;
//零件产品
procedure OpenParts;
//购货合同管理
procedure OpenBuy;
//购货合同统计
function SumPrices(from_date, to_date:TDate):Integer;
//销售合同管理
procedure OpenSale;
//销售统计
procedure SaleStat(from_date, to_date:TDate);
//入库管理
procedure OpenImport;
procedure DeleteImportItems;
procedure ShowContactItems(contact_id:string);
procedure AddContactToImport;
//出库管理
procedure OpenExport;
procedure DeleteExportItems;
procedure AddContactToExport;
//库存统计
procedure OpenStore;
procedure StoreStat;
end;
var
DM_main: TDM_main;
implementation
{$R *.DFM}
uses u_login;
{登陆退出}
function TDM_main.Login:Boolean;
var
server, user, passwd:String;
begin
//获取登录参数
//LoginParams.Clear;
Result:=False;
if GetLoginParams(server, user, passwd) then
begin
//用LOGIN用户连接
with Database do
begin
Connected:=False;
Params.Values['SERVER NAME']:=server;
Params.Values['USER NAME']:='LOGIN';
Params.Values['PASSWORD']:='PASSWORD';
Connected:=True;
end;
//用户认证
with Q_login do
begin
Params.ParamValues['USER']:=user;
Params.ParamValues['PASSWD']:=passwd;
Open;
Result:=(RecordCount=1) and (FieldValues['COUNT']=1);
end;
//正常连接
if Result then
begin
with Database do
begin
Connected:=False;
Params.Values['USER NAME']:='MATER';
Params.Values['PASSWORD']:='PASSWORD';
Connected:=True;
end;
end;
end;
end;
procedure TDM_main.Logout;
begin
with Database do
begin
Connected:=False;
Params.Values['USER NAME']:='';
Params.Values['PASSWORD']:='';
end;
end;
{操作商家数据表}
procedure TDM_main.OpenMerchant;
begin
T_merchant.Open;
end;
{操作零件产品数据表}
procedure TDM_main.OpenParts;
begin
T_parts.Open;
end;
{购货合同管理}
procedure TDM_main.OpenBuy;
begin
T_buy.Open;
T_buy_items.Open;
T_merchant.Open;
T_parts.Open;
end;
procedure TDM_main.T_buyNewRecord(DataSet: TDataSet);
var
counter:integer;
id:String;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''B''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//合成合同编号
id:='00000'+IntToStr(counter);
id:=Copy(id, length(id)-5,6);
id:=FormatDateTime('yyyy', now)+id;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=id;
FieldValues['STATE']:='0';
FieldValues['START_DATE']:=now;
FieldValues['BUY_SALE']:='B';
FieldValues['MERCHANT']:='AAAAAA';
Post;
end;
end;
procedure TDM_main.T_buy_itemsNewRecord(DataSet: TDataSet);
var
counter:integer;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''G''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=counter;
end;
end;
procedure TDM_main.T_buy_itemsAfterPost(DataSet: TDataSet);
var
cal:Single;
begin
cal:=0;
with DataSet do
begin
First;
while not Eof do
begin
cal:=cal+FieldValues['UNIT_PRICE']*FieldValues['AMOUNT'];
Next;
end;
end;
T_buy.Edit;
T_buy['PRICES']:=cal;
end;
{购货统计}
function TDM_main.SumPrices(from_date, to_date:TDate):Integer;
begin
with Q_buy_stat do
begin
Close;
Params.ParamValues['START_DATE']:=from_date;
Params.ParamValues['END_DATE']:=to_date;
Open;
try
result:=FieldValues['SUM'];
except
result:=0;
end;
end;
end;
{销售合同管理}
procedure TDM_main.OpenSale;
begin
T_sale.Open;
T_sale_items.Open;
T_merchant.Open;
T_parts.Open;
end;
procedure TDM_main.T_saleNewRecord(DataSet: TDataSet);
var
counter:integer;
id:String;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''B''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//合成合同编号
id:='00000'+IntToStr(counter);
id:=Copy(id, length(id)-5,6);
id:=FormatDateTime('yyyy', now)+id;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=id;
FieldValues['STATE']:='0';
FieldValues['START_DATE']:=now;
FieldValues['BUY_SALE']:='S';
FieldValues['MERCHANT']:='DDDDDD';
Post;
end;
end;
procedure TDM_main.T_sale_itemsAfterPost(DataSet: TDataSet);
var
cal:Single;
begin
cal:=0;
with DataSet do
begin
First;
while not Eof do
begin
cal:=cal+FieldValues['UNIT_PRICE']*FieldValues['AMOUNT'];
Next;
end;
end;
T_sale.Edit;
T_sale['PRICES']:=cal;
end;
{销售统计}
procedure TDM_main.SaleStat(from_date, to_date:TDate);
begin
with Q_sale_stat do
begin
Close;
Params.ParamValues['START_DATE']:=from_date;
Params.ParamValues['END_DATE']:=to_date;
Open;
end;
end;
{入库管理}
procedure TDM_main.OpenImport;
begin
T_import.Open;
T_import_items.Open;
T_parts.Open;
end;
procedure TDM_main.T_importNewRecord(DataSet: TDataSet);
var
counter:integer;
id:String;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''I''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//合成合同编号
id:='00000'+IntToStr(counter);
id:=Copy(id, length(id)-5,6);
id:=FormatDateTime('yyyy', now)+id;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=id;
FieldValues['ACT_DATE']:=now;
FieldValues['IM_EX']:='I';
FieldValues['PERSON']:='输入姓名';
Post;
end;
end;
procedure TDM_main.T_import_itemsNewRecord(DataSet: TDataSet);
var
counter:integer;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''F''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=counter;
FieldValues['PARTS']:='0000000000';
FieldValues['AMOUNT']:=0;
Post;
end;
end;
procedure TDM_main.DeleteImportItems;
begin
if T_import_items.RecordCount>0 then
T_import_items.Delete;
end;
procedure TDM_main.ShowContactItems(contact_id:string);
begin
with Q_contact_items do
begin
Close;
Params.ParamValues['ID']:=contact_id;
Open;
end;
end;
procedure TDM_main.AddContactToImport;
begin
with Q_contact_items do
begin
if Active then
begin
First;
while not Eof do
begin
T_import_items.Append;
T_import_items.Edit;
T_import_items['PARTS']:=FieldValues['PARTS'];
T_import_items['AMOUNT']:=FieldValues['AMOUNT'];
T_import_items.Post;
Next;
end;
end;
end;
end;
{出库管理}
procedure TDM_main.OpenExport;
begin
T_export.Open;
T_export_items.Open;
T_parts.Open;
end;
procedure TDM_main.T_exportNewRecord(DataSet: TDataSet);
var
counter:integer;
id:String;
begin
//获取计数值
with T_counter do
begin
Filter:='ID=''I''';
Filtered:=True;
Open;
counter:=FieldValues['COUNTER_VALUE'];
Inc(counter);
Edit;
FieldValues['COUNTER_VALUE']:=counter;
Post;
Close;
end;
//合成合同编号
id:='00000'+IntToStr(counter);
id:=Copy(id, length(id)-5,6);
id:=FormatDateTime('yyyy', now)+id;
//初始化
with DataSet do
begin
Edit;
FieldValues['ID']:=id;
FieldValues['ACT_DATE']:=now;
FieldValues['IM_EX']:='O';
FieldValues['PERSON']:='输入姓名';
Post;
end;
end;
procedure TDM_main.DeleteExportItems;
begin
if T_export_items.RecordCount>0 then
T_export_items.Delete;
end;
procedure TDM_main.AddContactToExport;
begin
with Q_contact_items do
begin
if Active then
begin
First;
while not Eof do
begin
T_export_items.Append;
T_export_items.Edit;
T_export_items['PARTS']:=FieldValues['PARTS'];
T_export_items['AMOUNT']:=FieldValues['AMOUNT'];
T_export_items.Post;
Next;
end;
end;
end;
end;
{库存统计}
procedure TDM_main.OpenStore;
begin
T_store.Open;
end;
procedure TDM_main.StoreStat;
var
store:integer;
begin
with T_store do
begin
First;
while not Eof do
begin
with Q_sum_store do
begin
Close;
Params.ParamValues['PARTS']:=T_store['ID'];
Params.ParamValues['I_O']:='I';
Open;
try
store:=Q_sum_store['SUM'];
except
store:=0;
end;
Close;
Params.ParamValues['I_O']:='O';
Open;
if not Q_sum_store.Fields.Fields[0].IsNull then
store:=store-Q_sum_store['SUM'];
Close;
end;
Edit;
T_store['AMOUNT']:=store;
Post;
Next;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -