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

📄 sy_zdxxwh.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  (vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
  vlp_FocusGrid.DataSource.DataSet.Close;
  vlp_FocusGrid.DataSource.DataSet.Open;
  case vlp_focusgrid.tag of
    0: //套
      Qry_tao.Locate('JHH', vlp_stao_jhh, []);
    1: //图
      Qry_mei.Locate('JHH; MXH', VarArrayOf([vlp_stao_jhh, vlp_imei_mxh]), []);
  end;
end;

procedure TFrm_grp.Act_modifyExecute(Sender: TObject);
begin
  if vlp_FocusGrid.DataSource.DataSet.IsEmpty then
  begin
    CHQMsgBox('当前没有可修改的记录。');
    exit;
  end;

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

  vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
  if vlp_focusgrid.tag = 1 then //图
    vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;

  vlp_FocusGrid.DataSource.DataSet.Edit;
  SetEditStatus(3);
  if vlp_FocusGrid.Tag = 1 then //tu
  begin
    ActiveControl := DBEdit13;
    vlp_oldmeival.old_mei_jhh := Qry_mei.FieldByName('JHH').AsString;
    vlp_oldmeival.old_mei_mxh := Qry_mei.FieldByName('MXH').AsString;
  end
  else //tao
  begin
    ActiveControl := DBEdit3;
  end;

end;

procedure TFrm_grp.Act_saveExecute(Sender: TObject);
begin

  if (vlp_status = 1) then //add编辑状态
  begin
    case vlp_FocusGrid.tag of
      0: //套
        begin
          if ExistRecord('TF_YPFXJHTAO', 'JHH = ''' +
            trim(Qry_tao.FieldByName('JHH').AsString) + '''') then
          begin
            CHQMsgBox('该套票品的发行计划信息已经存在!');
            ActiveControl := DBEdit1;
            exit;
          end;
          Qry_tao.FieldByName('ZBR').AsString := VG_UserName;
        end;
      1: //图
        begin
          if ExistRecord('TF_YPFXJHM', 'JHH=''' + trim(Qry_tao.FieldByName('JHH').AsString) +
            ''' AND MXH=''' + trim(Qry_mei.FieldByName('MXH').AsString) + '''') then
          begin
            CHQMsgBox('该枚票品的记录已经存在!');
            ActiveControl := DBEdit13;
            exit;
          end;
        end;
    end;

    vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
    if vlp_FocusGrid.Tag = 1 then //图
    begin
      vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
    end;
  end
  else
  begin //edit
  //**
    if vlp_FocusGrid.Tag = 1 then //tu
    begin
      if (Qry_mei.FieldByName('MXH').AsString <> vlp_oldmeival.old_mei_mxh) then //(Qry_mei.FieldByName('JHH').AsString <> oldtuval.old_tu_jhh) or
      begin
        if ExistRecord('TF_YPFXJHM', 'JHH=''' +
          Qry_tao.FieldByName('JHH').AsString + ''' AND MXH=''' +
          Qry_mei.FieldByName('MXH').AsString + '''') then
        begin
          CHQMsgBox('该枚票品的发行计划信息已经存在!');
          Qry_mei.FieldByName('MXH').AsString := vlp_oldmeival.old_mei_mxh;
          ActiveControl := DBEdit13;
          exit;
        end;
        vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
      end;
    end;
  end;

  Qry_tao.DataBase.StartTransaction;
  try
    (vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
    Qry_tao.DataBase.Commit;
  except
    Qry_tao.DataBase.RollBack;
    raise exception.Create(vlp_s_errmsg);
  end;
  (vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
  vlp_FocusGrid.DataSource.DataSet.Close;
  vlp_FocusGrid.DataSource.DataSet.Open;
  case vlp_focusgrid.tag of
    0: //套
      Qry_tao.Locate('JHH', vlp_stao_jhh, []);
    1: //图
      Qry_mei.Locate('JHH; MXH', VarArrayOf([vlp_stao_jhh, vlp_imei_mxh]), []);
  end;
  SetEditStatus(0);

end;

procedure TFrm_grp.Act_cancelExecute(Sender: TObject);
begin
  Qry_tao.DataBase.StartTransaction;
  try
    (vlp_FocusGrid.DataSource.DataSet as TQuery).CancelUpdates;
    Qry_tao.DataBase.Commit;
  except
    Qry_tao.DataBase.RollBack;
    raise exception.Create(vlp_s_errmsg);
  end;
  (vlp_FocusGrid.DataSource.DataSet as TQuery).CommitUpdates;
  case vlp_focusgrid.tag of
    0: //套
      Qry_tao.Locate('JHH', vlp_stao_jhh, []);
    1: //图
      Qry_mei.Locate('JHH; MXH', VarArrayOf([vlp_stao_jhh, vlp_imei_mxh]), []);
  end;
  SetEditStatus(0);
end;

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

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

  if (vlp_FocusGrid = DBGid_mei) then
  begin
    DBGid_mei.TitleFont.Color := clnavy;
    DBGid_mei.Color := clWindow;
    DBGid_tao.Color := cl3DLight;
  end
  else
  begin
    DBGid_mei.TitleFont.Color := clblack;
    DBGid_tao.Color := clWindow;
    DBGid_mei.Color := cl3DLight;
  end;

  GBo_tao.Visible := (vlp_FocusGrid = DBGid_tao);
  GBo_mei.Visible := (vlp_FocusGrid = DBGid_mei);

  Act_send.Enabled := (not Qry_tao.IsEmpty) and (vlp_status = 0);

  if (vlp_FocusGrid = DBGid_mei) then
  begin
    Act_add.Enabled := (not Qry_tao.IsEmpty) and (vlp_status = 0);
    Act_Delete.Enabled := (not Qry_mei.IsEmpty) and (vlp_status = 0);
    Act_modify.Enabled := Act_Delete.Enabled;

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

procedure TFrm_grp.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_RETURN then
  begin
    if ((Sender as TCustomForm).activecontrol is TMEMO) then //or (self.activecontrol is TDBGRid) then
    else
    begin
      postmessage((Sender as TWinControl).handle, WM_KEYDOWN, 9, 0);
      postmessage((Sender as TWinControl).handle, WM_KEYUP, 9, 0);
    end;
  end;
end;

procedure TFrm_grp.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 TFrm_grp.Act_sendExecute(Sender: TObject);
var
  i: integer;
  vl_s_insql: string;
  vl_s_edinsql: string;
  vl_s_jsdw: string;
  vl_sl_jsdw: TStringList;
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;

  //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 DBGid_mei.DataSource.DataSet.IsEmpty then
    begin
      CHQMsgBox('票品 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString +
        #13 + '  的发行计划中没有枚信息!');
      exit;
    end;
    with Qry_super do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select JHH from TF_GRPFXJHM where JHH=''' +
        DBGid_tao.DataSource.DataSet.FieldByName('JHH').AsString +
        ''' having count(JHH)<>max(MXH) group by JHH');
      Open;
      if (not IsEmpty) then
      begin
        CHQMsgBox('请确定票品 ' + DBGid_tao.DataSource.DataSet.FieldByName('TMC').AsString + #13 + '  的发行计划枚信息中枚序号是连续的再发送!');
        exit;
      end;
    end;

    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_sl_jsdw := TStringList.Create;
  with Qry_super do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select jsdwdm from tg_xttxfsgnb where csdm=''sf_grpfxjh''');
    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 CHQMsgBox('确实要向全国广播这些邮票的发行计划吗?', 2) = IDNo then
    exit;

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

  data.DM.StartTransaction;
  with Qry_super do
  try
//*********
    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_GRPFXJHTAO_CACO ' +
        '(JHH,ND,XH,JYPLB,TZDM,DW,TMC,TJC,QTMS,CB,QTSJ,FXRQ,JHFXL,FXDWDM,FXDWMC,PZR,ZBR,ZBRQ,BZ,COMM_DEPT) ' +
        'SELECT JHH,ND,XH,JYPLB,TZDM,DW,TMC,TJC,QTMS,CB,QTSJ,FXRQ,JHFXL,FXDWDM,FXDWMC,PZR,ZBR,ZBRQ,BZ,''' + vl_sl_jsdw.Strings[i] +
        ''' FROM TF_GRPFXJHTAO WHERE JHH IN (' + vl_s_insql + ')');
      ExecSQL;
      Close;
      SQL.Clear; //tu_caco
      SQL.Add('INSERT INTO TF_GRPFXJHM_CACO ' +
        '(JHH,MXH,PPLB,DW,TUMC,TUJC,CB,SJ,JHFXL,BZ,COMM_DEPT) ' +
        'SELECT JHH,MXH,PPLB,DW,TUMC,TUJC,CB,SJ,JHFXL,BZ,''' + vl_sl_jsdw.Strings[i] +
        ''' FROM TF_GRPFXJHM WHERE JHH IN (' + vl_s_insql + ')');
      ExecSQL;
    end;

//////////////////////////////////
    data.DM.Commit;
    CHQMsgBox('票品发行计划发送成功!');
  except
    data.DM.RollBack;
    raise exception.Create('发送失败:数据访问错误!');
  end;
  vl_sl_jsdw.Destroy;
  DBGid_tao.DataSource.DataSet.Close;
  DBGid_tao.DataSource.DataSet.Open;
  DBGid_tao.DataSource.DataSet.Locate('JHH', vlp_stao_jhh, []);
end;

procedure TFrm_grp.SpeedButton1Click(Sender: TObject);
begin
  LoadBitmapToBlobField(Qry_mei.FieldByName('TA'));
end;

procedure TFrm_grp.SpeedButton2Click(Sender: TObject);
begin
  LoadBitmapToBlobField(Qry_tao.FieldByName('TA'));
end;

procedure TFrm_grp.LoadBitmapToBlobField(const AField: TField);
var
  FBitmap: TBitmap;
begin
  if Assigned(AField) and (AField.IsBlob) then
    with TOpenPictureDialog.Create(nil) do
    try
      Filter := 'Bitmap files(*.bmp)|*.bmp';
      if Execute then
      begin
        FBitmap := TBitmap.Create;
        try
          FBitmap.LoadFromFile(FileName);
          AField.DataSet.Edit;
          AField.Assign(FBitmap);
          AField.DataSet.Post;
        finally
          FBitmap.Free;
        end;
      end;
    finally
      Free;
    end;
end;


procedure TFrm_grp.SpinEdit1Change(Sender: TObject);
begin
  Qry_tao.Filter := 'ND=''' + SpinEdit1.Text + '''';
end;

procedure TFrm_grp.Qry_taoUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
  if pos('Key violation', e.Message) <> 0 then
    vlp_s_errmsg := '该票品已经存在!'
  else if pos('Field value required', e.Message) <> 0 then
    vlp_s_errmsg := '带"**"的字段不能为空,请重新确定再保存!'
  else
    vlp_s_errmsg := '数据访问错误!';

end;

procedure TFrm_grp.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanCLose := CheckExit;
end;

procedure TFrm_grp.DBLookupComboBox3Exit(Sender: TObject);
begin
  Qry_tao.FieldByName('FXDWMC').Value := TDBLookupComboBox(Sender).Text;

end;

procedure TFrm_grp.FormCreate(Sender: TObject);
begin
  Application.OnException := nil;
  GetAllColWidth(Self);
end;

procedure TFrm_grp.Qry_taoCBGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  CurrGetText(Sender, Text, DisplayText);
end;

procedure TFrm_grp.Qry_taoCBSetText(Sender: TField; const Text: string);
begin
  CurrSetText(Sender, Text);
end;

procedure TFrm_grp.Qry_taoQTSJGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  CurrGetText(Sender, Text, DisplayText);
end;

procedure TFrm_grp.Qry_taoQTSJSetText(Sender: TField;
  const Text: string);
begin
  CurrSetText(Sender, Text);
end;

procedure TFrm_grp.Qry_meiCBGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  CurrGetText(Sender, Text, DisplayText);
end;

procedure TFrm_grp.Qry_meiCBSetText(Sender: TField; const Text: string);
begin
  CurrSetText(Sender, Text);
end;

procedure TFrm_grp.Qry_meiSJGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  CurrGetText(Sender, Text, DisplayText);
end;

procedure TFrm_grp.Qry_meiSJSetText(Sender: TField; const Text: string);
begin
  CurrSetText(Sender, Text);
end;

procedure TFrm_grp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.OnException := Error.HandleError;
  SaveAllColWidth(Self);
end;

procedure TFrm_grp.DBLCbox_DLCloseUp(Sender: TObject);
begin
  Qry_pplb.Close;
  Qry_pplb.Params[0].AsString := DBLCbox_DL.keyValue;
  Qry_pplb.Open;
end;   

procedure TFrm_grp.Qry_taoAfterScroll(DataSet: TDataSet);
begin
  DBLCbox_DL.KeyValue := copy(Qry_tao.FieldByName('JYPLB').AsString, 1, 1);
  DBLCbox_DLCloseUp(nil);
end;

end.

⌨️ 快捷键说明

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