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

📄 sequence_price.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, StdCtrls, Mask, Buttons, Grids, DBGrids, ComCtrls, DB,
  ADODB, ExtCtrls, ToolWin, ImgList, RpCon, RpConDS, RpBase, RpSystem,
  RpDefine, RpRave;

type
  TForm_seq_price = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGrid1: TDBGrid;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Label9: TLabel;
    Label10: TLabel;
    Label19: TLabel;
    DBEdit1: TDBEdit;
    DBE_seq_name: TDBEdit;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label12: TLabel;
    Label15: TLabel;
    Label2: TLabel;
    Label1: TLabel;
    Panel2: TPanel;
    AddBtn: TBitBtn;
    EdtBtn: TBitBtn;
    DelBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    Label18: TLabel;
    Label7: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ADOQ_order_msg: TADOQuery;
    DS_price: TDataSource;
    ADOT_price: TADOTable;
    StringField3: TStringField;
    StringField4: TStringField;
    StringField6: TStringField;
    FloatField1: TFloatField;
    DBLookup_ordid: TDBComboBox;
    Label4: TLabel;
    Panel6: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    DBE_seqid: TDBEdit;
    Panel7: TPanel;
    Label11: TLabel;
    Panel8: TPanel;
    adoq_temp: TADOQuery;
    DBLookupComboBox1: TComboBox;
    ADOT_pricetemp_key: TStringField;
    ADOT_priceseq_id: TStringField;
    Label8: TLabel;
    Editcustmer: TEdit;
    Editprice: TEdit;
    Editname: TEdit;
    Editnum: TEdit;
    Editmoney: TEdit;
    Editcloth: TEdit;
    ADOQ_order_msgcust_name: TStringField;
    ADOQ_order_msgclo_name: TStringField;
    ADOQ_order_msgcostume_name: TStringField;
    ADOQ_order_msgnum: TIntegerField;
    ADOQ_order_msgunit_price: TBCDField;
    ADOQ_order_msgmoney: TBCDField;
    ADOT_priceord_id: TStringField;
    ADOQ_order_msgord_id: TStringField;
    PrtBtn: TBitBtn;
    RvProject1: TRvProject;
    RvSystem1: TRvSystem;
    Rv_Sequence_price: TRvDataSetConnection;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AddBtnClick(Sender: TObject);
    procedure EdtBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure PageControl1Change(Sender: TObject);
    procedure DBLookup_ordidClick(Sender: TObject);
    procedure DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure DBLookupComboBox1Change(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DS_priceStateChange(Sender: TObject);
    procedure ADOT_priceAfterInsert(DataSet: TDataSet);
    procedure ADOT_priceAfterEdit(DataSet: TDataSet);
    procedure DBLookup_ordidChange(Sender: TObject);
    procedure PrtBtnClick(Sender: TObject);
  private
    { Private declarations }
    edit_seqname: string;
    edit_seqprice:real;
    procedure refreshdb;
    procedure add_ordid_item;
    procedure account_unitprice;
    function Get_seqid(ord_id: string; var seq_id:string):boolean;
  public
    { Public declarations }
  end;

var
  Form_seq_price: TForm_seq_price;

implementation
uses sharevar, sharefun, data;

{$R *.dfm}

//添加订单批号于 [DBLookup_ordid]下拉框内
procedure TForm_seq_price.add_ordid_item;
begin
  with adoq_order_msg do
  begin
    close; open;
    DBLookup_ordid.Items.Clear;
    DBLookupComboBox1.Items.Clear;
    close; open; First;
    while not eof do
    begin
      DBLookup_ordid.Items.Add(fieldvalues['ord_id']);
      DBLookupComboBox1.Items.Add(fieldvalues['ord_id']);
      next;
    end;
  end;
end;

//根据订单批号及原有该订单下的工序编号得到新增的工序编号(如:sequence_1、sequence_2...)
function TForm_seq_price.Get_seqid(ord_id: string; var seq_id:string):boolean;
var
rec_cou, tmpid, i: integer;
begin
  result:=false;
  with adoq_temp do
  begin
    close; sql.Clear;
    sql.Add('select seq_id from sequence_price where ord_id=:ord_id order by seq_id asc');
    Parameters.ParamValues['ord_id']:=ord_id;
    try
      execsql; open;
      rec_cou:=recordcount;
      if Rec_Cou<1 then
      begin
        seq_id:='sequence_1';
        result:=true;
        Close; exit;
      end;
      tmpID:=1; 
      for i:=0 to Rec_Cou-1 do
      begin
        if not locate('seq_id','sequence_'+inttostr(tmpID),[loCaseInsensitive]) then
        begin
          seq_id:='sequence_'+inttostr(tmpid);
          result:=true; Close; exit;
        end;
        tmpID:=succ(tmpID);
      end;
    except
      exit;
    end;
  end;
  seq_id:='sequence_'+inttostr(tmpid);
  result:=true;
end;

//如果工序发料表(OutBOM_Log)中无对应的工序编号则修改表(添加刚刚新增的工序编号列)
{
function TForm_seq_price.check_Outbom_table(seq_id: string; var comp_bool: boolean):boolean;
label goto_line;
var
adoq_temp, adoq_add:Tadoquery;
i, fld_cou: integer;
fld_name: string;
begin
  result:=false;
  with adoq_temp do
  begin
    adoq_temp:=Tadoquery.Create(nil);
    adoq_temp.Connection:=datamod.ADOCon;
    close; sql.Clear;
    sql.Add('select TOP 0 * from outbom_log');
    execsql; open;
    fld_cou:=adoq_temp.FieldCount;
    comp_bool:=true;
    for I:=7 to fld_cou-1 do
    begin
      fld_name:=adoq_temp.Fields.Fields[I].FieldName;
      if seq_id=fld_name then begin comp_bool:=false; close; free; goto goto_line end;
    end;
    close; free;
  end;
  
  goto_line:
  if not comp_bool then exit;
  with adoq_add do
  begin
    adoq_add:=Tadoquery.Create(nil);
    Connection:=datamod.ADOCon;
    close; sql.Clear;
    sql.Add('Alter table outbom_log add '+seq_id+' int null references employee(empid)');
    try
      execsql;
    except
      result:=false; close; free; exit;
    end;
    result:=true; close; free; exit; 
  end;
end;
}

procedure TForm_seq_price.refreshdb;
begin
  with ADOQ_order_msg do begin close; open; end;
  with ADOT_price do begin close; open; end;
end;

procedure TForm_seq_price.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  try
      if ADOT_price.Active then ADOT_price.Close;
      if ADOQ_order_msg.Active then ADOQ_order_msg.Close;
  except
      MsgErr(handle,'关闭工序及工价信息数据库失败!');
  end;
  action:=cafree;
end;

//[ADOT_seq_price]表添加记录
procedure TForm_seq_price.AddBtnClick(Sender: TObject);
begin
  if not ADOT_price.Active then exit;
  if ADOT_price.State in [dsinsert,dsedit] then exit;
  PageControl1.ActivePageIndex:=1;
  ADOT_price.Append;
end;

//[ADOT_seq_price]表数据修改
procedure TForm_seq_price.EdtBtnClick(Sender: TObject);
begin
  if not ADOT_price.Active then exit;
  if ADOT_price.State in [dsinsert,dsedit] then exit;
  if ADOT_price.RecordCount<1 then exit;
  PageControl1.ActivePageIndex:=1;
  ADOT_price.edit;
  DBEdit1.SetFocus;
end;

//[ADOT_seq_price]表删除数据
procedure TForm_seq_price.DelBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname: string;
begin
  if not ADOT_price.Active then exit;
  if ADOT_price.RecordCount=0 then exit;
  with ADOT_price do
  begin
    if State in [dsinsert,dsedit] then exit;    
    temp_ordid:=fieldvalues['ord_id'];
    temp_seqname:=fieldvalues['seq_name'];
    if MsgQst(handle,'确定删除订单批号  ['+temp_ordid+']  下的  ['+temp_seqname+']  工序吗?') =IDNO then  exit;
    try
      delete;
    except
      MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
      exit;
    end;
  end;
end;

//[ADOT_seq_price]表保存记录
procedure TForm_seq_price.SaveBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname, temp_seqid, info,
temp_str1, temp_str2, temp_key: string;
begin
  if not ADOT_price.Active then exit;
  with ADOT_price do
  begin
    if not (State in [dsinsert,dsedit]) then exit;
    temp_ordid:=trim(DBLookup_ordid.Text);
    temp_seqname:=trim(DBE_seq_name.Text);
    temp_seqid:=trim(DBE_seqid.Text);
    
    if (temp_ordid='') then
    begin
      showmessage('订单批号不能为空!!!');
      DBLookup_ordid.SetFocus;
      exit;                                    
    end;

    if temp_seqid='' then
    begin
      showmessage('工序编号不能为空,请重新选择订单批号以生成工序编号!');
      DBLookup_ordid.SetFocus;
      exit;
    end;

    if temp_seqname='' then
    begin
      showmessage('工序名称不能为空!');
      DBE_seq_name.SetFocus;
      exit;
    end;
    
    if State in [dsinsert] then
    begin
      fieldvalues['seq_id']:=temp_seqid;
      if find_record('sequence_price','ord_id','seq_name',temp_ordid,temp_seqname,info) then
      begin
        MsgOK(handle,'该订单批号下已存在该工序名称,请重新输入!');
        DBE_seq_name.SetFocus;
        exit;
      end;
      //得到临时的PrimaryKey--temp_key
      temp_str1:=temp_ordid;
      temp_str2:=copy(temp_seqid,9,4);
      temp_key:=temp_str1+temp_str2;
      FieldValues['temp_key']:=temp_key;
    end;//[dsinsert].End

    if State in [dsedit] then
    begin
      if find_record('outbom_log','temp_key','tjflag',fieldvalues['temp_key'],'1',info) then
      begin
        if (edit_seqprice<>0) and (FieldValues['seq_price']<>edit_seqprice) then
        begin
          temp_str1:='该订单批号下的工序 ['+edit_seqname+'] 的工价在工序发料表中已经用到,';
          temp_str1:=temp_str1+#13+#13+'     且已统计到个人收入表中,还要修改吗?';
          if MsgQst(handle,temp_str1)=idno then
          begin;
            CancelBtnClick(CancelBtn);
            exit;

⌨️ 快捷键说明

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