📄 unit_mater_inmod.~pas
字号:
unit Unit_Mater_InMod;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls;
type
TForm_Mater_InMod = class(TForm)
Panel1: TPanel;
Panel3: TPanel;
DBEdit_InCardNum: TDBEdit;
DBEdit_Date: TDBEdit;
Panel8: TPanel;
Panel12: TPanel;
Panel13: TPanel;
Panel15: TPanel;
Panel2: TPanel;
DBEdit_Mater: TDBEdit;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel9: TPanel;
Panel16: TPanel;
DBEdit_InWt: TDBEdit;
DBEdit_Chk: TDBEdit;
DBEdit_Per: TDBEdit;
Edit_Index: TEdit;
Panel4: TPanel;
Panel14: TPanel;
DBEdit_Add: TDBEdit;
Panel18: TPanel;
DBEdit_Fac: TDBEdit;
DBEdit_Taker: TDBEdit;
Panel10: TPanel;
BitBtn_Post: TBitBtn;
BitBtn_Exit: TBitBtn;
Tab_InCard: TTable;
DS_InCard: TDataSource;
Qry_Exe: TQuery;
Label2: TLabel;
DBEdit_OutCardNum: TDBEdit;
Panel11: TPanel;
DBEdit1: TDBEdit;
Panel17: TPanel;
procedure BitBtn_PostClick(Sender: TObject);
procedure DBEdit_InCardNumEnter(Sender: TObject);
procedure DBEdit_InCardNumExit(Sender: TObject);
procedure BitBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit_TakerEnter(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Mater_InMod: TForm_Mater_InMod;
implementation
uses Unit_Mater_Main, Unit_Mater_OutFromInCard;
{$R *.DFM}
procedure TForm_Mater_InMod.BitBtn_PostClick(Sender: TObject);
begin
if messagedlg('请认真再核对一次数据。'+#13+#13+'错帐要负全部经济责任!!'+'确定入帐吗?', mtwarning, [mbyes,mbno],0) = mrno then
exit;
//必须填写某些栏目
if ((DBEdit_InCardNum.text ='') or (DBEdit_Date.text = '') or (DBEdit_Mater.text ='') or (DBEdit_InWt.text ='') or (DBEdit_Per.text ='') or (DBEdit_Taker.text= '')) then
begin
messagedlg('必须填写'+#13+#13+'入库单号、入库日期、材料名称、入库数量、单价、采购员'+#13+#13+'这6个栏目!!', mtError ,[mbok],0);
perform(WM_NEXTDLGCTL,0,0);
exit;
end; //if
//核对密码
with Qry_Exe do
begin
close;
sql.Clear;
sql.Add('select * from 人员登陆表 where 密码 = :v_pass ');
parambyname('v_pass').asstring:=DBEdit_Taker.text;
open;
if recordcount = 0 then
begin
showmessage('密码错误; 或者采购员没有注册!');
exit;
end; //if
DBEdit_Taker.text:=fieldbyname('姓名').asstring;
end; //with
//入库数量必须大于零
if strtofloat(DBEdit_InWt.text)<= 0 then
begin
showmessage('入库数量必须大于0');
exit;
end; //if
//找到第一次出库日期
with Qry_exe do
begin
sql.Clear;
sql.Add('select * from 原材料台帐 ');
sql.Add('where 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per and 出入标识 = :v_IfOut ');
sql.Add('order by 库存 Desc ');
parambyname('v_mater').asstring:=DBEdit_Mater.text;
parambyname('v_OutCardNum').asstring:=DBEdit_OutCardNum.text;
parambyname('v_Per').asfloat:=strtofloat(DBEdit_Per.text);
parambyname('v_IfOut').asboolean:=true;
open;
end;
//判断日期是否小于等于结账日期
if strtodate(DBEdit_Date.text) <=dm.zdyGetmaterCheckDate then
begin
showmessage('您所填写的日期在结账日期之前!'+#13+#13+'请重新填写!'+#13+#13+'请重新填写!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetmaterCheckDate));
perform(WM_NEXTDLGCTL,0,0);
exit;
end;
//判断日期是否小于第一次出库日期
if Qry_exe.recordcount > 0 then
if strtodate(DBEdit_Date.text) > Qry_exe.fieldbyname('日期').asdatetime then
begin
showmessage('入库日期不能在第一次出库日期之后!'+#13+#13+'请重新填写!');
perform(WM_NEXTDLGCTL,0,0);
exit;
end; //if
//自动填写领料单号
DBEdit_OutCardNum.text:=formatdatetime('yymmdd',strtodate(DBEdit_Date.text));
Tab_InCard.post;
//修改对应全部记录 库存 为最新库存量
with Qry_Exe do //*************************//
begin
close;
sql.Clear;
sql.Add('Update 原材料台帐 set 库存 = (库存*1000 + :v_ReWt)/1000 ');
sql.Add('where 材料名称= :v_mater and 领料单号= :v_OutCardNum and 单价 = :v_per ');
parambyname('v_ReWt').asfloat:=(strtofloat(DBEdit_InWt.text) - Form_mater_Main.Qry_Main.fieldbyname('入库数量').asfloat)*1000 ;
parambyname('v_mater').asstring:=Form_mater_Main.Qry_Main.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNum').asstring:=Form_mater_Main.Qry_Main.fieldbyname('领料单号').asstring;
parambyname('v_Per').asfloat:=Form_mater_Main.Qry_Main.fieldbyname('单价').asfloat;
execsql;
end; //with
//修改自身记录 剩余库存
with Qry_Exe do //******************************//
begin
close;
sql.Clear;
sql.Add('Update 原材料台帐 set 剩余库存 = (剩余库存*1000 + :v_ReWt)/1000 ');
sql.Add('where 标识号 = :v_id ');
parambyname('v_ReWt').asfloat:=(strtofloat(DBEdit_InWt.text) - Form_mater_Main.Qry_Main.fieldbyname('入库数量').asfloat)*1000 ;
parambyname('v_id').asinteger:=Form_mater_Main.Qry_Main.fieldbyname('标识号').asinteger;
execsql;
end; //with
//修改对应全部记录 领料单号 单价
with Qry_Exe do //*************************//
begin
close;
sql.Clear;
sql.Add('Update 原材料台帐 set 领料单号 = :v_OutCardNumNew, 单价 = :v_PerNew ');
sql.Add('where 材料名称= :v_mater and 领料单号= :v_OutCardNumOld and 单价 = :v_per ');
parambyname('v_OutCardNumNew').asstring:=formatdatetime('yymmdd',strtodate(DBEdit_Date.text));
parambyname('v_PerNew').asfloat:=strtofloat(DBEdit_Per.text);
parambyname('v_mater').asstring:=Form_mater_Main.Qry_Main.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNumOld').asstring:=Form_mater_Main.Qry_Main.fieldbyname('领料单号').asstring;
parambyname('v_Per').asfloat:=Form_mater_Main.Qry_Main.fieldbyname('单价').asfloat;
execsql;
end; //with
//刷新主界面表格
with Form_Mater_Main.Qry_Main do
begin
close;
sql.Clear;
sql.Add('select * from 原材料台帐 where 材料名称 = :v_mater ');
sql.Add('and 领料单号 = :v_OutCardNum and 单价 = :v_per');
sql.Add('order by 库存 Desc ');
parambyname('v_mater').asstring:=DBEdit_mater.text;
parambyname('v_OutCardNum').asstring:=DBEdit_OutCardNum.text;
parambyname('v_per').asfloat:=strtofloat(DBEdit_Per.Text);
open;
end;//with
close;
end;
procedure TForm_Mater_InMod.DBEdit_InCardNumEnter(Sender: TObject);
begin
TEdit(Sender).color:=claqua;
end;
procedure TForm_Mater_InMod.DBEdit_InCardNumExit(Sender: TObject);
begin
TEdit(Sender).color:=clwindow;
end;
procedure TForm_Mater_InMod.BitBtn_ExitClick(Sender: TObject);
begin
close;
end;
procedure TForm_Mater_InMod.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Tab_InCard.Cancel;
DBEdit_Taker.PasswordChar:=#0;
end;
procedure TForm_Mater_InMod.DBEdit_TakerEnter(Sender: TObject);
begin
TEdit(Sender).color:=claqua;
DBEdit_Taker.Text:='';
DBEdit_Taker.PasswordChar:='*';
end;
procedure TForm_Mater_InMod.FormShow(Sender: TObject);
begin
DBEdit_InCardNum.SetFocus;
end;
procedure TForm_Mater_InMod.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end; //if
end;
procedure TForm_Mater_InMod.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
// exit;
//if Key=190 then
exit;
except
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -