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

📄 caicangdan.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
字号:
unit CaiCangDan;

interface

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

type
  TFrmCaiCangDan = class(TForm)
    DataSource: TDataSource;
    AddBtn: TBitBtn;
    EdtBtn: TBitBtn;
    DelBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    ADOQuery1: TADOQuery;
    ADOQtmp: TADOQuery;
    ADOQuery1log_id: TAutoIncField;
    ADOQuery1ord_id: TStringField;
    ADOQuery1bed_id: TIntegerField;
    ADOQuery1zh_id: TIntegerField;
    ADOQuery1size_name: TStringField;
    ADOQuery1color: TStringField;
    ADOQuery1num: TIntegerField;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    SpeedButton1: TSpeedButton;
    DBComboBox1: TDBComboBox;
    DBComboBox2: TDBComboBox;
    Label1: TLabel;
    ComboBox1: TComboBox;
    Bevel1: TBevel;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    Bevel2: TBevel;
    Panel1: TPanel;
    DBGrid: TDBGrid;
    Panel2: TPanel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Btnlocate: TBitBtn;
    edt_ccNo: TEdit;
    edt_zhNO: TEdit;
    ComboBox_size: TComboBox;
    procedure FormShow(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure EdtBtnClick(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DataSourceStateChange(Sender: TObject);
    procedure ADOQuery1AfterInsert(DataSet: TDataSet);
    procedure ADOQuery1BeforePost(DataSet: TDataSet);
    procedure SpeedButton1Click(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Change(Sender: TObject);
    procedure ADOQuery1BeforeInsert(DataSet: TDataSet);
    procedure BtnlocateClick(Sender: TObject);
  private
    { Private declarations }
    total_bed_id, total_zhi_id, total_num,
    size_index, total_color:integer;
    procedure change_control;
  public
    { Public declarations }
  end;

var
  FrmCaiCangDan: TFrmCaiCangDan;

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

procedure tfrmcaicangdan.change_control;
begin
  if (not(ADOQuery1.Active)) or (ADOQuery1.RecordCount<0) then
  begin
    edt_ccNo.ReadOnly:=true;
    edt_ccno.ParentColor:=true;
    edt_zhNO.ReadOnly:=true;
    edt_zhno.ParentColor:=true;
    combobox_size.ParentColor:=true;
    ComboBox_size.Enabled:=false;
    Btnlocate.Enabled:=false;
  end;

  if (ADOQuery1.Active) and (ADOQuery1.RecordCount>0) then
  begin
    edt_ccNo.ReadOnly:=false;
    edt_ccno.ParentColor:=false;
    edt_ccno.Color:=clwindow;
    edt_zhNO.ReadOnly:=false;
    edt_zhno.ParentColor:=false;
    edt_zhno.Color:=clwindow;
    ComboBox_size.Enabled:=true;
    combobox_size.ParentColor:=false;
    combobox_size.Color:=clwindow;
    Btnlocate.Enabled:=true;
  end
end;

procedure TFrmCaiCangDan.FormShow(Sender: TObject);
begin
  //添加订单号
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select ord_id from order_msg order by ord_id');
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前无订单信息,请先定义!');
        exit;
    end;
    first;
    while not eof do
    begin
        ComboBox1.Items.Add(fieldvalues['ord_id']);
        next;
    end;
  end;

  //添加颜色
  DBComboBox1.Clear;
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select color from color order by id');
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前无颜色信息,请先定义!');
        exit;
    end;
    DBComboBox1.Items.Add(' ');
    first;
    while not eof do
    begin
        DBComboBox1.Items.Add(fieldvalues['color']);
        next;
    end;
  end; 
end;

procedure TFrmCaiCangDan.SaveBtnClick(Sender: TObject);
begin
     if not ADOQuery1.Active then exit;
     ADOQuery1.Post;
end;

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

procedure TFrmCaiCangDan.EdtBtnClick(Sender: TObject);
begin
  if not ADOQuery1.Active then exit;  ADOQuery1.Edit;
  DBEdit6.SetFocus; 
end;

procedure TFrmCaiCangDan.AddBtnClick(Sender: TObject);
begin
  if not ADOQuery1.Active then exit;  
  ADOQuery1.Append;
  DBEdit2.SetFocus;
end;

procedure TFrmCaiCangDan.DelBtnClick(Sender: TObject);
begin    
   if not ADOQuery1.Active then exit;
   if ADOQuery1.RecordCount = 0 then exit;
    //判断当前物品类别在物品表中是否用到
    if MsgQst(handle,'确定删除当前记录码?') =IDNO then  exit;
    try
        ADOQuery1.Delete;
    except
        abort;
        MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
    end;
end;

procedure TFrmCaiCangDan.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=Cafree;
end;

procedure TFrmCaiCangDan.DataSourceStateChange(Sender: TObject);
begin
  if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
  Begin
        AddBtn.Enabled :=False;
        EdtBtn.Enabled :=False;
        DelBtn.Enabled :=False;
        CancelBtn.Enabled :=True;
        SaveBtn.Enabled :=True;
        ExtBtn.Enabled :=False;
        DBEdit2.ReadOnly:=false;
        DBEdit3.ReadOnly:=false;
        DBComboBox2.ReadOnly:=false;
        DBComboBox1.ReadOnly:=false;
        DBEdit6.ReadOnly:=false;
        DBGrid.Enabled:=false;
  end;

  if (Sender as TDataSource).DataSet.State in [dsedit] then
  begin
    DBEdit2.ReadOnly:=true;
    DBEdit3.ReadOnly:=true;
    DBComboBox2.ReadOnly:=true;
    DBEdit2.ParentColor:=true;
    DBEdit3.ParentColor:=true;
    DBComboBox2.ParentColor:=true;
  end;
  if (Sender as TDataSource).DataSet.State in [dsinsert] then
  begin
    DBEdit2.ReadOnly:=false;
    DBEdit3.ReadOnly:=false;
    DBComboBox2.ReadOnly:=false;
    DBEdit2.ParentColor:=false;
    DBEdit3.ParentColor:=false;
    DBComboBox2.ParentColor:=false;
    DBEdit2.Color:=clwindow;
    DBEdit3.Color:=clwindow;
    DBComboBox2.Color:=clwindow;
  end;

  if (Sender as TDataSource).DataSet.State in [dsBrowse] then
  Begin
        AddBtn.Enabled :=True;
        EdtBtn.Enabled :=True;
        DelBtn.Enabled :=True;
        CancelBtn.Enabled :=False;
        SaveBtn.Enabled :=False;
        ExtBtn.Enabled :=True;
        DBEdit2.ReadOnly:=true;
        DBEdit3.ReadOnly:=true;
        DBComboBox2.ReadOnly:=true;
        DBComboBox1.ReadOnly:=true;
        DBEdit6.ReadOnly:=true;
        DBGrid.Enabled:=true;
        DBEdit2.ParentColor:=false;
        DBEdit3.ParentColor:=false;
        DBComboBox2.ParentColor:=false;
        DBEdit2.Color:=clwindow;
        DBEdit3.Color:=clwindow;
        DBComboBox2.Color:=clwindow;
  end;
end;

procedure TFrmCaiCangDan.ADOQuery1AfterInsert(DataSet: TDataSet);
begin
   DataSet.FieldValues['ord_id']:=trim(ComboBox1.Text);
   if total_bed_id>0 then
   Dataset.FieldValues['bed_id']:=total_bed_id
   else Dataset.FieldValues['bed_id']:=0;
   if total_zhi_id>0 then
   Dataset.FieldValues['zh_id']:=total_zhi_id
   else Dataset.FieldValues['zh_id']:=0;
   if not (size_index<0) then
   begin
      DBComboBox2.ItemIndex:=size_index;
      DBComboBox2.Text:=DBComboBox2.Items.Names[size_index];
      Dataset.FieldValues['size_name']:=DBComboBox2.text;
   end
   else Dataset.FieldValues['size_name']:='';
   if not(total_color<0) then
   begin
      DBComboBox1.ItemIndex:=total_color;
      DBComboBox1.Text:=DBComboBox1.Items.Names[total_color];
      Dataset.FieldValues['color']:=DBComboBox1.text;
   end
   else Dataset.FieldValues['color']:='';
   if total_num>0 then
   Dataset.FieldValues['num']:=total_num
   else Dataset.FieldValues['num']:=0;
end;

procedure TFrmCaiCangDan.ADOQuery1BeforePost(DataSet: TDataSet);
var tmpstr:string;
begin
      if not (Dataset.State in[dsedit,dsinsert]) then exit;
      if trim(Dataset.FieldValues['ord_id'])='' then
      begin
                MsgErr(handle,'订单批号不能为空!');ComboBox1.SetFocus;abort; exit;
      end;
      if Dataset.FieldValues['bed_id']<=0 then
      begin
                MsgErr(handle,'指定裁床号!');DBEdit2.SetFocus;abort; exit;
      end;
      if Dataset.FieldValues['zh_id']<=0 then
      begin
                MsgErr(handle,'指定扎号!');DBEdit3.SetFocus;abort; exit;
      end;
      if (Dataset.FieldValues['size_name'])='' then
      begin
                MsgOK(handle,'请指定规格!');DBComboBox2.SetFocus;abort; exit;
      end;
      if trim(Dataset.FieldValues['color'])='' then
      begin
                MsgOK(handle,'请指定布料颜色!'); DBComboBox1.SetFocus;abort; exit;
      end;
      if Dataset.FieldValues['num']<=0 then
      begin
                MsgOK(handle,'请指定件数!');DBEdit6.SetFocus;abort; exit;
      end;
      //不能存在1个以上完全相同的编号
      tmpstr:=Dataset.FieldValues['ord_id']+'_';
      tmpstr:=tmpstr+inttostr(Dataset.FieldValues['bed_id'])+'_';
      tmpstr:=tmpstr+inttostr(Dataset.FieldValues['zh_id'])+'_';
      tmpstr:=tmpstr+Dataset.FieldValues['size_name'];
      if (Dataset.State in [dsinsert]) then 
      with ADOQtmp do
      begin
          close;sql.clear;
          sql.add('select * from v_caicangdan where id=:v_id');
          parameters.ParamValues['v_id']:=tmpstr;
          open;
          if recordcount>0 then
          begin
              MsgErr(handle,'当前裁床信息在当前数据内已存在,请重新定义!');
              close; abort; exit;
          end;
      end;
      //检测新增或修改的载床数量是否同先前相同
      with adoqtmp do
      begin
        close;sql.clear;
        sql.add('select * from v_caicangdan where ord_id=:v_ord_id and bed_id=:V_bed_id and zh_id=:V_zh_id');
        parameters.ParamValues['v_ord_id']:=Dataset.FieldValues['ord_id'];
        parameters.ParamValues['V_bed_id']:=Dataset.FieldValues['bed_id'];
        parameters.ParamValues['V_zh_id']:=Dataset.FieldValues['zh_id'];
        open;
        if recordcount>0 then
        begin
          if Dataset.FieldValues['num']<>ADOQtmp.fieldvalues['num'] then
          begin
            if Msgqst(handle,'当前裁床信息的件数与已定义的相同裁床的件数不一致,还要继续吗?')=idno then
            begin
              CancelBtnClick(self);
              close; abort; exit;
            end;
          end;
        end;
      end;
end;

procedure TFrmCaiCangDan.SpeedButton1Click(Sender: TObject);
begin
FrmColorSetup:=TFrmColorSetup.create(self);
FrmColorSetup.showmodal;
  //添加颜色
  DBComboBox1.Clear;
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select color from color order by id');
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前无颜色信息,请先定义!');
        exit;
    end;
    DBComboBox1.Items.Add(' ');
    first;
    while not eof do
    begin
        DBComboBox1.Items.Add(fieldvalues['color']);
        next;
    end;
  end;
end;

procedure TFrmCaiCangDan.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if trim(ComboBox1.Text)='' then exit;
  if key<>chr(13) then exit;
  ADOQuery1.Close;

  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select ord_id,costume_name,cust_name,clo_name from order_msg,customer,clothing where order_msg.cust_id=customer.cust_id and');
    sql.add(' order_msg.clo_id=clothing.clo_id and ord_id=:v_ord_id');
    Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前不存在该订单批号,请重新选择!');
        change_control; exit;
    end;
    edit1.Text:=fieldvalues['cust_name'];
    edit2.Text:=fieldvalues['costume_name'];
    edit3.Text:=fieldvalues['clo_name'];
  end;
  
  with adoqtmp do
  begin
      close;sql.clear;
      sql.add('select * from sequence_price where ord_id=:v_ord_id');
      Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
      open;
      if recordcount=0 then
      begin
          MsgErr(handle,'当前订单没有定义工序,请先定义!');
          close;
          change_control; exit;
      end;
  end;

  with ADOQuery1 do
  begin
    close;sql.clear;
    sql.Add('select * from caicangdan where ord_id = :v_ord_id');
    Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
    try
        ADOQuery1.open;
    except
        MsgErr(handle,'打开数据库表失败[caicangdan]!');
        change_control; exit;
    end;
  end;
  ADOQuery1.Last;
  change_control;
end;

procedure TFrmCaiCangDan.ComboBox1Change(Sender: TObject);
begin
  ComboBox1.Text:=trim(ComboBox1.Text);
  Edit1.Clear; edit2.Clear; edit3.Clear;
end;

//在新增得到对应的已存在的裁床信息
procedure TFrmCaiCangDan.ADOQuery1BeforeInsert(DataSet: TDataSet);
begin
  with dataset do
  begin
    if dataset.RecordCount=0 then exit;
    total_bed_id:=fieldvalues['bed_id'];
    total_zhi_id:=fieldvalues['zh_id'];
    total_num:=fieldvalues['num'];
    if DBComboBox2.ItemIndex<5 then
    size_index:=DBComboBox2.ItemIndex+1;
    total_color:=DBComboBox1.ItemIndex;
  end;
end;

procedure TFrmCaiCangDan.BtnlocateClick(Sender: TObject);
var
  ccno, zhno:integer;
  size_name:string;
begin
  if not ADOQuery1.Active then exit;
  if ADOQuery1.RecordCount=0 then exit;
  if trim(edt_ccNo.Text)='' then
  begin
    Msgok(handle,'请输入裁床号!');
    edt_ccno.SetFocus; exit;
  end;
  try
    ccno:=strtoint(trim(edt_ccNo.Text));
  except
    MsgERR(handle,'请输入正确的裁床号!');
    edt_ccno.SetFocus; exit;
  end;
  
  if trim(edt_zhno.Text)<>'' then
  begin
    try
      zhno:=strtoint(trim(edt_zhNo.Text));
    except
      MsgERR(handle,'请输入正确的扎号!');
      edt_zhno.SetFocus; exit;
    end;
    if trim(ComboBox_size.Text)='' then
    begin
      if not ADOQuery1.Locate('bed_id;zh_id', VarArrayOf([ccno,zhno]), [])
      then msgok(handle,'没找到对应条件的裁床信息!');
      abort; exit;
    end;
  end;

  if trim(ComboBox_size.Text)<>'' then
  begin
    size_name:=trim(ComboBox_size.Text);
    if not ADOQuery1.Locate('bed_id;zh_id;size_name', VarArrayOf([ccno,zhno,size_name]), [])
    then msgok(handle,'没找到对应条件的裁床信息!');
    abort; exit;
  end;
  if not ADOQuery1.Locate('bed_id', ccno, []) then msgok(handle,'没找到对应条件的裁床信息!');
end;

end.

⌨️ 快捷键说明

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