📄 material_rk.pas
字号:
unit Material_RK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, Grids, DBGrids, Buttons,
ExtCtrls, ComCtrls, Spin;
type
TForm_Material_RK = class(TForm)
DS_rk_material_Q: TDataSource;
DS_material: TDataSource;
ADOQ_rk_material: TADOQuery;
Panel3: TPanel;
ExtBtn: TBitBtn;
LocateBtn: TBitBtn;
Panel2: TPanel;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
GroupBox1: TGroupBox;
Label4: TLabel;
Label6: TLabel;
Label8: TLabel;
Label11: TLabel;
Label_price: TLabel;
Label19: TLabel;
Label20: TLabel;
DBEdit1: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBCheckBox_flag: TDBCheckBox;
DBE_price: TDBEdit;
DBE_matid: TDBEdit;
DBEdit12: TDBEdit;
datep_rkdate: TDateTimePicker;
SpinEdit_num: TSpinEdit;
BitBtn_RK: TBitBtn;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid2: TDBGrid;
Panel4: TPanel;
Label5: TLabel;
Label14: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Label12: TLabel;
Bevel1: TBevel;
Edit_id: TEdit;
Edit_name: TEdit;
OKBtn: TBitBtn;
CancelBtn: TBitBtn;
ComboBox1: TComboBox;
Edit1: TEdit;
ComboBox3: TComboBox;
Edit2: TEdit;
ComboBox2: TComboBox;
GroupBox2: TGroupBox;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label_price_1: TLabel;
Label28: TLabel;
Label_3: TLabel;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBE_price_1: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DetailBtn: TBitBtn;
GroupBox3: TGroupBox;
Label30: TLabel;
DBEdit15: TDBEdit;
DBEdit14: TDBEdit;
Label21: TLabel;
DBEdit13: TDBEdit;
Label17: TLabel;
Label15: TLabel;
DBEdit16: TDBEdit;
BitBtn_showRK: TBitBtn;
BitBtn1: TBitBtn;
GroupBox4: TGroupBox;
Label13: TLabel;
Label16: TLabel;
Sdate: TDateTimePicker;
Edate: TDateTimePicker;
Label18: TLabel;
Panel5: TPanel;
DBGrid1: TDBGrid;
Label22: TLabel;
Label27: TLabel;
Edit3: TEdit;
Bit_Ser2: TBitBtn;
DBText1: TDBText;
ADOQ_tmp: TADOQuery;
DBLookupComboBox1: TComboBox;
ADOQ_material: TADOQuery;
Lookup_matype: TComboBox;
DBLookup_operid: TComboBox;
ADOQ_rk_materialrkid: TAutoIncField;
ADOQ_rk_materialmat_id: TStringField;
ADOQ_rk_materialnum: TFloatField;
ADOQ_rk_materialrkdate: TDateTimeField;
ADOQ_rk_materialtmp_id: TIntegerField;
ADOQ_rk_materialunit: TStringField;
ADOQ_rk_materialmat_name: TStringField;
ADOQ_rk_materialcolor: TStringField;
ADOQ_rk_materialprice: TBCDField;
ADOQ_rk_materialmatype_name: TStringField;
ADOQ_rk_materialopername: TStringField;
ADOQ_rk_materialflag: TBooleanField;
BtnExport: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn_RKClick(Sender: TObject);
procedure DetailBtnClick(Sender: TObject);
procedure LocateBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure BitBtn_showRKClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Bit_Ser2Click(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure DBLookupComboBox1Change(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DS_rk_material_QDataChange(Sender: TObject; Field: TField);
procedure DBGrid2DblClick(Sender: TObject);
procedure datep_rkdateChange(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure DBCheckBox_flagClick(Sender: TObject);
procedure BtnExportClick(Sender: TObject);
private
{ Private declarations }
com_rk_date:Tdatetime;
procedure refreshdb;
public
{ Public declarations }
end;
var
Form_Material_RK: TForm_Material_RK;
implementation
uses sharevar, sharefun, data, Main;
{$R *.dfm}
procedure TForm_Material_RK.refreshdb;
begin
with ADOQ_material do
begin
close;
sql.Strings[2]:='';
open;
end;
with ADOQ_rk_material do
begin
try
close;
sql.Strings[2]:='';
sql.Strings[3]:='order by d.matype_name, a.mat_id,a.rkdate,a.num desc';
execsql;
open;
except
MsgErr(handle,'刷新数据库失败(Material_RK_Q)!');
end;
end;
end;
procedure TForm_Material_RK.FormCreate(Sender: TObject);
var
RK_date:Tdatetime;
begin
with ADOQ_material do begin close; open; end;
GetHostDateTime(datamod.ADOCon,RK_date);
datep_rkdate.DateTime:=RK_date;
com_rk_date:=RK_date;
end;
procedure TForm_Material_RK.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if adoq_material.Active then adoq_material.Close;
if ADOQ_rk_material.Active then ADOQ_rk_material.Close;
action:=cafree;
end;
procedure TForm_Material_RK.BitBtn_RKClick(Sender: TObject);
var
mat_id, mat_name, tmp_unit: string;
rk_num: real;
rk_date: Tdatetime;
tmp_id: integer;
kc_flag, rkmat_flag:boolean;
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'物料入库失败,请重试!');
exit;
end;
rk_date:=datep_rkdate.DateTime;
mat_id:=trim(DBE_matid.Text);
if mat_id='' then
begin
messagebox(handle,'请选择待入库的物料!','警告',mb_ok or MB_ICONINFORMATION);
DBLookupComboBox1.SetFocus;
exit;
end;
mat_name:=trim(DBEdit1.Text);
tmp_unit:=trim(DBEdit9.Text);
if trim(SpinEdit_num.Text)='' then
begin
messagebox(handle,'请输入物料入库的数量!','警告',mb_ok or MB_ICONINFORMATION);
SpinEdit_num.SetFocus;
exit;
end;
rk_num:=strtofloat(trim(SpinEdit_num.Text));
if rk_num<=0 then
begin
messagebox(handle,'请输入正确的入库数量!','警告',mb_ok or MB_ICONINFORMATION);
SpinEdit_num.SetFocus;
exit;
end;
if MsgQst(handle,'确定物料 [ '+mat_name+' ] 待入库 '+floattostr(rk_num)+' '+tmp_unit+' 吗?')=IDNO then EXIT;
{ //数据提交开始
datamod.ADOCon.BeginTrans;
//如果时间改变则入库时间为当前时间
if com_rk_date<>rk_date then
with ADOQ_tmp do
begin
close;sql.clear;
sql.add('insert into rk_material(mat_id,num,tmp_id,rkdate)');
sql.add('values(:mat_id,:num,:tmp_id,:rkdate)');
parameters.ParamValues['mat_id']:=mat_id;
parameters.ParamValues['num']:=rk_num;
parameters.ParamValues['tmp_id']:=tmp_id;
parameters.ParamValues['rkdate']:=rk_date;
try
execsql;
except
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
MsgErr(handle,'物料入库处理失败1!');
exit;
end;
end
else
//如果时间没改变则入库时间默认为服务器时间
with ADOQ_tmp do
begin
close;sql.clear;
sql.add('insert into rk_material(mat_id,num,tmp_id)');
sql.add('values(:mat_id,:num,:tmp_id)');
parameters.ParamValues['mat_id']:=mat_id;
parameters.ParamValues['num']:=rk_num;
parameters.ParamValues['tmp_id']:=tmp_id;
try
execsql;
except
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
MsgErr(handle,'物料入库处理失败1!');
exit;
end;
end;
//初始化存贮过程执行结果(失败)
edit_kc_ret_2:=0;
//CALL DATABASE Pro_RK_EditKC STORE PROCEDURE
with ADOSP_RK_EditKC do
begin
parameters.paramvalues['@mat_id']:=mat_id;
parameters.paramvalues['@num']:=rk_num;
try
execproc;
except
showmessage('存储过程执行失败(Pro_RK_Material)');
exit;
end;
edit_kc_ret_2:=parameters.paramvalues['@RETURN_VALUE'];
end;
if edit_kc_ret_2=1 then
begin
//提交数据库
if datamod.ADOCon.InTransaction then
begin
try
datamod.ADOCon.CommitTrans;
except
MsgErr(handle,'物料入库表处理失败4!(ADOQ_rk_material)');
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
exit;
end;
msgok(handle,'物料 ['+mat_name+'] 入库 '+floattostr(rk_num)+' '+tmp_unit+'成功!');
//将最后物料入库时间赋给全局时间变量:[com_rk_date]
com_rk_date:=rk_date;
SpinEdit_num.Text:='';
end;
end;
if edit_kc_ret_2=0 then
begin
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
msgErr(handle,'物料 ['+mat_name+'] 入库 '+floattostr(rk_num)+' '+tmp_unit+'失败,请重试!');
end; }
//********************************************
//********************************************
//********************************************
//先确定成品库存表内是否存在此条数据
with ADOQ_tmp do
begin
kc_flag:=false;
close; sql.clear;
sql.add('select * from kc_material where (mat_id=:mat_id)');
parameters.ParamValues['mat_id']:=mat_id;
try
execsql; open;
except
MsgErr(handle,'服装成品入库失败,请重试!');
exit;
end;
if recordcount>0 then kc_flag:=true;
end;
//数据提交开始
rkmat_flag:=true;
datamod.ADOCon.BeginTrans;
//1.物料入库表新增一条入库记录
//如果时间改变则入库时间为当前时间
if com_rk_date<>rk_date then
with ADOQ_tmp do
begin
close;sql.clear;
sql.add('insert into rk_material(mat_id,num,tmp_id,rkdate)');
sql.add('values(:mat_id,:num,:tmp_id,:rkdate)');
parameters.ParamValues['mat_id']:=mat_id;
parameters.ParamValues['num']:=rk_num;
parameters.ParamValues['tmp_id']:=tmp_id;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -