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

📄 ubsd_lr.pas

📁 工廠倉庫管理系統
💻 PAS
字号:
unit ubsd_lr;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzButton, ExtCtrls, StdCtrls, DBCtrls, Mask, ComCtrls, RzDTP,
  Grids, DBGridEh, RzTabs, Menus, DB, ADODB, Buttons, FR_DSet, FR_DBSet,
  FR_Class, RzDBDTP;

type
  Tfrmbsd_lr = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn3: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    RzBitBtn6: TRzBitBtn;
    RzBitBtn7: TRzBitBtn;
    dtp1: TRzDateTimePicker;
    dtp2: TRzDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    DBEdit1: TDBEdit;
    DBEdit7: TDBEdit;
    DBMemo1: TDBMemo;
    Label10: TLabel;
    DBEdit8: TDBEdit;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    ADOQuery3: TADOQuery;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    DBGridEh1: TDBGridEh;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    RzBitBtn8: TRzBitBtn;
    DBNavigator1: TDBNavigator;
    GroupBox1: TGroupBox;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    RzBitBtn9: TRzBitBtn;
    RzBitBtn10: TRzBitBtn;
    ADOQuery4: TADOQuery;
    N2: TMenuItem;
    frReport1: TfrReport;
    frDBDataSet1: TfrDBDataSet;
    frDBDataSet2: TfrDBDataSet;
    ADOQuery5: TADOQuery;
    Label3: TLabel;
    Edit1: TEdit;
    DBComboBox1: TDBComboBox;
    RzBitBtn4: TRzBitBtn;
    DBEdit2: TDBEdit;
    dtprq: TRzDBDateTimePicker;
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure csh();
    procedure DBEdit1Change(Sender: TObject);
    procedure dtp1Exit(Sender: TObject);
    procedure dtp2Exit(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure RzBitBtn8Click(Sender: TObject);
    procedure TabSheet2Enter(Sender: TObject);
    procedure RzBitBtn9Click(Sender: TObject);
    procedure RzBitBtn10Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure DBGridEh1DblClick(Sender: TObject);
    procedure RzBitBtn7Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RzBitBtn5Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure RzBitBtn6Click(Sender: TObject);
    procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
    procedure RzBitBtn4Click(Sender: TObject);
    procedure DBGridEh1TitleClick(Column: TColumnEh);
    procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure isactive();
  private
    { Private declarations }
    isedit:boolean;
  public
    { Public declarations }
  end;

var
  frmbsd_lr: Tfrmbsd_lr;

implementation
uses uconst,ufunction,udm1,ucx,uwllb;
{$R *.dfm}
procedure tfrmbsd_lr.isactive();
begin
  if isedit then
  begin
       dbcombobox1.ReadOnly:=false;
       dbmemo1.ReadOnly:=false;
       dtprq.ReadOnly:=false;
  end else begin
       dbcombobox1.ReadOnly:=true;
       dbmemo1.ReadOnly:=true;
       dtprq.ReadOnly:=true;
  end;
end;
procedure tfrmbsd_lr.csh();
begin
if adoquery2.Active then adoquery1.Close;
adoquery2.SQL.Clear;
strsql:='select bsdh as 报损单号,ylbm as 部门,djr as 登记人,'+
'srrq as 日期,bz as 备注,bsrq as 报损日期 from bsd_main where'+
' srrq>=:rq1 and srrq<=:rq2 order by bsdh desc';
adoquery2.SQL.add(strsql);
adoquery2.Parameters.ParamByName('rq1').Value:=dtp1.Date;
adoquery2.Parameters.ParamByName('rq2').Value:=dtp2.Date;
adoquery2.Open;

end;
procedure Tfrmbsd_lr.RzBitBtn1Click(Sender: TObject);

begin
if not qxjc(userid,'bsd_add') then exit;
adoquery2.Append;
isedit:=true;
isactive;
RzBitBtn1.Enabled:=false;
RzBitBtn2.Enabled:=false;
RzBitBtn3.Enabled:=true;
dbedit7.Text:=username;
dbedit8.Text:=datetostr(date);
dbedit2.Text:=datetostr(date);
dtprq.Date:=date;
DBEdit7.ReadOnly:=false;
dbcombobox1.ReadOnly:=false;
DBEdit8.ReadOnly:=false;
dbmemo1.ReadOnly:=false;

end;

procedure Tfrmbsd_lr.RzBitBtn2Click(Sender: TObject);
begin
if adoquery2.Recordset.EOF and adoquery2.Recordset.BOF then exit;
if not qxjc(userid,'bsd_edit') and (username<>trim(dbedit7.Text)) then exit;
adoquery2.Edit;
isedit:=true;
isactive;
dbedit7.Text:=username;
dbedit8.Text:=datetostr(date);
RzBitBtn1.Enabled:=false;
RzBitBtn3.Enabled:=true;
DBEdit7.ReadOnly:=false;
dbcombobox1.ReadOnly:=false;
DBEdit8.ReadOnly:=false;
dbmemo1.ReadOnly:=false;
end;

procedure Tfrmbsd_lr.FormCreate(Sender: TObject);
begin
dtp1.Date:=date-30;
dtp2.Date:=date;
adoquery1.Connection:=dm1.ADOConnection1;
adoquery2.Connection:=dm1.ADOConnection1;
adoquery3.Connection:=dm1.ADOConnection1;
adoquery4.Connection:=dm1.ADOConnection1;
adoquery5.Connection:=dm1.ADOConnection1;
strsql:='select classname from department order by classname asc';
adoexect(adoquery3,strsql);
if not(adoquery3.Recordset.EOF and adoquery3.Recordset.BOF) then
  begin
       adoquery3.First;
       dbcombobox1.Items.Clear;
       while not adoquery3.Eof do
       begin
       dbcombobox1.Items.Add(trim(adoquery3.fieldbyname('classname').AsString));
       adoquery3.Next;
       end;
  end;
adoquery3.Close;
strsql:='select * from view_bsd where 报损单号='+''''+trim(dbedit1.text)+'''';
adoexect(adoquery1,strsql);
csh;
end;

procedure Tfrmbsd_lr.DBEdit1Change(Sender: TObject);
begin
if trim(dbedit1.Text)='' then
   begin
   adoquery1.Close;
   exit;
   end;
strsql:='select * from view_bsd where 报损单号='+''''+trim(dbedit1.Text)+'''';
adoexect(adoquery1,strsql);

end;

procedure Tfrmbsd_lr.dtp1Exit(Sender: TObject);
begin
csh;
end;

procedure Tfrmbsd_lr.dtp2Exit(Sender: TObject);
begin
csh;
end;

procedure Tfrmbsd_lr.RzBitBtn3Click(Sender: TObject);
var
qz:string;
begin
IF TRIM(dbcombobox1.Text)='' then
   begin
   showmessage('报损部门不能为空!');
   dbcombobox1.SetFocus;
   exit;
   end;
if adoquery2.State in[dsinsert] then
   begin
   qz:='BSDH'+formatdatetime('yy',now)+
   formatdatetime('mm',now)+formatdatetime('dd',date);
   strsql:='select * from bsd_main where bsdh like'+''''+qz+'%'+''''+'order by bsdh asc';
   adoexect(adoquery3,strsql);
   dbedit1.Text:=creatdh(adoquery3,11,qz);
   end;
adoquery1.Close;
adoquery1.Open;
adoquery2.Post;
isedit:=false;
isactive;
RzBitBtn1.Enabled:=true;
RzBitBtn2.Enabled:=true;
RzBitBtn3.Enabled:=false;
DBEdit7.ReadOnly:=true;
DBEdit8.ReadOnly:=true;
dbcombobox1.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
end;

procedure Tfrmbsd_lr.RzBitBtn8Click(Sender: TObject);
begin
adoquery2.CancelUpdates;
isedit:=false;
isactive;
RzBitBtn1.Enabled:=true;
RzBitBtn3.Enabled:=false;
DBEdit7.ReadOnly:=true;
dbcombobox1.ReadOnly:=true;
DBEdit8.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
end;

procedure Tfrmbsd_lr.TabSheet2Enter(Sender: TObject);
begin
sl:=0;
if adoquery1.Recordset.EOF and adoquery1.Recordset.BOF then exit;
edit1.Text:=adoquery1.fieldbyname('数量').AsString;
edit1.SetFocus;
end;

procedure Tfrmbsd_lr.RzBitBtn9Click(Sender: TObject);
begin
try
   strsql:='select * from bsd_detail where bsdh='+''''+trim(adoquery1.fieldbyname('报损单号').AsString)+''''+
   'and wldm='+''''+trim(adoquery1.fieldbyname('物料代码').AsString)+'''';
   adoexect(adoquery3,strsql);
   adoquery3.Edit;
   adoquery3.FieldByName('sl').Value:=strtofloat(edit1.Text);
   adoquery3.Post;
except
   showmessage('更新数据库失败');
end;
adoquery1.Close;
adoquery1.Open;
RzPageControl1.ActivePageIndex:=0;
end;

procedure Tfrmbsd_lr.RzBitBtn10Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=0;
end;

procedure Tfrmbsd_lr.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9',#46,#8] ) then
    key:=#0;
end;

procedure Tfrmbsd_lr.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9',#46,#8] ) then
    key:=#0;
end;

procedure Tfrmbsd_lr.DBGridEh1DblClick(Sender: TObject);
begin
if adoquery1.Recordset.EOF and adoquery1.Recordset.BOF then exit;
RzPageControl1.ActivePageIndex:=1;
end;

procedure Tfrmbsd_lr.RzBitBtn7Click(Sender: TObject);
begin
close;
end;

procedure Tfrmbsd_lr.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (adoquery2.State in[dsinsert]) or (adoquery2.State in[dsedit]) then
   begin
   if messagebox(handle,'该单尚在编辑状态,是否放弃编辑?','询问',mb_yesno+mb_iconquestion)=idyes then
      begin
      RzBitBtn3Click(self);
      end else begin
      RzBitBtn8Click(self);
      end;
   end;
frReport1.Free;
action:=cafree;
end;

procedure Tfrmbsd_lr.RzBitBtn5Click(Sender: TObject);
begin
frmcx:=tfrmcx.Create(self);
frmcx.adocx:=adoquery2;
frmcx.ShowModal;
adoquery2:=frmcx.adocx;
ADOquery2.Requery();
end;

procedure Tfrmbsd_lr.N1Click(Sender: TObject);
begin
if not qxjc(userid,'bsd_edit') and (username<>trim(dbedit7.Text)) then exit;
strsql:='delete from bsd_detail where bsdh='+''''+trim(adoquery1.fieldbyname('报损单号').AsString)+
''''+'and wldm='+''''+trim(adoquery1.fieldbyname('物料代码').AsString)+'''';
adodel(adoquery3,strsql);
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
end;

procedure Tfrmbsd_lr.N2Click(Sender: TObject);
var
a:string;
begin
if not qxjc(userid,'bsd_edit') and (username<>trim(dbedit7.Text)) then exit;
if adoquery2.Recordset.eof and adoquery2.Recordset.BOF then exit;
if (adoquery2.State in[dsedit]) or (adoquery2.State in[dsinsert]) then
    begin
    showmessage('盘点单尚处于编辑状态,保存编辑结果后,才能增加记录!');
    exit;
    end;
frmwllb.ShowModal;
if wldm='' then exit;
strsql:='select * from bsd_detail where bsdh='+''''+trim(dbedit1.Text)+''''+
'and wldm='+''''+wldm+'''';
adoexect(adoquery3,strsql);
if adoquery3.Recordset.BOF and adoquery3.Recordset.EOF then
   begin
   adoquery3.Append;
   adoquery3.FieldByName('bsdh').AsString:=trim(dbedit1.Text);
   adoquery3.FieldByName('wldm').AsString:=wldm;
   adoquery3.FieldByName('sl').Value:=0;
   adoquery3.Post;
   end else begin
   showmessage('该物料已经存在!');
   exit;
   end;
adoquery4.Close;
adoquery3.Close;
adoquery1.Close;
adoquery1.Open;
adoquery1.First;
RzPageControl1.ActivePageIndex:=1;
wldm:='';
end;

procedure Tfrmbsd_lr.RzBitBtn6Click(Sender: TObject);
begin
if adoquery5.Active then adoquery5.Close;
adoquery5.Parameters.ParamByName('bsdh').Value:=trim(dbedit1.Text);
frReport1.DoublePass := True;
frReport1.Clear;
frReport1.LoadFromFile(strpath+'/report/bsd.frf');
frVariables['username']:=username;
frreport1.ShowReport;
end;

procedure Tfrmbsd_lr.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    DBGridEh1DblClick(self);
end;

procedure Tfrmbsd_lr.RzBitBtn4Click(Sender: TObject);
begin
if not qxjc(userid,'bsd_del') and (username<>trim(dbedit7.Text)) then exit;
if adoquery2.Recordset.EOF and adoquery2.Recordset.BOF then exit;
if messagebox(handle,'真的要取消该报损单吗?','询问',mb_yesno+mb_iconquestion)=idyes then
   begin
   try
       strsql:='alter table bsd_detail disable trigger TRI_bsd_del';
       adodel(adoquery3,strsql);
       strsql:='update wldmk set sykc=sykc+bsd_detail.sl,sjkc=sjkc+bsd_detail.sl from bsd_detail'+
      ' where bsd_detail.wldm=wldmk.wldm and bsd_detail.bsdh='+''''+trim(dbedit1.Text)+'''';
       adodel(adoquery3,strsql);
       strsql:='delete from bsd_detail where bsdh='+''''+trim(dbedit1.Text)+'''';
       adodel(adoquery3,strsql);
       adoquery2.Delete;
       strsql:='alter table bsd_detail enable trigger TRI_bsd_del';
       adodel(adoquery3,strsql);
   except
       showmessage('删除报损单失败!数据库问题');
   end;

   end;
   
end;

procedure Tfrmbsd_lr.DBGridEh1TitleClick(Column: TColumnEh);
begin
 Compositor(adoquery1,Column);
end;

procedure Tfrmbsd_lr.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
 if gdselected in state then//如果当前区域是被选区域
    begin
      //设置被选区域颜色
      tDBGridEh(sender).Canvas.Brush.Color:=clinfobk;
      //设置被选区域字体颜色
      tDBGridEh(sender).Canvas.Font.Color:=clfuchsia;
    end
  else //如果是当前区域不是被选择区域
    begin
     //如果是偶数行,则背景颜色为 clskyblue
     if tDBGridEh(sender).DataSource.DataSet.RecNo mod 2 =0 then
        tDBGridEh(sender).Canvas.Brush.Color:=clskyblue
     else
     //如果是奇数行,则背景颜色为 clinactivecaptiontext
        tDBGridEh(sender).Canvas.Brush.Color:=clWhite;
    end;
  //调用默认的绘图函数
  tDBGridEh(sender).DefaultDrawColumnCell(rect,datacol,column,state);

end;

end.

⌨️ 快捷键说明

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