📄 materiel_need.pas
字号:
unit Materiel_Need;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Inherit, ImgList, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Mask,
DBCtrls, Grids, Buttons, DBGrids;
type
TMateriel_NeedFrm = class(TInheritFrm)
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Panel1: TPanel;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
Panel2: TPanel;
Materiel_NeedSG: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Materiel_NeedFrm: TMateriel_NeedFrm;
time:string;
n,No:integer;
implementation
uses DataModule,MN_SQ;
{$R *.dfm}
procedure TMateriel_NeedFrm.FormCreate(Sender: TObject);
begin
inherited;
DM.AT_Materiel_Need.Filtered:=false;
with Materiel_NeedSG do
begin
Materiel_NeedSG.ColCount:=6;
cells[0,0]:='材料名称';
cells[1,0]:='材料编号';
cells[2,0]:='材料规格';
cells[3,0]:='计量单位';
cells[4,0]:='物料需求数量';
cells[5,0]:='备注';
end;
with DM.AQ_Scheme do
begin
close;
SQL.Clear;
SQL.Add('Select * from Scheme where Scheme_State='+''''+'否'+'''');
open;
end;
n:=DM.AQ_Scheme.RecordCount;
end;
procedure TMateriel_NeedFrm.ToolButton6Click(Sender: TObject);
begin
inherited;
Materiel_NeedFrm.Close;
end;
procedure TMateriel_NeedFrm.DateTimePicker1CloseUp(Sender: TObject);
begin
inherited;
time:=formatDatetime('yyyy-m-d',DateTimePicker1.Date);
with DM.AQ_Materiel_Need do
begin
Close;
SQL.Clear;
SQL.Add('Select * From Materiel_Need where S_Materiel_Time='+'#'+time+'#');
Open;
end;
Edit1.Text:=formatDatetime('yyyymmdd',DateTimePicker1.Date)+'00'+inttostr(DM.AQ_Materiel_Need.RecordCount+1);
end;
procedure TMateriel_NeedFrm.BitBtn1Click(Sender: TObject);
var
i,j,k:integer;
P_ID:array[1..20,1..2] of integer; //产品编号数组
M_No:array[1..20,1..2] of integer; //材料清单编号数组
M_ID:array[1..20,1..2] of integer; //原/辅材料编号数组
M_Num:array[1..10,1..2] of integer; //原/辅材料数目统计数组
Num:integer; //原/辅材料种类统计
begin
inherited;
for i:=1 to 20 do
for j:=1 to 2 do
P_ID[i,j]:=0;
with DM.AQ_Scheme do //查找产品编号
begin
close;
SQL.Clear;
SQL.Add('Select * from Scheme where Scheme_State='+''''+'否'+'''');
open;
first;
for i:=1 to DM.AQ_Scheme.RecordCount do
begin
P_ID[i,1]:=DM.AQ_Scheme['Product_ID'];
P_ID[i,2]:=DM.AQ_Scheme['Scheme_Num'];
next;
end;
end;
if DM.AQ_Scheme.RecordCount=0 then
Application.MessageBox('没有物料计划可以生成!','提示对话框',MB_OK);
for i:=1 to n do //查找材料清单号
with DM.AQ_Product do
begin
close;
SQL.Clear;
SQL.Add('Select * from Product where Product_ID='+inttostr(P_ID[i,1]));
open;
first;
for j:=1 to DM.AQ_Product.RecordCount do
begin
M_No[i,1]:=DM.AQ_Product['Materiel_No'];
M_No[i,2]:=P_ID[i,2];
next;
end;
end;
k:=1;
for i:=1 to n do //查找原材料编号
with DM.AQ_Materiel do
begin
close;
SQL.Clear;
SQL.Add('Select * from Materiel where Materiel_No='+inttostr(M_No[i,1]));
open;
first;
for j:=1 to DM.AQ_Materiel.RecordCount do
begin
M_ID[k,1]:=DM.AQ_Materiel['Materiel_ID'];
M_ID[k,2]:=M_No[i,2];
k:=k+1;
next;
end;
end;
with DM.AQ_Materiel do
begin
close;
SQL.Clear;
SQL.Add('Select * from Materiel');
open;
first;
for i:=1 to DM.AQ_Materiel.RecordCount do
begin
M_Num[i,1]:=DM.AQ_Materiel['Materiel_ID'];
next;
end;
Num:=DM.AQ_Materiel.RecordCount;
end;
for i:=1 to Num do //对原材料数目赋初值
M_Num[i,2]:=0;
for j:=1 to Num do
for i:=1 to k do //原材料统计
if M_ID[i,1]=M_Num[j,1] then
M_Num[j,2]:=M_Num[j,2]+M_ID[i,2];
No:=0; //计划项目数目
for i:=1 to k+1 do
if M_Num[i,2]<>0 then
begin
No:=No+1;
with DM.AQ_Materiel do
begin
close;
SQL.Clear;
SQL.Add('Select * from Materiel where Materiel_ID='+inttostr(M_Num[i,1]));
open;
first;
with Materiel_NeedSG do
begin
cells[0,No]:=fieldbyname('Materiel_Name').AsString;
cells[1,No]:=inttostr(fieldbyname('Materiel_ID').asinteger);
cells[2,No]:=fieldbyname('Materiel_Standard').AsString;
cells[3,No]:=fieldbyname('Materiel_Unit').AsString;
cells[4,No]:=inttostr(M_Num[i,2]);
cells[5,No]:=fieldbyname('Materiel_Memo').AsString;
end;
end;
end;
end;
procedure TMateriel_NeedFrm.ToolButton1Click(Sender: TObject);
var
i:integer;
begin
inherited;
with Materiel_NeedSG do
for i:=1 to No do
begin
DM.AT_Materiel_Need.Insert;
DM.AT_Materiel_Need['S_Materiel_Time']:=strtodate(time);
DM.AT_Materiel_Need['M_Credence_ID']:=Edit1.Text;
DM.AT_Materiel_Need['M_Credence_OID']:=Edit2.Text;
DM.AT_Materiel_Need['Materiel_Name']:=cells[0,i];
DM.AT_Materiel_Need['Materiel_ID']:=strtoint(cells[1,i]);
DM.AT_Materiel_Need['Materiel_Standard']:=cells[2,i];
DM.AT_Materiel_Need['Materiel_Unit']:=cells[3,i];
DM.AT_Materiel_Need['S_Materiel_Num']:=strtoint(cells[4,i]);
DM.AT_Materiel_Need['S_Materiel_Memo']:=cells[5,i];
DM.AT_Materiel_Need.Post;
end;
with DM.AQ_Scheme do
begin
close;
SQL.Clear;
SQL.Add('Select * from Scheme where Scheme_State='+''''+'否'+'''');
open;
first;
for i:=1 to DM.AQ_Scheme.RecordCount do
begin
DM.AQ_Scheme.Edit;
DM.AQ_Scheme['Scheme_State']:='是';
DM.AQ_Scheme.Post;
Next;
end;
end;
if Application.MessageBox('是否要打印预览?','提示对话框',MB_OKCANCEL)=mrok then
begin
with DM.AQ_Materiel_Need do
begin
close;
SQL.Clear;
SQL.Add('Select * from Materiel_Need where M_Credence_ID='+''''+Edit1.Text+'''');
open;
end;
if DM.AQ_Materiel_Need.RecordCount=0 then
Application.MessageBox('没有数据要打印!','提示对话框',MB_OK);
DM.RP_Scheme.ProjectFile:='.\Materiel_need.rav';
DM.RP_Scheme.Open;
DM.RP_Scheme.Execute;
DM.RP_Scheme.Close;
end;
Application.MessageBox('数据保存完毕!','提示对话框',MB_OK);
FormCreate(Sender);
end;
procedure TMateriel_NeedFrm.ToolButton3Click(Sender: TObject);
begin
inherited;
DM.AT_Materiel_Need.Delete;
end;
procedure TMateriel_NeedFrm.ToolButton4Click(Sender: TObject);
begin
inherited;
Application.CreateForm(TMN_SQFrm,MN_SQFrm);
MN_SQFrm.Show;
end;
procedure TMateriel_NeedFrm.ToolButton5Click(Sender: TObject);
begin
inherited;
DM.AT_Materiel_Need.Active:=false;
Materiel_NeedFrm.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -