有了前面所形成的主生產計劃和基礎數據庫,也就是知道了我們在什麼時間需要生產什麼產品,就可以調用MPR的計算過程計算出生產這些成品所需要的物料。MRP的計算過程已經在建庫的時候寫到數據庫的存儲過程中了,這樣在Delphi程序中直接調用存儲過程就可以完成MRP的計算。
(1) 新建一個窗體,命名為“MRPCal”,保存並將其從自動創建的窗體列表中刪除。在窗體上放置如圖3.39所示的控件。
圖3.39 MRP計算窗體
(2) 各控件的屬性設置如表3.10所示。
表3.10 MRP計算窗體控件屬性設置
(3) MRP計算窗體的時間處理程序代碼如下。
//------------MRP計算------------------
procedure TMRPCal.BitBtn1Click(Sender: TObject);
var
//調用儲存過程時的參數
v1,v2,v3:string;
i:integer;
begin
//考慮庫存,生產和采購訂單
if checkbox1.Checked then
v1:='1'
else
v1:='0';
//是否考慮提前期
if checkbox2.Checked then
v2:='1'
else
v2:='0';
//是否考慮損耗
if checkbox3.Checked then
v3:='1'
else
v3:='0';
//調用儲存過程,執行mrp計算
adocommand1.CommandText:='exec sf_mrp計算 '''+v1+''','''+v2+''','''
+v3+'''';
adocommand1.Execute;
//刷新數據
adoquery2.Active:=false;
adoquery2.Active:=true;
//允許發布計算結果
bitbtn2.Enabled:=true;
end;
procedure TMRPCal.DataSource2DataChange(Sender: TObject; Field: TFIEld);
begin
//設置列寬度
dbgrid1.Columns[0].Width:=80;
dbgrid2.Columns[1].Width:=80;
dbgrid2.Columns[2].Width:=64;
dbgrid2.Columns[3].Width:=64;
dbgrid2.Columns[4].Width:=64;
dbgrid2.Columns[5].Width:=64;
dbgrid2.Columns[6].Width:=64;
dbgrid2.Columns[7].Width:=64;
dbgrid2.Columns[8].Width:=64;
dbgrid2.Columns[9].Width:=64;
dbgrid2.Columns[10].Width:=64;
dbgrid2.Columns[11].Width:=64;
end;
//--------關閉窗體-----------
procedure TMRPCal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
//--------------發布MRP計算結果-------------
procedure TMRPCal.BitBtn2Click(Sender: TObject);
begin
if application.MessageBox('是否發布本次計算結果','發布mrp計算結果',MB_OKCANCEL)=ID_OK then
begin
//調用儲存過程,執行mrp計算結果發布
adocommand1.CommandText:='exec sf_mrp結果發布';
adocommand1.Execute;
//刷新數據
adoquery2.Active:=false;
adoquery2.Active:=true;
adoquery1.Active:=false;
adoquery1.Active:=true;
end;
end;