📄 unit_jihua.~pas
字号:
unit Unit_jihua;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, ComCtrls, ExtCtrls, Buttons, StdCtrls, Grids, DBGrids;
type
TForm_jihua = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Panel6: TPanel;
BitBtn2: TBitBtn;
Button2: TButton;
DS_TakeCard: TDataSource;
Qry_exe: TQuery;
TabIO: TTable;
Q1: TQuery;
TabMater: TTable;
Query1: TQuery;
Query2: TQuery;
Query3: TQuery;
Panel2: TPanel;
Panel4: TPanel;
edit_p: TEdit;
Panel7: TPanel;
Panel8: TPanel;
Edit_dep: TEdit;
Panel11: TPanel;
Edit_dinghao: TEdit;
Panel12: TPanel;
Label1: TLabel;
Edit1_riqi: TEdit;
Panel13: TPanel;
Edit2_shuli: TEdit;
Panel1: TPanel;
Edit_MixCardNum: TEdit;
Edit_Rubbmi: TEdit;
Edit_Per: TEdit;
Panel3: TPanel;
Panel_Hint: TPanel;
Panel5: TPanel;
Panel9: TPanel;
edit_tanhu: TEdit;
Panel10: TPanel;
Panel14: TPanel;
eTotal: TEdit;
Label2: TLabel;
Edit4: TEdit;
Panel15: TPanel;
edit_gujia: TEdit;
Panel16: TPanel;
Panel17: TPanel;
Edit6: TEdit;
DateTimePicker1: TDateTimePicker;
Panel18: TPanel;
Panel19: TPanel;
Edit1_shehao: TEdit;
Edit_tuhao: TEdit;
Qry_TakeCard: TQuery;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Edit_MixCardNumChange(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit_PerChange(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Edit1_shehaoExit(Sender: TObject);
procedure Edit1_shehaoEnter(Sender: TObject);
procedure Edit_dinghaoExit(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit1Enter(Sender: TObject);
// procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_jihua: TForm_jihua;
b_state:integer;
implementation
uses Unit_Rubb_QryProcCard, Unit_Rubb_Main, Unit_dinginput, Unit_prjihua,
UnitQueryID;//, Unit_Rubb_piliang;
{$R *.DFM}
procedure TForm_jihua.Button1Click(Sender: TObject);
var
t_SelfStock,fWeight,fPrice,fTotalWeight:real; //最后的步骤弥补
sTakename,sProcBat,sStaff:string;
jinzhong,temWT, zongfen, meifenzho, temPer:real;
temNAME,temDrawCard:string;
tanhuangshu,gujiashu,n_id,iID:integer;
bDrawFlag, bLogic:Boolean;
bmRubbQry:TBookMark;
begin
// 必须填写某些栏目
if (Edit_dinghao.text = '') or (Edit1_shehao.text = '') then
begin
showmessage('必须填写“订单编号”和“胶损耗率”!');
exit;
end;//if
//清jihuadan附表
with Query1 do
begin
close;
sql.Clear;
sql.Add('delete from jihuadan2 ');
execsql;
end;//if
with Query3 do
begin
close;
sql.Clear;
sql.Add('select * from dinghuodan.db ');
sql.Add('where xuhao =:xu');
parambyname('xu').asstring:=Edit_dinghao.text;
open;
if recordcount = 0 then
begin
showmessage('无此订单!');
exit;
end;
if fieldbyname('flag').asstring='t' then
begin
showmessage('此订单已编制了生产计划!');
exit;
end;
Edit_tuhao.text:=query3.fieldbyname('tuhao').asstring;
edit_p.text:=query3.fieldbyname('chpimi').asstring;
Edit_dep.text:=query3.fieldbyname('kehumi').asstring;
Edit2_shuli.text:=inttostr(query3.fieldbyname('shuli').asinteger);
Edit1_riqi.text:=datetimetostr(query3.fieldbyname('diqi').asdatetime);
end; //with
with Qry_exe do //查胶料名
begin
close;
sql.clear;
sql.add('select * from ProdDictionary.DB where prodname = :v_MixCardNum and FigID=:tu');
parambyname('v_MixCardNum').asstring:=query3.fieldbyname('chpimi').asstring;
parambyname('tu').asstring:=query3.fieldbyname('tuhao').asstring;
open;
if recordcount = 0 then
begin
showmessage('此产品没有登记!');
exit;
end;
Edit_Rubbmi.text:=fieldbyname('RubbName').asstring;
jinzhong:=fieldbyname('Weight').asfloat;
tanhuangshu:=fieldbyname('tanhuang').asinteger;
gujiashu:=fieldbyname('gujia').asinteger;
end; //with
jinzhong:=(jinzhong*query3.fieldbyname('shuli').asinteger)*(1+strtofloat(Edit1_shehao.text)/100);
jinzhong:=strtofloat(formatfloat('0.00',jinzhong/1000));
eTotal.text:=floattostr(jinzhong);
edit_tanhu.text:=inttostr(tanhuangshu*query3.fieldbyname('shuli').asinteger);
edit_gujia.text:=inttostr(gujiashu*query3.fieldbyname('shuli').asinteger);
with Qry_exe do //查配方编号
begin
close;
sql.clear;
sql.add('select * from 炼胶配方表.DB where 制成品名称= :v_MixCardNum ');
parambyname('v_MixCardNum').asstring:=Edit_Rubbmi.text;
open;
if recordcount = 0 then
begin
showmessage('此配方没有登记!');
exit;
end;
Edit_MixCardNum.text:=inttostr(fieldbyname('配方编号').asinteger);
end; //with
// fTotalWeight:=strtofloat(eChe.text)*strtofloat(Edit_Per.text); //百分比配方
// fTotalWeight:=strtofloat(formatfloat('0.000',fTotalWeight));
case b_state of //是百分比配方
1:
begin
fTotalWeight:=strtofloat(eTotal.text); //总重
with Qry_TakeCard do
begin
close;
sql.clear;
sql.add(format('select 配方编号,制成品名称,材料名称,百分比/100*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[floattostr(fTotalWeight)]));
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
first;
// messagedlg('计划已做好!', mtinformation, [mbok],0);
end; //with
end; //if
0:
begin
with Q1 do
begin //求总份数
close;
sql.Clear;
sql.Add('select sum(份数) as zofen from 炼胶配方表 where 配方编号 = :v_MixCardNum ');
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
zongfen:=fieldbyname('zofen').asfloat;
zongfen:=strtofloat(formatfloat('0.000',zongfen));
end; //with
meifenzho:=jinzhong/zongfen;
meifenzho:=strtofloat(formatfloat('0.000', meifenzho));
fTotalWeight:= meifenzho;
with Qry_TakeCard do
begin
close;
sql.clear;
sql.add(format('select 配方编号,制成品名称,材料名称,份数*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[floattostr(fTotalWeight)]) );
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
first;
end;
end; //with
end;
//都够了
Qry_TakeCard.first;
while not Qry_TakeCard.Eof do
begin
temName:=Qry_TakeCard.fieldbyname('材料名称').asstring;
temWT:=Qry_TakeCard.fieldbyname('重量').asfloat;
// if Qry_exe.eof then
// showmessage('已经到了最后一条,无法继续循环!');
//选出对应的入库记录
Qry_exe.close;
Qry_exe.sql.Clear;
Qry_exe.sql.Add('select * from 原材料台帐 ');
Qry_exe.sql.Add('where 材料名称 = :sName and 剩余库存 > 0 and 出入标识 = :bIO ');
Qry_exe.sql.Add('order by 日期 ');
Qry_exe.parambyname('sName').asstring:=temName;
Qry_exe.parambyname('bIO').asBoolean:=false;
Qry_exe.open;
{ if Qry_exe.RecordCount = 0 then
//实际不可能,前面已检查过都够
begin
if messagedlg(temName +' 库存量不够 ,缺少' + floattostr(temWT)+' 千克'
+#13+#13+' 是否继续领料?'+#13+#13+'若继续请按 Yes 键,若中止请按 NO 键'
+#13+#13+'按 YES 键后,请向其他单位借 '+ floattostr(temWT)+'千克的'+temName+',日后在混炼用料单中手动添加'+ floattostr(temWT)+'千克的'+temName+'!'
+#13+#13+'按 NO 键后必须在材料仓库的台帐中删除已领取的材料记录!'
,mtwarning,[mbyes,mbno],0) = mryes then
continue //继续循环
else
begin
showmessage('您已经中止填写用料单!' +#13+#13+'请按"返回"键! ');
exit; //跳出该按钮事件
end; //if
end
else }
begin //开始计帐
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -