⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 materiel_need.pas

📁 该系统主要用于生产采购系统
💻 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 + -