sqbinput.pas

来自「一个仓库管理中的子系统--采购子系统」· PAS 代码 · 共 1,776 行 · 第 1/4 页

PAS
1,776
字号
    Result:='0'+Result;
end;

procedure TsqinputForm.InitsqxbInput;
begin
     jhyCombo.Text:='';
     cpbhedit.text:='';
     xhggedit.Text:='';
     jldwCombo.Text:='';
     sbslEdit.Text:='0.0';
     gjjeEdit.text:='0.0';
     sccjCombo.text:='';
     yyhrwEdit.Text:='';
     sjyqEdit.text:='';
     bzEdit.Text:='';
     cpmcEdit.text:='';
end;

Function TsqinputForm.DateTo709Str(date709:Tdate):string;
var str709:string;
year,month,day:word;
begin
    decodeDate(date709,year,month,day);
    str709:=intTostr(year)+intTostrpad0(month,2)+IntTostrpad0(day,2);
    result:=str709;
end;

function TsqinputForm.PostTosqxb:Boolean;
begin
    with datamodule1.cgsqxbTable do
    begin
     open; //修改
     try
     append;
     FieldByName('jhy').asstring:=jhyCombo.Text;
     FieldByName('sqbid').asstring:=sqbidPanel.caption;
     FieldByname('cpbh').asstring:=cpbhedit.Text;
     FieldByname('xhgg').asstring:=xhggedit.Text;
     FieldByname('jldw').asstring:=jldwCombo.Text;
     FieldByname('sbsl').asFloat:=Strtofloat(sbslEdit.Text);
     FieldByname('gjje').asFloat:=Strtofloat(gjjeEdit.text);
     FieldByname('sccj').asstring:=sccjCombo.text;
     FieldByname('yyhrw').asstring:=yyhrwEdit.Text;
     FieldByname('sjyq').asstring:=sjyqEdit.text;
     FieldByname('bz').asstring:=bzEdit.Text;
     FieldByname('cpmc').asstring:=cpmcedit.text;
     Post;
     except
      on EDBEngineError do
       begin
       messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
       //datamodule1.Dbase709.Rollback;
       Result:=False;
       exit;
       end;
     end;
    end;
     with datamodule1 do
     begin
     hzglTable.open;
     try
     hzglTable.Append;
     hzglTablejhy.AsString:=jhyCombo.Text;
     hzglTablesqbid.asstring:=sqbidpanel.Caption;
     hzglTablecpbh.asstring:=cpbhedit.Text;
     hzgltablexhgg.asstring:=xhggedit.Text;
     hzglTablesldw.asstring:=jldwCombo.Text;
     hzgltablesbsl.asFloat:=Strtofloat(sbslEdit.Text);
     hzgltablegjje.asFloat:=Strtofloat(gjjeEdit.text);
     hzgltablesccj.asstring:=sccjCombo.text;
     hzgltablesjyq.asstring:=sjyqEdit.text;
     hzgltablecpmc.asstring:=cpmcEdit.text;
     hzglTablesqbid.asstring:=sqbidpanel.Caption;
     hzglTablelsh.asstring:=lshedit.Text;
     hzglTablerwmc.asstring:=rwmcEdit.Text;
     hzglTableyxnx.asstring:=yxnxLabel.Caption;
     hzglTablexqdw.asstring:=sqdwCombo.Text;
     hzglTablesbrq.asstring:=GetDate709(sqrqedit.Text);
     hzglTablebzr.asstring:=bzrCombo.Text;
     hzglTableshr.asstring:=shrCombo.Text;
     hzglTablebzrq.asstring:=GetDate709(bzrqedit.Text);
     hzglTableshrq.asstring:=GetDate709(shrqedit.Text);
     hzglTablepzr.asstring:=pzrCombo.Text;
     hzglTablepzrq.asstring:=GetDate709(pzrqedit.Text);
     hzglTableysbx1.AsString:=yyhrwEdit.Text;
     hzglTableBJHGSL.asfloat:=0;
     hzglTableYBJSL.asfloat:=0;
     hzglTableBJBHGSL.asfloat:=0;
     hzglTable.Post;
     except
      on EDBEngineError do
       begin
       messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
       //datamodule1.Dbase709.Rollback;
       Result:=False;
       exit;
       end;
      end;
      end;
     AppendBtnR.Enabled:=True;
     postBtnR.Enabled:=false;
     NewBtnR.Enabled:=True;
     AppendBtnG.Enabled:=True;
     postBtnG.Enabled:=false;
     newBtnG.Enabled:=True;
     Result:=True;
end;

function TsqInputForm.PostTosqzb:Boolean;
begin
  {if BeforePostsqzb<>0 then
  begin
  result:=false;
  exit;
  end;}
  with datamodule1.cgsqzbTable do
   begin
    open;     //修改
    try
    append;
    FieldByName('sqbid').asstring:=sqbidpanel.Caption;
    FieldByName('lsh').asstring:=lshedit.Text;
    FieldByName('rwmc').asstring:=rwmcEdit.Text;
    FieldByName('yxnx').asstring:=yxnxLabel.Caption;
    FieldByName('sqdw').asstring:=sqdwCombo.Text;
    FieldByName('sqrq').asstring:=GetDate709(sqrqedit.Text);
    FieldByname('scssb_flag').asstring:='0';
    FieldByName('xqfzr').asstring:=xqfzrCombo.Text;
    FieldByName('bzr').asstring:=bzrCombo.Text;
    FieldByName('shr').asstring:=shrCombo.Text;
    FieldByName('xqrq').asstring:=GetDate709(xqrqedit.Text);
    FieldByName('bzrq').asstring:=GetDate709(bzrqedit.Text);
    FieldByName('shrq').asstring:=GetDate709(shrqedit.Text);
    FieldByName('pzr').asstring:=pzrCombo.Text;
    FieldByName('pzrq').asstring:=GetDate709(pzrqedit.Text);
    Post;
    except
    on EDBEngineError do
       begin
       messageDlg('您输入的数据可能不符合规范,请检查后重新输入!',mtInformation,[mbOK],0);
       //datamodule1.Dbase709.Rollback;
       Result:=False;
       exit;
       end;
    end;
    end;
    Result:=True;
end;

procedure TsqinputForm.InitInputFrm;
begin
    jhyCombo.text:='';
    cpbhedit.text:='';
    lshedit.Text:='';
    rwmcEdit.Text:='';
    yxnxLabel.Caption:=IntToStr(GetYear);
    sqdwCombo.Text:='';
    sqrqedit.Text:=ShowMeDate(dateTo709str(date));
    xhggedit.Text:='';
    jldwCombo.Text:='';
    sbslEdit.Text:='0.0';
    gjjeEdit.text:='0.0';
    sccjCombo.text:='';
    yyhrwEdit.Text:='';
    sjyqEdit.text:='';
    bzEdit.Text:='';
    xqfzrCombo.Text:='';
    bzrCombo.Text:='';
    shrCombo.Text:='';
    xqrqEdit.Text:=ShowMeDate(dateTo709str(date));
    bzrqEdit.Text:=ShowMeDate(dateTo709str(date));
    shrqEdit.Text:=ShowMeDate(dateTo709str(date));
    pzrCombo.Text:='';
    pzrqedit.Text:=ShowMeDate(dateTo709str(date));
    cpmcedit.text:='';
    InitstringGrid; 
end;

Function TsqInputForm.GetYear:word;
var
   year,month,day:word;
begin
   decodeDate(date,year,month,day);
   Getyear:=year;
end;
{Function TsqInputForm.sub0Fromstr(datestr:string):string;
var sub0str1,sub0str2:string;
begin
   sub0str1:=copy(datestr,2,1);
   sub0str2:=copy(datestr,1,1);
   if sub0str1='0' then
   datestr:=copy(datestr,3,1)
   else
   if sub0str2='0' then
   datestr:=copy(datestr,2,2);
   result:=datestr;
end;}

Function TsqInputForm.GetsqBdid:string;
var
   SqbCount:Integer;
   Year,month,day:word;
   sqbidStr,oldYearstr,oldMonthstr,oldSqbCountstr:String;
   NowyearStr:string;
begin
   with datamodule1 do
   begin
   DecodeDate(date,year,month,day);
   if cgsqzbtable.RecordCount<>0 then
   begin
   cgsqzbtable.Last;
   sqbidStr:=cgsqzbTable.Fieldbyname('sqbid').asstring;
   oldYearstr:=copy(sqbidstr,1,2);
   oldMonthstr:=copy(sqbidstr,3,2);
   oldsqbCountstr:=(Copy(sqbidstr,5,3));

   if month>(LongInt(strToInt(oldMonthstr))) then
   sqbcount:=1
   else
    {begin
     if year>(LongInt(strToInt(oldYearstr)+2000)) then
      sqbCount:=1
     else}
      sqbcount:=strToInt(oldsqbCountstr)+1;
   //end;

   end
   else
   sqbCount:=1;
   NowYearstr:=IntToStrPad0(year,4);
   Delete(NowYearStr,1,2);
   Result:=Nowyearstr+IntToStrPad0(month,2)+IntToStrPad0(sqbcount,3);
   end;
end;

procedure TsqinputForm.AppendBtnRClick(Sender: TObject);
begin
    with datamodule1 do
    begin
    cgsqxbTable.open;
    cgsqxbTable.append;
    end;
     AppendBtnR.Enabled:=False;
     PostBtnR.Enabled:=True;
     newBtnR.Enabled:=False;
     AppendBtnG.Enabled:=False;
     PostBtnG.Enabled:=True;
     newbtnG.Enabled:=False;
     Initsqxbinput;
end;

