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

📄 absent_bom.pas

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

interface

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

type
  TForm_Absent_BOM = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    Panel4: TPanel;
    Label4: TLabel;
    Panel6: TPanel;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    Panel5: TPanel;
    Label9: TLabel;
    Label10: TLabel;
    Label19: TLabel;
    Label7: TLabel;
    DS_absent_BOM: TDataSource;
    ADOQ_absent_BOM: TADOQuery;
    Label12: TLabel;
    Label3: TLabel;
    ADOQ_absent_BOMlog_id: TAutoIncField;
    ADOQ_absent_BOMord_id: TStringField;
    ADOQ_absent_BOMmat_id: TStringField;
    ADOQ_absent_BOMcust_name: TStringField;
    ADOQ_absent_BOMcostume_name: TStringField;
    ADOQ_absent_BOMseq_name: TStringField;
    ADOQ_absent_BOMmat_name: TStringField;
    GroupBox2: TGroupBox;
    DBGrid2: TDBGrid;
    Bevel1: TBevel;
    Label1: TLabel;
    ComboBox_matype: TComboBox;
    ADOQ_absent_BOMunit: TStringField;
    Panel7: TPanel;
    Panel8: TPanel;
    Label11: TLabel;
    ADOQ_absent_BOMnum: TFloatField;
    Label25: TLabel;
    Edit3: TEdit;
    Bit_Ser2: TBitBtn;
    Label2: TLabel;
    Bevel2: TBevel;
    Panel2: TPanel;
    DBNavigator1: TDBNavigator;
    AddBtn: TBitBtn;
    EdtBtn: TBitBtn;
    DelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    Panel9: TPanel;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    BitBtn4: TBitBtn;
    ADOQ_absent_BOMtemp_key: TStringField;
    DBLookup_order: TComboBox;
    Label8: TLabel;
    Editcloth: TEdit;
    adoq_temp: TADOQuery;
    ADOQ_absent_BOMclo_name: TStringField;
    DBE_mat_id: TEdit;
    DBE_matname: TEdit;
    DBE_custname: TEdit;
    DBE_costume: TEdit;
    Label_unit: TLabel;
    DBComBox_ordid: TComboBox;
    DBComBox_seq_name: TComboBox;
    DBE_num: TEdit;
    DS_material: TDataSource;
    ADOQ_material: TADOQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboBox_matypeChange(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure EdtBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure Bit_Ser2Click(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure DS_absent_BOMStateChange(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBLookup_orderKeyPress(Sender: TObject; var Key: Char);
    procedure DBLookup_orderChange(Sender: TObject);
    procedure DS_absent_BOMDataChange(Sender: TObject; Field: TField);
    procedure DBComBox_ordidChange(Sender: TObject);
    procedure DS_materialDataChange(Sender: TObject; Field: TField);
    procedure FormCreate(Sender: TObject);
    procedure DBComBox_ordidKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    log_id:integer;
    procedure refreshdb;
    procedure add_matype;
    procedure add_seqname;
    function operator_absBOM(ope_type:integer; ord_id,temp_key,mat_id:string;temp_num:real):boolean;
  public
    { Public declarations }
  end;

var
  Form_Absent_BOM: TForm_Absent_BOM;

implementation

uses DATA, sharevar, sharefun;

{$R *.dfm}

procedure TForm_Absent_BOM.add_matype;
begin
  with adoq_temp do
  begin
    close; sql.Clear;
    sql.Add('select matype_name from material_type');
    execsql; open;
    ComboBox_matype.Items.Clear;
    ComboBox_matype.Items.Add(' ');
    First;
    while not eof do
    begin
      ComboBox_matype.Items.Add(fieldvalues['matype_name']);
      next;
    end;
    close; sql.Clear;
    sql.Add('select ord_id from order_msg');
    execsql; open;
    DBComBox_ordid.Items.Clear;
    DBLookup_order.Items.clear;
    First;
    while not eof do
    begin
      DBLookup_order.Items.Add(fieldvalues['ord_id']);
      DBComBox_ordid.Items.Add(fieldvalues['ord_id']);
      next;
    end;
    close;
  end;
end;

procedure TForm_absent_bom.add_seqname;
begin
  with adoq_temp do
  begin
    close; sql.Clear;
    sql.Add('select seq_name from sequence_price where ord_id=:ord_id');
    parameters.ParamValues['ord_id']:=trim(DBComBox_ordid.Text);
    execsql; open; First;
    DBComBox_seq_name.Text:='';
    DBComBox_seq_name.Items.Clear;
    if recordcount=0 then
    begin
      msgErr(handle,'该订单下无工序,请先添加工序!');
      abort; exit;
    end;
    while not eof do
    begin
      DBComBox_seq_name.Items.Add(fieldvalues['seq_name']);
      next;
    end;
    close;
  end;
end;

function TForm_absent_bom.operator_absBOM(ope_type:integer; ord_id,temp_key,mat_id:string;temp_num:real):boolean;
begin
   result:=false;
   if ope_type=3 then msgerr(handle, '辅料需求表记录操作失败!(ope_type=3)');
   case ope_type of
   //辅料增加
   0:
    begin
      with adoq_temp do
      begin
        Close; SQL.Clear;
        SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
        Parameters.ParamValues['ord_id']:=ord_id;
        Parameters.ParamValues['temp_key']:=temp_key;
        Parameters.ParamValues['mat_id']:=mat_id;
        try
          Open;
        except
          msgerr(handle, '辅料需求表记录操作失败!');
          Close; exit;
        end;
      end;
      if adoq_temp.RecordCount>0 then
      begin
        MsgErr(handle,'该订单工序下已存在此辅料!');
        exit;
      end;
      with adoq_temp do
      begin
        append;
        fieldvalues['ord_id']:=ord_id;
        fieldvalues['temp_key']:=temp_key;
        fieldvalues['mat_id']:=mat_id;
        fieldvalues['num']:=temp_num;
        try
          post;
        except
          msgerr(handle, '辅料需求表记录添加失败!');
          Close; exit;
        end;
        log_id:=fieldvalues['log_id'];
      end;
      result:=true;
    end;
   //辅料修改
   1:
      with adoq_temp do
      begin
        Close; SQL.Clear;
        SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
        Parameters.ParamValues['ord_id']:=ord_id;
        Parameters.ParamValues['temp_key']:=temp_key;
        Parameters.ParamValues['mat_id']:=mat_id;
        try
          Open; if recordcount=0 then exit;
        except
          msgerr(handle, '辅料需求表记录操作失败!');
          Close; exit;
        end;
        edit;
        fieldvalues['num']:=temp_num;
        try
          post;
        except
          msgerr(handle, '辅料需求表记录修改失败!');
          Close; exit;
        end;
        log_id:=fieldvalues['log_id'];
        result:=true;
      end;

   //辅料删除 
   2:
      with adoq_temp do
      begin
        Close; SQL.Clear;
        SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
        Parameters.ParamValues['ord_id']:=ord_id;
        Parameters.ParamValues['temp_key']:=temp_key;
        Parameters.ParamValues['mat_id']:=mat_id;
        try
          Open; if recordcount=0 then exit;
        except
          msgerr(handle, '辅料需求表记录操作失败!');
          Close; exit;
        end;
        try
          adoq_temp.Delete;
        except
          MsgErr(handle,'数据删除失败!');
          exit;
        end;
        result:=true;
      end;
   end;
   adoq_temp.close;
end;

procedure TForm_absent_bom.refreshdb;
begin
  with adoq_material do
  begin
    close;
    sql.Strings[2]:='';
    open;
  end;
  with ADOQ_absent_BOM do
  begin
    close;
    execsql; open;
  end;
end;

procedure TForm_Absent_BOM.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  with ADOQ_absent_BOM do begin if active then close; end;
  with adoq_material do begin if active then close; end;
  action:=cafree;
end;

procedure TForm_Absent_BOM.ComboBox_matypeChange(Sender: TObject);
var
  mat_type: string;
begin
  mat_type:=trim(ComboBox_matype.Text);
  with ADOQ_material do
  begin
    close;
    if mat_type='' then
    begin
      sql.Strings[2]:='';
      open; exit;
    end;
    sql.Strings[2]:='and b.matype_name=:matype_name';
    parameters.ParamValues['matype_name']:=mat_type;
    open;
  end;
end;

procedure TForm_Absent_BOM.PageControl1Change(Sender: TObject);
begin
  if trim(DBLookup_order.Text)='' then exit;
  if not ADOQ_absent_BOM.Active then exit;
  if PageControl1.ActivePageIndex=0 then refreshdb;
  if PageControl1.ActivePageIndex=1 then
  begin
    with ADOQ_material do
    begin
      close;
      SQL.Strings[2]:='';
      open;
    end;
    with ADOQ_absent_BOM do
    begin
      if recordcount=0 then exit;
      DBE_mat_id.Clear; DBE_matname.clear;
      DBE_custname.Clear; DBE_costume.Clear;
      Editcloth.Clear; Label_unit.Caption:='';
      DBComBox_ordid.Text:=''; DBComBox_seq_name.Clear;
      DBE_num.clear;
      DBE_mat_id.text:=fieldvalues['mat_id'];
      DBE_matname.text:=fieldvalues['mat_name'];
      DBE_custname.text:=fieldvalues['cust_name'];
      DBE_costume.Text:=fieldvalues['costume_name'];
      Editcloth.text:=fieldvalues['clo_name'];
      Label_unit.Caption:=fieldvalues['unit'];
      DBComBox_ordid.Text:=fieldvalues['ord_id'];
      DBComBox_seq_name.text:=fieldvalues['seq_name'];
      DBE_num.Text:=floattostr(fieldvalues['num']);
      if ADOq_material.Active then ADOq_material.Locate('mat_id',fieldvalues['mat_id'],[]);
    end;
  end;
end;

procedure TForm_Absent_BOM.AddBtnClick(Sender: TObject);
begin
  if not ADOQ_absent_BOM.Active then exit;
  if ADOQ_absent_BOM.State in [dsinsert,dsedit] then exit;
  PageControl1.ActivePageIndex:=1;
  ADOQ_absent_BOM.Append;
  if not ADOQ_material.Active then ADOQ_material.Open;
  if trim(DBLookup_order.Text)<>'' then
  begin
    DBComBox_ordid.ItemIndex:=DBLookup_order.ItemIndex;
    DBComBox_ordidChange(self);
  end;
  DBE_num.Clear;
end;

procedure TForm_Absent_BOM.EdtBtnClick(Sender: TObject);
begin
  if not ADOQ_absent_BOM.Active then exit;
  with ADOQ_absent_BOM do
  begin
    if State in [dsinsert,dsedit] then exit;
    if RecordCount<1 then exit;
  end;
  PageControl1.ActivePageIndex:=1;
  ADOQ_absent_BOM.Edit;
end;

procedure TForm_Absent_BOM.CancelBtnClick(Sender: TObject);
begin
  if not ADOQ_absent_BOM.Active then exit;
  ADOQ_absent_BOM.cancel;
end;

procedure TForm_Absent_BOM.DelBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname, temp_key, temp_matid, temp_matname: string;

⌨️ 快捷键说明

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