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

📄 gf_ffxjh.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      if (DBEit_tao_qtms.Text = '') then
      begin
        CHQMsgBox('“全套枚数”内容不能为空!');
        ActiveControl := DBEit_tao_qtms;
        exit;
      end;
      if (DBEit_tao_qtmz.Text = '') then
      begin
        CHQMsgBox('“全套面值”内容不能为空!');
        ActiveControl := DBEit_tao_qtmz;
        exit;
      end;
      if (DBDEit_tao_fxrq.Text = '    -  -  ') then
      begin
        CHQMsgBox('“发行日期”内容不能为空!');
        ActiveControl := DBDEit_tao_fxrq;
        exit;
      end;
      if (DBEit_tao_fxl.Text = '') or (DBEit_tao_fxl.Text = '0') then
      begin
        CHQMsgBox('“套发行量”内容不能为空!');
        ActiveControl := DBEit_tao_fxl;
        exit;
      end;
    end;
  1:
    begin
      if (DBEit_tu_tx.Text = '') then
      begin
        CHQMsgBox('“图序”内容不能为空!');
        ActiveControl := DBEit_tu_tx;
        exit;
      end;
      if (DBEit_tu_tumc.Text = '') then
      begin
        CHQMsgBox('“图名称”内容不能为空!');
        ActiveControl := DBEit_tu_tumc;
        exit;
      end;
      if (DBEit_tu_mz.Text = '') then
      begin
        CHQMsgBox('“面值”内容不能为空!');
        ActiveControl := DBEit_tu_mz;
        exit;
      end;
      if (DBEit_tu_sj.Text = '') then
      begin
        CHQMsgBox('“售价”内容不能为空!');
        ActiveControl := DBEit_tu_sj;
        exit;
      end;
      if (DBEit_tu_gg.Text = '') then
      begin
        CHQMsgBox('“规格”内容不能为空!');
        ActiveControl := DBEit_tu_gg;
        exit;
      end;
      if (DBEit_tu_fxl.Text = '') or (DBEit_tu_fxl.Text = '0') then
      begin
        CHQMsgBox('“发行量”内容不能为空或零值!');
        ActiveControl := DBEit_tu_fxl;
        exit;
      end;
      if (DBDEit_tu_fxrq.Text = '    -  -  ') then
      begin
        CHQMsgBox('“发行日期”内容不能为空!');
        ActiveControl := DBDEit_tu_fxrq;
        exit;
      end;
    end;
  end;

  vl_i_xgzt:= -1;
  if (vlp_status = 1) then//add编辑状态
  begin
    case vlp_FocusGrid.tag of
    0://套
      begin
        if ExistRecord('TF_FFXJHTAO', '(ND = ''' +
          Qry_pfxjhtao.FieldByName('ND').AsString +
          ''') AND (XH = ''' + Qry_pfxjhtao.FieldByName('XH').AsString +
          ''') AND (PPLB = ''' + Qry_pfxjhtao.FieldByName('PPLB').AsString +
          ''') AND (TZDM = ''' + Qry_pfxjhtao.FieldByName('TZDM').AsString +''')') then
        begin
          CHQMsgBox('该套封片的记录已经存在!');
          ActiveControl := DBEit_tao_nd;
          exit;
        end;

        vl_s_xh := 'G' + copy(Qry_pfxjhtao.FieldByName('PPLB').AsString,1,1) + DBEit_tao_nd.Text;
        GetCurrVal(0, 'tg_yljhhsjb where nd=''' + DBEit_tao_nd.Text + ''' and flm=''' + copy(Qry_pfxjhtao.FieldByName('PPLB').AsString, 1, 1) + '''', 'lsh+1', vl_v_lsh);
        if VarIsEmpty(vl_v_lsh) then
        begin
          vl_s_xh := vl_s_xh + '01';
        end
        else
          if length(vartostr(vl_v_lsh)) = 1 then
            vl_s_xh := vl_s_xh + '0' + vartostr(vl_v_lsh)
          else
            vl_s_xh := vl_s_xh + vartostr(vl_v_lsh);

        Qry_pfxjhtao.FieldByName('JHH').AsString := vl_s_xh;
        Qry_pfxjhtao.FieldByName('BBH').AsInteger := 1;
        Qry_pfxjhtao.FieldByName('XGZT').AsString := '2';//新增
      end;
    1://图
      begin
        vl_i_xgzt := -1;
        //当前工作表中是否有JHH&TX&(XGZT<>3)重复的记录
        if ExistRecord('TF_FFXJHTU', 'JHH=''' + Qry_pfxjhtao.FieldByName('JHH').AsString +
          ''' AND TX=' + Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''') then
        begin
          vlp_FocusGrid.DataSource.DataSet.FieldByName('JHH').AsString := '';
          CHQMsgBox('该图封片的记录已经存在!');
          ActiveControl := DBEit_tu_tx;
          exit;
        end;
        //历史表中,该计划号的最新图信息是否有JHH&(BBH-1)&TX&(XGZT<>3)的记录(上次发送时有效)
        with data.Qry_sub do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select tx,tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
            'from tf_ffxjhtuls where (JHH=''' +
          Qry_pfxjhtao.FieldByName('JHH').AsString + ''') AND (BBH=' +
          inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ') AND (TX=' +
          Qry_pfxjhtu.FieldByName('TX').AsString + ') AND (XGZT<>''3'')');
          Open;
          if (not IsEmpty) then//上次存在且当时未被删
          begin
            if ExistRecord('TF_FFXJHTU', 'JHH=''' +
              Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND TX=' +
              Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT=''3''') then
            begin//此次已被删
              for i:= 0 to FieldCount-1 do
                if trim(DBGid_tu.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
                  break;
              if i=FieldCount then
                vl_i_xgzt:= 0
              else
                vl_i_xgzt:= 1;
            end;
            //此次未被删已被处理过
          end
          else //上次没有,或有但是被删除,置为增加状态
            vl_i_xgzt:= 2;
        end;
        Qry_pfxjhtu.FieldByName('TBBH').AsString := '1';
        Qry_pfxjhtu.FieldByName('JHH').AsString :=
          Qry_pfxjhtao.FieldByName('JHH').AsString;
        Qry_pfxjhtu.FieldByName('BBH').AsInteger :=
          Qry_pfxjhtao.FieldByName('BBH').asInteger;
      end;
    end;
    vlp_FocusGrid.DataSource.DataSet.FieldByName('QXBZ').AsString := 'f';

    vlp_stao_jhh := Qry_pfxjhtao.fieldbyname('JHH').AsString;
    if vlp_FocusGrid.Tag = 1 then //图
    begin
      vlp_itu_tx := Qry_pfxjhtu.fieldbyname('TX').AsInteger;
    end;
  end else
  begin//edit
  //**
    if vlp_FocusGrid.Tag =1 then//tu
    begin
      if (Qry_pfxjhtu.FieldByName('TX').AsString <> vlp_oldtuval.old_tu_tx) then//(Qry_pfxjhtu.FieldByName('JHH').AsString <> oldtuval.old_tu_jhh) or
      begin
        if ExistRecord('TF_FFXJHTU', 'JHH=''' +
          Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND TX=' +
          Qry_pfxjhtu.FieldByName('TX').AsString + ' and XGZT<>''3''') then
        begin
          vlp_FocusGrid.DataSource.DataSet.FieldByName('JHH').AsString := '';
          CHQMsgBox('该图封片的记录已经存在!');
          Qry_pfxjhtu.FieldByName('JHH').AsString := vlp_oldtuval.old_tu_jhh;
          Qry_pfxjhtu.FieldByName('TX').AsString := vlp_oldtuval.old_tu_tx;
          ActiveControl := DBEit_tu_tx;
          exit;
        end;
        vlp_itu_tx := Qry_pfxjhtu.fieldbyname('TX').AsInteger;
      end;
    end;
    case vlp_FocusGrid.Tag of
    0://套
      with data.Qry_super do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select tmc,qtms,qtmz,tpsj,fxrq,fxl,pzr,bz,zbr ' +
          'from tf_ffxjhtaols where jhh=''' + Qry_pfxjhtao.FieldByName('JHH').AsString +
          ''' AND BBH=' + inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1));
        Open;
        if (not IsEmpty) then//上次发送过
        begin
          for i:=0 to FieldCount-1 do
            if trim(DBGid_tao.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
              break;
          if i<>FieldCount then//与上次发送的有不同
            Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
              'set TMC = :TMC, QTMS = :QTMS, QTMZ = :QTMZ, TPSJ = :TPSJ, ' +
              'FXRQ = :FXRQ, FXL = :FXL, PZR = :PZR, ZBR = ''' + VG_UserName +
              ''', ZBRQ = (select trunc(sysdate) from dual), BZ = :BZ, ' +
              'XGZT = ''1'' where JHH = :OLD_JHH'
          else begin
            if trim(FieldByName('zbr').AsString) <> trim(VG_UserName) then//另一个用户
              Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
                'set ZBR = ''' + VG_UserName + ''' where jhh = :OLD_JHH'
            else
              vl_i_xgzt:= 0;//没有改动,不做处理
          end;
        end
        else//
          Upd_pfxjhtao.ModifySQL.Text := 'update TF_FFXJHTAO ' +
            'set TMC = :TMC, QTMS = :QTMS, QTMZ = :QTMZ, TPSJ = :TPSJ, ' +
            'FXRQ = :FXRQ, FXL = :FXL, PZR = :PZR, ZBR = ''' + VG_UserName +
            ''', ZBRQ = (select trunc(sysdate) from dual), BZ = :BZ, ' +
            'XGZT = ''2'' where JHH = :OLD_JHH';
      end;
    1://图
      Upd_pfxjhtu.ModifySQL.Text := 'update TF_FFXJHTU ' +
        'set TX = :TX, TUMC = :TUMC, MZ = :MZ, SJ = :SJ, ' +
        'GG = :GG, WXGG = :WXGG, FXL = :FXL, FXRQ = :FXRQ, BZ = :BZ, XGZT = :XGZT, YZBB = :YZBB ' +
        'where JHH = :OLD_JHH and TX = :OLD_TX';
    end;
  end;

  data.DM.StartTransaction;
  try
    if (vlp_status = 1) then//add
      case vlp_FocusGrid.Tag of
      0://tao
        with data.Qry_sub do
        begin
          Close;
          SQL.Clear;
          if ExistRecord('tg_yljhhsjb', 'nd=''' + DBEit_tao_nd.Text + ''' and flm=''2''') then
            SQL.Add('update tg_yljhhsjb set lsh = lsh+1 where nd =''' + DBEit_tao_nd.Text + ''' and flm=''2''')
          else
            SQL.Add('insert into tg_yljhhsjb(nd,flm,lsh,cz) values(''' + DBEit_tao_nd.Text + ''',''2'',1,1)');
          ExecSQL;
          (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
        end;
      1://tu
        begin
          if (vl_i_xgzt = 0) or (vl_i_xgzt = 1) then//上次发送过(有效)—被删除—又被加入
          with data.Qry_super do
          begin
            Close;
            SQL.Clear;//恢复套工作表中zbr,zbrq,sdate...字段值
            SQL.Add('Update tf_ffxjhtao set(zbr,zbrq,sdatefx,sdatefxl)=(select ''' +
              VG_UserName + ''',trunc(sysdate),sdatefx,sdatefxl from tf_ffxjhtaols where JHH=''' +
              Qry_pfxjhtao.FieldByName('JHH').AsString + ''' and BBH = ' +
              inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger - 1) + ')');
            ExecSQL;
            DBGid_tu.DataSource.DataSet.FieldByName('XGZT').AsString:= inttostr(vl_i_xgzt);
            //0——所有字段都没有改变
            //1——有的字段发生改变
            Close;
            SQL.Clear;//删除图工作表中修改状态为“已删除”的该图记录
            SQL.Add('Delete from tf_ffxjhtu where jhh=''' +
              Qry_pfxjhtao.FieldByName('JHH').AsString + ''' and tx=' +
              Qry_pfxjhtu.FieldByName('tx').AsString);
            ExecSQL;
          end;
          if vl_i_xgzt=2 then//just 新增
          with data.Qry_super do
          begin
            DBGid_tu.DataSource.DataSet.FieldByName('XGZT').AsString:= '2';
            Close;
            SQL.Clear;
            SQL.Add('Update tf_ffxjhtao set zbr = ''' + VG_UserName + ''', zbrq=(select trunc(sysdate) from dual) where JHH=''' +
              Qry_pfxjhtao.FieldByName('JHH').AsString + '''');
            ExecSQL;
          end;
          (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
        end;
      end
    else//edit
    case vlp_FocusGrid.Tag of
    0://tao
      if vl_i_xgzt<>0 then
      begin
        (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
      end;
    1://tu
      with data.Qry_sub do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Update tf_ffxjhtao set zbr = ''' + VG_UserName +
          ''', zbrq=(select trunc(sysdate) from dual) where JHH=''' +
          Qry_pfxjhtao.FieldByName('JHH').AsString + '''');
        ExecSQL;
        //tx发生改变
        if (vlp_oldtuval.old_tu_tx <> Qry_pfxjhtu.FieldByName('TX').AsString) then
        begin
          Close;
          SQL.Clear;
          SQL.Add('DELETE from tf_ffxjhtu where jhh=''' +
            Qry_pfxjhtu.FieldByName('JHH').AsString + ''' and tx= ' +
            Qry_pfxjhtu.FieldByName('TX').AsString);
          ExecSQL;
          Close;
          SQL.Clear;
          SQL.Add('select tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
            'from tf_ffxjhtuls where JHH=''' +
            Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND BBH=' +
            inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ' AND TX=' +
            Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''');
          Open;
          if (not IsEmpty) then
          begin
            for i:= 0 to FieldCount -1 do
              if trim(Qry_pfxjhtu.FieldByName(fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
                break;
            if i=FieldCount then//上一版本中存在该图序并且所有字段值都相同的记录
              Qry_pfxjhtu.FieldByName('XGZT').AsString:= '0'
            else//上一版本中存在该图序但不是所有字段都相同的记录
              Qry_pfxjhtu.FieldByName('XGZT').AsString:= '1';
          end
          else//上一版本中不存在该图序的记录
            Qry_pfxjhtu.FieldByName('XGZT').AsString:= '2';

          (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
          
          if (Qry_pfxjhtu.FieldByName('XGZT').AsString <> '2') then
          //xgzt=0/1,该记录不是新增的,而且图序发生改变
          begin
            Close;
            SQL.Clear;
            SQL.Add('insert into tf_ffxjhtu(JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,XGZT) ' +
              'select JHH,BBH+1,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,''3'' ' +
              'from tf_ffxjhtuls where jhh=''' + vlp_oldtuval.old_tu_jhh + ''' and bbh=' +
              inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) +' and tx=' + vlp_oldtuval.old_tu_tx);
            ExecSQL;
          end;
        end
        else//未修改tx
        begin
          Close;
          SQL.Clear;
          SQL.Add('select tumc,mz,sj,gg,wxgg,fxl,fxrq,bz ' +
            'from tf_ffxjhtuls where JHH=''' +
            Qry_pfxjhtao.FieldByName('JHH').AsString + ''' AND BBH=' +
            inttostr(Qry_pfxjhtao.FieldByName('BBH').AsInteger-1) + ' AND TX=' +
            Qry_pfxjhtu.FieldByName('TX').AsString + ' AND XGZT<>''3''');
          Open;
          if (not IsEmpty) then
          begin
            for i:= 0 to FieldCount-1 do
              if trim(DBGid_tu.DataSource.DataSet.FieldByName(Fields[i].FieldName).AsString) <> trim(Fields[i].AsString) then
                break;
            if i=FieldCount then//上一版本中该记录所有字段都相同
              Qry_pfxjhtu.FieldByName('XGZT').AsString:= '0'
            else//上一版本中该记录有的字段不相同
              Qry_pfxjhtu.FieldByName('XGZT').AsString:= '1';
          end;
          (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
        end;
      end;
    end;

    if vlp_FocusGrid.Tag = 1 then
      SumTAO;
    data.DM.Commit;
  except
    data.DM.RollBack;
    raise exception.Create('数据访问错误!');
  end;
  (vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
  Qry_pfxjhtao.Close;
  Qry_pfxjhtao.Open;
  if vlp_FocusGrid.Tag = 1 then
  begin
    Qry_pfxjhtu.Close;
    Qry_pfxjhtu.Open;
  end;
  Qry_pfxjhtao.Locate('JHH', vlp_stao_jhh, [loPartialKey]);
  Qry_pfxjhtu.Locate('JHH; TX', VarArrayOf([vlp_stao_jhh, vlp_itu_tx]),[loPartialKey]);
  SetEditStatus(0);
end;

procedure TFrmf_ffxjh.Act_cancelExecute(Sender: TObject);
begin
  data.DM.StartTransaction;
  try
    (vlp_FocusGrid.DataSource.DataSet as TQuery).CancelUpdates;

⌨️ 快捷键说明

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