⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_datamodule.pas

📁 客户信息跟踪管理软件
💻 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 + -