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

📄 material_rk.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Material_RK;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, ComCtrls, Spin;

type
  TForm_Material_RK = class(TForm)
    DS_rk_material_Q: TDataSource;
    DS_material: TDataSource;
    ADOQ_rk_material: TADOQuery;
    Panel3: TPanel;
    ExtBtn: TBitBtn;
    LocateBtn: TBitBtn;
    Panel2: TPanel;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label11: TLabel;
    Label_price: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    DBEdit1: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBCheckBox_flag: TDBCheckBox;
    DBE_price: TDBEdit;
    DBE_matid: TDBEdit;
    DBEdit12: TDBEdit;
    datep_rkdate: TDateTimePicker;
    SpinEdit_num: TSpinEdit;
    BitBtn_RK: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid2: TDBGrid;
    Panel4: TPanel;
    Label5: TLabel;
    Label14: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label12: TLabel;
    Bevel1: TBevel;
    Edit_id: TEdit;
    Edit_name: TEdit;
    OKBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    ComboBox3: TComboBox;
    Edit2: TEdit;
    ComboBox2: TComboBox;
    GroupBox2: TGroupBox;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label_price_1: TLabel;
    Label28: TLabel;
    Label_3: TLabel;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBE_price_1: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DetailBtn: TBitBtn;
    GroupBox3: TGroupBox;
    Label30: TLabel;
    DBEdit15: TDBEdit;
    DBEdit14: TDBEdit;
    Label21: TLabel;
    DBEdit13: TDBEdit;
    Label17: TLabel;
    Label15: TLabel;
    DBEdit16: TDBEdit;
    BitBtn_showRK: TBitBtn;
    BitBtn1: TBitBtn;
    GroupBox4: TGroupBox;
    Label13: TLabel;
    Label16: TLabel;
    Sdate: TDateTimePicker;
    Edate: TDateTimePicker;
    Label18: TLabel;
    Panel5: TPanel;
    DBGrid1: TDBGrid;
    Label22: TLabel;
    Label27: TLabel;
    Edit3: TEdit;
    Bit_Ser2: TBitBtn;
    DBText1: TDBText;
    ADOQ_tmp: TADOQuery;
    DBLookupComboBox1: TComboBox;
    ADOQ_material: TADOQuery;
    Lookup_matype: TComboBox;
    DBLookup_operid: TComboBox;
    ADOQ_rk_materialrkid: TAutoIncField;
    ADOQ_rk_materialmat_id: TStringField;
    ADOQ_rk_materialnum: TFloatField;
    ADOQ_rk_materialrkdate: TDateTimeField;
    ADOQ_rk_materialtmp_id: TIntegerField;
    ADOQ_rk_materialunit: TStringField;
    ADOQ_rk_materialmat_name: TStringField;
    ADOQ_rk_materialcolor: TStringField;
    ADOQ_rk_materialprice: TBCDField;
    ADOQ_rk_materialmatype_name: TStringField;
    ADOQ_rk_materialopername: TStringField;
    ADOQ_rk_materialflag: TBooleanField;
    BtnExport: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn_RKClick(Sender: TObject);
    procedure DetailBtnClick(Sender: TObject);
    procedure LocateBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure BitBtn_showRKClick(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Bit_Ser2Click(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure DBLookupComboBox1Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DS_rk_material_QDataChange(Sender: TObject; Field: TField);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure datep_rkdateChange(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure DBCheckBox_flagClick(Sender: TObject);
    procedure BtnExportClick(Sender: TObject);
  private
    { Private declarations }
    com_rk_date:Tdatetime;
    procedure refreshdb;
  public
    { Public declarations }
  end;

var
  Form_Material_RK: TForm_Material_RK;

implementation
uses sharevar, sharefun, data, Main;
{$R *.dfm}

procedure TForm_Material_RK.refreshdb;
begin
  with ADOQ_material do
  begin
    close;
    sql.Strings[2]:='';
    open;
  end;

  with ADOQ_rk_material do
  begin
      try
         close;
         sql.Strings[2]:='';
         sql.Strings[3]:='order by d.matype_name, a.mat_id,a.rkdate,a.num desc';
         execsql;
         open;
      except
         MsgErr(handle,'刷新数据库失败(Material_RK_Q)!');
      end;
  end;
end;

procedure TForm_Material_RK.FormCreate(Sender: TObject);
var
RK_date:Tdatetime;
begin
  with ADOQ_material do begin close; open; end;
  GetHostDateTime(datamod.ADOCon,RK_date);
  datep_rkdate.DateTime:=RK_date;
  com_rk_date:=RK_date;
end;

procedure TForm_Material_RK.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if adoq_material.Active then adoq_material.Close;
  if ADOQ_rk_material.Active then ADOQ_rk_material.Close;
  action:=cafree;
end;

procedure TForm_Material_RK.BitBtn_RKClick(Sender: TObject);
var
mat_id, mat_name, tmp_unit: string;
rk_num: real;
rk_date: Tdatetime;
tmp_id: integer;
kc_flag, rkmat_flag:boolean;
begin
  if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
  begin
    MsgOk(handle,'物料入库失败,请重试!');
    exit;
  end;
  rk_date:=datep_rkdate.DateTime;
  mat_id:=trim(DBE_matid.Text);

  if mat_id='' then
  begin
        messagebox(handle,'请选择待入库的物料!','警告',mb_ok or MB_ICONINFORMATION);
        DBLookupComboBox1.SetFocus;
        exit;
  end;
  mat_name:=trim(DBEdit1.Text);
  tmp_unit:=trim(DBEdit9.Text);

  if trim(SpinEdit_num.Text)='' then
  begin
        messagebox(handle,'请输入物料入库的数量!','警告',mb_ok or MB_ICONINFORMATION);
        SpinEdit_num.SetFocus;
        exit;
  end;  
  rk_num:=strtofloat(trim(SpinEdit_num.Text));

  if rk_num<=0 then
  begin
        messagebox(handle,'请输入正确的入库数量!','警告',mb_ok or MB_ICONINFORMATION);
        SpinEdit_num.SetFocus;
        exit;
  end;
  if MsgQst(handle,'确定物料 [ '+mat_name+' ] 待入库  '+floattostr(rk_num)+'  '+tmp_unit+' 吗?')=IDNO then EXIT;

{  //数据提交开始
  datamod.ADOCon.BeginTrans;

  //如果时间改变则入库时间为当前时间
  if com_rk_date<>rk_date then
  with ADOQ_tmp do
  begin
      close;sql.clear;
      sql.add('insert into rk_material(mat_id,num,tmp_id,rkdate)');
      sql.add('values(:mat_id,:num,:tmp_id,:rkdate)');
      parameters.ParamValues['mat_id']:=mat_id;
      parameters.ParamValues['num']:=rk_num;
      parameters.ParamValues['tmp_id']:=tmp_id;
      parameters.ParamValues['rkdate']:=rk_date;
      try
        execsql;
      except
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        MsgErr(handle,'物料入库处理失败1!');
        exit;
      end;
  end
  else
  //如果时间没改变则入库时间默认为服务器时间
  with ADOQ_tmp do
  begin
      close;sql.clear;
      sql.add('insert into rk_material(mat_id,num,tmp_id)');
      sql.add('values(:mat_id,:num,:tmp_id)');
      parameters.ParamValues['mat_id']:=mat_id;
      parameters.ParamValues['num']:=rk_num;
      parameters.ParamValues['tmp_id']:=tmp_id;
      try
        execsql;
      except
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        MsgErr(handle,'物料入库处理失败1!');
        exit;
      end;
  end;

  //初始化存贮过程执行结果(失败)
  edit_kc_ret_2:=0;
  //CALL DATABASE Pro_RK_EditKC STORE PROCEDURE
  with ADOSP_RK_EditKC do
  begin
    parameters.paramvalues['@mat_id']:=mat_id;
    parameters.paramvalues['@num']:=rk_num;
    try
      execproc;
    except
      showmessage('存储过程执行失败(Pro_RK_Material)');
      exit;
    end;
    edit_kc_ret_2:=parameters.paramvalues['@RETURN_VALUE'];
  end;

  if edit_kc_ret_2=1 then
  begin
    //提交数据库
    if datamod.ADOCon.InTransaction then
    begin
      try
        datamod.ADOCon.CommitTrans;
      except
        MsgErr(handle,'物料入库表处理失败4!(ADOQ_rk_material)');
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        exit;
      end;
      msgok(handle,'物料 ['+mat_name+'] 入库  '+floattostr(rk_num)+'  '+tmp_unit+'成功!');
      //将最后物料入库时间赋给全局时间变量:[com_rk_date]
      com_rk_date:=rk_date;
      SpinEdit_num.Text:='';
    end;
  end;

  if edit_kc_ret_2=0 then
  begin
    if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
    msgErr(handle,'物料 ['+mat_name+'] 入库  '+floattostr(rk_num)+'  '+tmp_unit+'失败,请重试!');
  end;      }
//********************************************
//********************************************
//********************************************

  //先确定成品库存表内是否存在此条数据
  with ADOQ_tmp do
  begin
    kc_flag:=false;
    close; sql.clear;
    sql.add('select * from kc_material where (mat_id=:mat_id)');
    parameters.ParamValues['mat_id']:=mat_id;
    try
      execsql; open;
    except
      MsgErr(handle,'服装成品入库失败,请重试!');
      exit;
    end;
    if recordcount>0 then kc_flag:=true;
  end;

  //数据提交开始
  rkmat_flag:=true;
  datamod.ADOCon.BeginTrans;
  
  //1.物料入库表新增一条入库记录
  //如果时间改变则入库时间为当前时间
  if com_rk_date<>rk_date then
  with ADOQ_tmp do
  begin
      close;sql.clear;
      sql.add('insert into rk_material(mat_id,num,tmp_id,rkdate)');
      sql.add('values(:mat_id,:num,:tmp_id,:rkdate)');
      parameters.ParamValues['mat_id']:=mat_id;
      parameters.ParamValues['num']:=rk_num;
      parameters.ParamValues['tmp_id']:=tmp_id;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -