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

📄 gf_ffxjh.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    data.DM.Commit;
  except
    data.DM.RollBack;
    raise exception.Create('数据访问错误!');
  end;
  (vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
  case vlp_focusgrid.tag of
  0://套
    Qry_pfxjhtao.Locate('JHH', vlp_stao_jhh, [loPartialKey]);
  1://图
    Qry_pfxjhtu.Locate('JHH; TX', VarArrayOf([vlp_stao_jhh, vlp_itu_tx]),[loPartialKey]);
  end;
  SetEditStatus(0);
end;

procedure TFrmf_ffxjh.Act_exitExecute(Sender: TObject);
begin
  close;
end;

procedure TFrmf_ffxjh.Act_printExecute(Sender: TObject);
begin
  if DBGid_tao.DataSource.DataSet.RecordCount = 0 then
  begin
    CHQMsgBox('当前没有可打印的记录!');
    exit;
  end;
  with TFrmf_print.Create(application) do
  begin
//    Pnt_init(1, DBGid_tao.DataSource.DataSet);
    DBGid_tao.DataSource.DataSet.First;
    QRe_ffx.Preview;
    Free;
  end;
end;

procedure TFrmf_ffxjh.Act_selectExecute(Sender: TObject);
var
  i: integer;
  sqlstr: string;
begin
  if vlp_status = 0 then //浏览
  begin
    Frmf_select:= TFrmf_select.Create(Application);
    with Frmf_select do
    begin
      GBo_fxjh.Visible := true;
      Caption := '查询——封片发行';
      ActiveControl := Eit_f_nd;

      GBo_fxjh.Top := 12;
      GBo_fxjh.Left := 12;

      Width := Frmf_select.GBo_fxjh.Width + 30;
      Height := Frmf_select.GBo_fxjh.Height + 80;
      BBt_cancel.Top := Frmf_select.GBo_fxjh.Height + 22;
      BBt_cancel.Left := Frmf_select.Width - 30 - Frmf_select.BBt_cancel.Width;
      BBt_ok.Top := Frmf_select.GBo_fxjh.Height + 22;
      BBt_ok.Left := Frmf_select.BBt_cancel.Left - 11 - Frmf_select.BBt_ok.Width;

      Qry_pplb.First;
      for i:= 0 to Qry_pplb.RecordCount - 1 do
      begin
        CBo_f_pplb.Items.Add(Qry_pplb.FieldByName('MC').AsString);
        Qry_pplb.Next;
      end;

      Qry_tzdm.First;
      for i:= 0 to Qry_tzdm.RecordCount - 1 do
      begin
        CBo_f_tz.Items.Add(Qry_tzdm.FieldByName('MC').AsString);
        Qry_tzdm.Next;
      end;

      tag := 1;
      ShowModal;
    end;

    if (Frmf_select.ModalResult = mrok ) and (Frmf_select.Tag = 0) then
    with data do begin
      Qry_super.Close;
      Qry_super.Sql.Clear;
      Qry_super.Sql.Add(GetSQLStr_GF(6,1));
      Qry_super.Open;
      if Qry_super.IsEmpty then
        CHQMsgBox('符合当前查询条件的记录数为0')
      else begin
        if Frmf_select.ChBo_f_ls.Checked then
         sqlstr :=' select '' '' tudm ,'' '' zh,JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,'
                 +' MZ,SJ,GG,WXGG,FXL,FXRQ,XGZT,BZ,YZBB,'
                 +' DECODE(XGZT,''0'',''未改动'',''1'',''修改'',''2'',''新增'',''3'',''删除'') as ZT from TF_FFXJHTULS '
                 +' where JHH=:JHH and XGZT <> ''3'' order by TO_NUMBER(TX)'
        else
         sqlstr := ' select '' '' tudm ,'' '' zh,JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,'
                 +' MZ,SJ,GG,WXGG,FXL,FXRQ,XGZT,BZ,YZBB,'
                 +' DECODE(XGZT,''0'',''未改动'',''1'',''修改'',''2'',''新增'',''3'',''删除'') as ZT from TF_FFXJHTU '
                 +' where JHH=:JHH and XGZT <> ''3'' order by TO_NUMBER(TX)';
        SetEditStatus(0, -3);
        if  Frmf_select.ChBo_f_ls.Checked then
        begin
          SetEditStatus(2, -1);
          Act_select.Caption := '清屏';
          Act_select.ImageIndex := 21;
        end;
        with Qry_pfxjhtao do
        begin
          Close;
          SQL.Text :=Qry_super.SQL.Text;
          Open;
        end;
        with Qry_pfxjhtu do
        begin
          Close;
          SQL.Text :=sqlstr;
        end;
        Qry_pfxjhtaoAfterScroll(nil);
      end;
    end;
    Frmf_select.Free;
  end
  else if vlp_status = 2 then//查询结果浏览状态,返回初始状态
  begin
    Act_select.Caption := '查询';
    Act_select.ImageIndex := 20;
    Qry_pfxjhtu.Close ;
    with Qry_pfxjhtu do
    begin
      Close;
      SQL.Text  :=' select '' '' tudm ,'' '' zh,JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,'
                 +' MZ,SJ,GG,WXGG,FXL,FXRQ,XGZT,BZ,YZBB,'
                 +' DECODE(XGZT,''0'',''未改动'',''1'',''修改'',''2'',''新增'',''3'',''删除'') as ZT from TF_FFXJHTU '
                 +' where JHH=:JHH and XGZT <> ''3'' order by TO_NUMBER(TX)';
    end;
    Qry_pfxjhtaoAfterScroll(nil);
    SetEditStatus(0, -3);
 //   Qry_pfxjhtao.Locate('JHH', vlp_stao_jhh, [loPartialKey]);
    SpinEdit1Change(nil);
  end;

end;


procedure TFrmf_ffxjh.DBGid_taoEnter(Sender: TObject);
var
  i: integer;
  vl_s_oldfld: string;
begin
  vlp_FocusGrid := (Sender as TDBGrid);
  if (vlp_FocusGrid = DBGid_tao) then
    DBGid_tao.TitleFont.Color := clnavy
  else
    DBGid_tao.TitleFont.Color := clblack;

  if (vlp_FocusGrid = DBGid_tu) then
    DBGid_tu.TitleFont.Color := clnavy
  else
    DBGid_tu.TitleFont.Color := clblack;

  GBo_tao.Visible := (vlp_FocusGrid = DBGid_tao);
  GBo_tu.Visible := (vlp_FocusGrid = DBGid_tu);

  if (vlp_FocusGrid = DBGid_tu) then
  begin
    Act_add.Enabled := (not Qry_pfxjhtao.IsEmpty) and (vlp_status = 0);
    Act_Delete.Enabled := (not Qry_pfxjhtu.IsEmpty) and (vlp_status = 0);
    Act_modify.Enabled := Act_Delete.Enabled;
    for i:= 0 to GBo_tu.ControlCount -1 do
    begin
      if (not(GBo_tu.Controls[i] is TLabel)) and (GBo_tu.Controls[i].Visible) then
        if uppercase(GBo_tu.Controls[i].ClassName) = 'TDBLOOKUPCOMBOBOX' then
        begin
          vl_s_oldfld:= (GBo_tu.COntrols[i] as TDBLookUpComboBox).DataField;
          (GBo_tu.COntrols[i] as TDBLookUpComboBox).DataField := '';
          (GBo_tu.COntrols[i] as TDBLookUpComboBox).DataField := vl_s_oldfld;
        end;
        if uppercase(GBo_tu.Controls[i].ClassName) = 'TDBEDIT' then
        begin
          vl_s_oldfld:= (GBo_tu.COntrols[i] as TDBEdit).DataField;
          (GBo_tu.COntrols[i] as TDBEdit).DataField := '';
          (GBo_tu.COntrols[i] as TDBEdit).DataField := vl_s_oldfld;
        end;
        if uppercase(GBo_tu.Controls[i].ClassName) = 'TDBMEMO' then
        begin
          vl_s_oldfld:= (GBo_tu.COntrols[i] as TDBMemo).DataField;
          (GBo_tu.COntrols[i] as TDBMemo).DataField := '';
          (GBo_tu.COntrols[i] as TDBMemo).DataField := vl_s_oldfld;
        end;
    end;
  end
  else
  begin
    Act_add.Enabled := (vlp_status = 0);
    Act_Delete.Enabled := (not Qry_pfxjhtao.IsEmpty) and (vlp_status = 0);
    Act_modify.Enabled := Act_Delete.Enabled;
    Act_send_fx.Enabled := Act_Delete.Enabled;
    Act_send_fxl.Enabled := Act_Delete.Enabled;
  end;
end;

procedure TFrmf_ffxjh.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  KeyEntDown(Sender, Key, Shift);
end;

procedure TFrmf_ffxjh.DBGid_taoMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (DBGid_tao.DataSource.DataSet.IsEmpty) then
    exit
  else
  begin
    if DBGid_tao.SelectedRows.Count = 0 then
      DBGid_tao.SelectedRows.CurrentRowSelected := true;
    if (vlp_status <> 2) then
      SetEditStatus(4, DBGid_Tao.SelectedRows.Count);
  end;
end;

procedure TFrmf_ffxjh.Act_fs_allExecute(Sender: TObject);
var
  i: integer;
  vl_s_insql: string;
  vl_s_edinsql: string;
  vl_s_jsdw: string;
  vl_sl_jsdw: TStringList;
  vl_s_fxl: string[20];
  vl_b_ed: boolean;
begin
  if (DBGid_tao.DataSource.DataSet.IsEmpty) then
  begin
    CHQMsgBox('当前没有可发送的记录!');
    exit;
  end;

  if DBGid_tao.SelectedRows.Count = 0 then
  begin
    DBGid_tao.SelectedRows.CurrentRowSelected := true;
  end;

  vl_b_ed := false;
  //set insql、edinsql str
  for i:=0 to DBGid_tao.SelectedRows.Count -1 do
  begin
    DBGid_tao.DataSource.DataSet.GotoBookmark(pointer(DBGid_tao.SelectedRows.Items[i]));
    if (vlp_b_isfxl) and
       (DBGid_tao.DataSource.DataSet.FieldByName('SDATEFX').AsString = '') then
    begin
      CHQMsgBox('封片 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString + ' 的发行计划尚未发送!');
      exit;
    end;
    if DBGid_tu.DataSource.DataSet.IsEmpty then
    begin
      CHQMsgBox('封片 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString + ' 的发行计划中没有图信息!');
      exit;
    end;
    // check tx
    with data.Qry_super do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select jhh from tf_ffxjhtu where jhh=''' +
      DBGid_tao.DataSource.DataSet.FieldByName('JHH').AsString +
      ''' and xgzt<>''3'' having count(jhh)<>max(tx) group by jhh,tzdm');
      Open;
      if (not IsEmpty) then
      begin
        CHQMsgBox('请确定封片 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString + #13 + '  的发行计划图信息中图序是连续的再发送!');
        exit;
      end;
    end;

    if ((not vlp_b_isfxl) and
       (DBGid_tao.DataSource.DataSet.FieldByName('QXBZ').AsString = 'H')) or //发行计划——作为标准向全国广播的标志
       (vlp_b_isfxl and (DBGid_tao.DataSource.DataSet.FieldByName('SDATEFXL').AsString <> '')) then
    begin
      if CHQMsgBox('封片 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString + ' 的发行计划已向全国广播过,确定要发送吗?', 2) = IDNo then
        Exit;
      vl_b_ed := true;
      vl_s_edinsql := vl_s_edinsql + '''' + DBGid_tao.DataSource.DataSet.FieldByName('JHH').AsString + ''', ';
    end
    else//未发送过(含发送后又有改动)
      vl_s_insql := vl_s_insql + '''' + DBGid_tao.DataSource.DataSet.FieldByName('JHH').AsString + ''', ';
  end;

  vl_s_insql := copy(vl_s_insql, 1, length(vl_s_insql)-2);
  vl_s_edinsql := copy(vl_s_edinsql, 1, length(vl_s_edinsql)-2);


  vl_sl_jsdw:= TStringList.Create;
  with data.Qry_send do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select jsdwdm from tg_xttxfsgnb where csdm=');
    if vlp_b_isfxl then
      SQL.Add('''sf_ffxljh''')
    else
      SQL.Add('''sf_ffxjh''');
    Open;
    vl_s_jsdw := trim(Fields[0].AsString);
    
    if (length(vl_s_jsdw) = 0) then
    begin
      CHQMsgBox('请先设置接收单位再发送发行计划!');
      exit;
    end;

    vl_sl_jsdw.Clear;
    while pos(',', vl_s_jsdw) >0 do
    begin
      vl_sl_jsdw.Add(copy(vl_s_jsdw, 1, pos(',', vl_s_jsdw) -1));
      vl_s_jsdw := copy(vl_s_jsdw, pos(',', vl_s_jsdw)+1, length(vl_s_jsdw));
    end;
    vl_sl_jsdw.Add(vl_s_jsdw);
  end;
//**
  if not vl_b_ed then
    if CHQMsgBox('确实要向全国广播这些封片的发行计划吗?', 2)=IDNo then
      exit;

  vlp_stao_jhh := DBGid_tao.DataSource.DataSet.fieldbyname('JHH').AsString;

  if (vlp_b_isfxl) then
    vl_s_fxl := 'FXL'
  else
    vl_s_fxl := '0';

  data.DM.StartTransaction;
  with data.Qry_send do
  try
//*********
//    if (length(vl_s_insql)>0) then//未发送过
    begin
      if (length(vl_s_edinsql)>0) then
        if (length(vl_s_insql)>0) then
          vl_s_insql := vl_s_insql + ',' + vl_s_edinsql
        else
          vl_s_insql := vl_s_edinsql;
      for i:= 0 to vl_sl_jsdw.Count-1 do
      begin
        Close;
        SQL.Clear;//tao_caco
        SQL.Add('INSERT INTO TF_FFXJHTAO_CACO ' +
          '(JHH,BBH,QXBZ,ND,XH,PPLB,TZDM,TMC,TJC,QTMS,QTMZ,TPSJ,FXRQ,FXL,PZR,ZBR,ZBRQ,BZ,COMM_DEPT,XGZT) ' +
          'SELECT JHH,BBH,''H'',ND,XH,PPLB,TZDM,TMC,TJC,QTMS,QTMZ,TPSJ,FXRQ,' +
          vl_s_fxl + ',PZR,ZBR,ZBRQ,BZ,''' + vl_sl_jsdw.Strings[i] +
          ''',XGZT FROM TF_FFXJHTAO WHERE JHH IN (' + vl_s_insql + ')');
        ExecSQL;
        Close;
        SQL.Clear;//tu_caco
        SQL.Add('INSERT INTO TF_FFXJHTU_CACO ' +
          '(JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,TUJC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,COMM_DEPT,XGZT) ' +
          'SELECT JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,TUJC,MZ,SJ,GG,WXGG,' +
          vl_s_fxl + ',FXRQ,BZ,''' + vl_sl_jsdw.Strings[i] +
          ''',XGZT FROM TF_FFXJHTU WHERE JHH IN (' + vl_s_insql + ')');
        ExecSQL;
      end;
      Close;
      SQL.Clear;//taols
      SQL.Add('INSERT INTO TF_FFXJHTAOLS ' +
        '(JHH,BBH,QXBZ,ND,XH,PPLB,TZDM,TMC,TJC,QTMS,QTMZ,TPSJ,FXRQ,FXL,PZR,ZBR,ZBRQ,BZ,XGZT,SDATEFX,SDATEFXL) ' +
        'Select JHH,BBH,''H'',ND,XH,PPLB,TZDM,TMC,TJC,QTMS,QTMZ,TPSJ,FXRQ,' +
        vl_s_fxl + ',PZR,ZBR,ZBRQ,BZ,XGZT,');
      if vlp_b_isfxl then
        SQL.Add('SDATEFX, sysdate')
      else
        SQL.Add('sysdate, SDATEFXL');//SDATEFX ' +
      SQL.Add('from tf_ffxjhtao WHERE JHH IN (' + vl_s_insql + ')');
      ExecSQL;
      Close;
      SQL.Clear;//tuls
      SQL.Add('INSERT INTO TF_FFXJHTULS(JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,TUJC,MZ,SJ,GG,WXGG,FXL,FXRQ,BZ,XGZT) ' +
        'select JHH,BBH,TZDM,TX,TBBH,QXBZ,PPLB,TUMC,TUJC,MZ,SJ,GG,WXGG,' +
        vl_s_fxl + ',FXRQ,BZ,XGZT from tf_ffxjhtu WHERE JHH IN (' + vl_s_insql + ')');
      ExecSQL;
      Close;
      SQL.Clear;//***清除已删除的图信息
      SQL.Add('delete from tf_ffxjhtu where jhh in (' + vl_s_insql + ') and xgzt=''3''');
      ExecSQL;
      Close;
      SQL.Clear;//********** set tao.bbh、tao.sdatefx/fxl、tao.xgzt
      SQL.Add('update tf_ffxjhtao set bbh=bbh+1, ');
      if vlp_b_isfxl then
        SQL.Add('sdatefxl')
      else
        SQL.Add('sdatefx');

⌨️ 快捷键说明

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