procedure TsqinputForm.PostBtnRClick(Sender: TObject);
begin
     //datamodule1.Dbase709.StartTransaction;
     if sqdwCombo.Text='' then
      begin
       messageDlg('您没有输入申请单位名,请您输入申请单位!',mtInformation,[mbOK],0);
       exit;
      end;

     if sqrqEdit.Text=showmeDate(dateTo709str(Date)) then
       if messageDlg('您是否确定使用当前系统日期?如果不是'+#13+
                '请按下CANCEL 按钮,然后修改日期!',mtInformation,[mbOK,mbCANCEL],0)=mrCancel then
          exit;

      with datamodule1.PublicQuery1 do
       begin
       close;
       sql.Clear;
       sql.Add('select * From dbo.a_cgsqxb');
       sql.Add('where sqbid='+''''+sqbidpanel.caption+''''+' and cpbh='+''''+cpbhedit.Text+'''');
       prepare;
       open;
      if recordCount<>0 then
       begin
        showmessage('您不能在同一张申请表中输入两个产品编号相同的记录,请合并记录!');
        close;
        exit;
       end;
      close;
      end;

      if length(cpbhedit.Text)<>11 then
      begin
          showmessage('请输入十一位的产品编号!');
          exit;
      end;

      if (jhyCombo.Text='') then
        begin
         Showmessage('请您输入计划员!');
         exit;
        end;
      if (cpmcEdit.Text='') or (sbslEdit.Text='0.0') or (xhggedit.Text='') or (jldwCombo.Text='') then
        begin
          MessageDlg('您没有输入产品名称、型号规格、申请数量或计量单位,请您输入为空的值!',mtInformation,[mbOK],0);
          exit;
        end;
     if beforepostsqzb=0 then
     if not postTosqzb then
     exit;
     if not postTosqxb then
     exit;
     showmessage('你录入的记录已经成功提交!');
end;

procedure TsqinputForm.NewBtnRClick(Sender: TObject);
begin
   if MessageDlg('您是否已经完成了本申请表中所有记录的录入工作?'+#13+
                 '如果是的请按下 OK 按钮,如果没有完成请按下CANCEL'+#13+
                 '按钮接续录入本申请表中的记录!',mtInformation,[mbOK,mbCANCEL],0)=mrCancel then
       exit;
    with dataModule1.PublicQuery1 do
    begin
    Close;
    sql.Clear;
    sql.Add('select * from dbo.a_cgsqzb');
    sql.Add('where sqbid='+''''+sqbidPanel.Caption+'''');
    open;
    if RecordCount=0 then
      begin
      showMessage('您还没有开始当前这张表的录入,请先开始当前这张表的录入!');
      close;
      exit;
      end;
    close;
    end;
    if datamodule1.cgsqxbTable.State=dsInsert then
    begin
    showmessage('您现在还处在记录录入状态,请继续输入记录!');
    exit;
    end;

   with datamodule1 do
    begin
    cgsqxbTable.open;
    cgsqxbTable.append;
    end;
   check_the_reused_id(if_reused);//检查是否重用了已经作废的申请表id
   sqbidpanel.Caption:=GetsqBdid;
   if_reused:=sqbidpanel.Caption;//给判断是否重用已经作废的申请表ID的变量if_reused赋值
   InitInputFrm;
   AppendBtnR.Enabled:=False;
   postBtnR.Enabled:=True;
   NewBtnR.Enabled:=False;
   AppendBtnG.Enabled:=False;
   postBtnG.Enabled:=True;
   NewBtnG.Enabled:=False;
   if messageDlg('是否生成刚提交的申请表的实施表?',mtInformation,[mbOK,mbCANCEL],0)=mrOK then
   begin
   jhssForm:=TjhssForm.Create(Application);
   with datamodule1.publicQuery3 do
    begin
    close;
    sql.clear;
    sql.Add('select sqbid From dbo.a_cgsqzb');
    sql.add('where scssb_flag='+''''+'0'+'''');
    prepare;
    open;
    if RecordCount=0 then
    begin
    close;
    jhssForm.Release;
    showmessage('没有未生成实施表的申请表!');
    exit;
    end;
    jhssForm.sqbidCombo.Items.clear;
    while not Eof do
    begin
    jhssForm.sqbidComBo.Items.Add(FieldByName('sqbid').asstring);
    next;
    end;
    jhssForm.sqbidComBo.Text:=jhssForm.sqbidComBo.Items[jhssForm.sqbidComBo.Items.count-1];
    close;
    end;
    hide;
    datamodule1.Dbase709.close;
    datamodule1.Dbase709.Open;
    jhssForm.ShowModal;
    jhssForm.free;
    show;
    end;
end;

procedure TsqinputForm.FormActivate(Sender: TObject);
begin
    sqrqDate.DateTime:=Date;
    bzrqDate.DateTime:=Date;
    xqrqDate.DateTime:=Date;
    shrqDate.DateTime:=Date;
    pzrqDate.DateTime:=Date;
    oldCol:=0;
    oldRow:=0;
    if_reused:='';
    with datamodule1 do
    begin
    //打开本录入窗口中用到的数据表格
    cgsqzbTable.open;
    cgsqxbTable.open;
    hzglTable.open;
    cgsqxbTable.append;
    end;
    //初始化所有ComboBox中的选择项
    with datamodule1.publicquery2 do
    begin
       //初始化部门名称和部门人员名称
       //close;
       sql.clear;
       sql.add('Select * from dbo.e_bmmcb');
       prepare;
       open;
       first;
       sqdwCombo.Items.Clear;
       bzrCombo.Items.Clear;
       xqfzrCombo.Items.Clear;
       shrCombo.Items.Clear;
       pzrCombo.Items.Clear;
       while  not eof do
       begin
         sqdwCombo.Items.Add(FieldByName('bmmc').asstring);
         bzrCombo.Items.Add(FieldByName('bmfzr').asstring);
         xqfzrCombo.Items.Add(FieldByName('bmfzr').asstring);
         shrCombo.Items.Add(FieldByName('bmfzr').asstring);
         pzrCombo.Items.Add(FieldByName('bmfzr').asstring);
         next;
       end;
    //初始化厂家名称
    close;
    sql.clear;
    sql.add('select gysmc from dbo.e_fczfzb');
    open;
    first;
       sccjCombo.Items.Clear;
       while  not eof do
       begin
         sccjCombo.Items.Add(FieldByName('gysmc').asstring);
         next;
       end;
    close;
    sql.Clear;
    sql.Add('select jhyid From dbo.p_jhyb');
    open;
    first;
    jhyCombo.Items.Clear;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?