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

📄 sy_sjndfpjh_lm.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:

{*******************************************************}
{                                                       }
{             上级纪特零枚年度分配计划补录              }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{               编制:中软金马项目开发组                }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级零枚票管理模块 计划管理部分的上级纪特零枚年度分配计划补录菜单调用。
*)

{数据说明:
  根据年度SpinEdit刷新发行计划图信息(界面左边DBGrid)和分配计划(界面右边DBGrid);
  发行计划图信息和分配计划在游标移动的时候彼此影响,定位。
  发行计划图信息(界面左边DBGrid)读取数据来源:TF_PFXJHTAO, TF_PFXJHTU
  分配计划(界面右边DBGrid)读取数据来源:TYS_JJNFPJH_LM, TF_PFXJHTAO;写数据:TYS_JJNFPJH_LM。

  增加:将当前年度中没有做分配计划的票品append到分配计划中。
  删除:将分配计划中当前选中的一条记录删掉。
  保存:将分配数量为0的记录删掉,提交。

2002.06 jillshao
}
unit SY_SJNDFPJH_LM;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, DBCtrls, Grids, DBGrids,
  CurrEdit, RXDBCtrl, ToolEdit, ComCtrls, Buttons, DBTables, Db,
  RxQuery, RXCtrls, Spin, EHGrids, DBGridEh, Menus,
  DBGridEhExport;

type
  Tfrm_SJNDFPJH_LM = class(TFFormBase)
    ModiPanel1: TModiPanel;
    Panel1: TPanel;
    Pnl_edit: TPanel;
    DS_FXJH: TDataSource;
    Panel4: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Qry_FXJH: TQuery;
    Label8: TLabel;
    ND: TSpinEdit;
    Splitter1: TSplitter;
    DBG_FPJH: TDBGridEh;
    DBG_FXJH: TDBGridEh;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    PM_Exp: TPopupMenu;
    MI_Exc: TMenuItem;
    N2: TMenuItem;
    MI_txt: TMenuItem;
    dbge_csh: TDBGridEhExport;
    N1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    Panel2: TPanel;
    Label1: TLabel;
    Edt_ypmc: TEdit;
    Qry_FPJH: TQuery;
    DS_FPJH: TDataSource;
    USQL_FPJH: TUpdateSQL;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormCreate(Sender: TObject);
    procedure NDChange(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Qry_FXJHAfterScroll(DataSet: TDataSet);
    procedure DBG_FXJHEnter(Sender: TObject);
    procedure Qry_FPJH1AfterScroll(DataSet: TDataSet);
    procedure Qry_FPJH1JHFPZTSSetText(Sender: TField; const Text: string);
    procedure MI_ExcClick(Sender: TObject);
    procedure MI_txtClick(Sender: TObject);
    procedure Qry_FPJH1BeforeInsert(DataSet: TDataSet);
    procedure PM_ExpPopup(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Edt_ypmcKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Qry_FXJHFilterRecord(DataSet: TDataSet; var Accept: Boolean);
    procedure DBG_FPJHEnter(Sender: TObject);
    procedure Qry_FPJHBeforeInsert(DataSet: TDataSet);
    procedure Qry_FPJHAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
    FDtState: TDataState;
    V_S_locPPMC: string;
    procedure Save;
    procedure SetState(Value: TdataState);
    function CheckExit(): boolean;
    procedure DoADDFPJH;
  public
    { Public declarations }
  end;

function Show_SJNDFPJH_LM: Boolean;
var
  frm_SJNDFPJH_LM: Tfrm_SJNDFPJH_LM;

implementation

uses datas, Pub;
{$R *.DFM}

function Show_SJNDFPJH_LM: Boolean;
begin
  Application.CreateForm(Tfrm_SJNDFPJH_LM, frm_SJNDFPJH_LM);
  with frm_SJNDFPJH_LM do
  try
    if CheckRight(frm_SJNDFPJH_LM, [Modipanel1]) then
      result := ShowModal = MB_OK;
  finally
    Free;
  end;
end;

procedure Tfrm_SJNDFPJH_LM.SetState(Value: TdataState);
var
  i: integer;
  v_col: TColor;
  procedure SetControls(Value: Boolean);
  begin
    ND.Enabled := Value;
    DBG_FXJH.Enabled := Value;
    DBG_FPJH.ReadOnly := Value;
  end;
begin
  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls(FDtState = dtBrowse);
  if Value = dtBrowse then
    v_col := ClBtnFace
  else
    v_col := ClWindow;
  DBG_FPJH.Columns[1].Color := v_col;
  DBG_FPJH.Columns[2].Color := v_col;
  DBG_FPJH.Columns[3].Color := v_col;
  DBG_FPJH.Columns[4].Color := v_col;
end;

procedure Tfrm_SJNDFPJH_LM.Save;
const
  CS_UPD = 'update TYS_JJNFPJH_LM set JHFPZTS = ''%s'', ZBR = ''%s'', ZDRQ = to_date(''%s'',''YYYY-MM-DD''), BZ = ''%s''' +
    ' where JHH = ''%s'' and TX = ''%s''';
  CS_INS = 'insert into TYS_JJNFPJH_LM(JHH, TX, DWDM, ND, PPMC, JHFPZTS, ZT, ZBR, ZDRQ, BZ) values' +
    '(''%s'', ''%s'', ''%s'', ''%s'', ''%s'', ''%s'', ''0'', ''%s'', to_date(''%s'',''YYYY-MM-DD''), ''%s'')';
  CS_DEL = 'delete from TYS_JJNFPJH_LM where JHH = ''%s'' and TX = ''%s''';
  procedure DoApplyUpd;
  var
    v_sql: string;
  begin
    Qry_FPJH.First;
    while not Qry_FPJH.Eof do
      with Qry_FPJH do
      begin
        if FieldByName('JHFPZTS').AsInteger = 0 then
        begin
          v_sql := format(CS_DEL, [FieldByName('JHH').AsString, FieldByName('TX').AsString]);
          AssignSQLstr(data.qrytmp, v_sql);
          data.qrytmp.ExecSQL;
        end
        else
        begin
          v_sql := format(CS_UPD, [FieldByName('JHFPZTS').AsString, FieldByName('ZBR').AsString,
            formatdatetime('yyyy-mm-dd', FieldByName('ZDRQ').AsDateTime),
              FieldByName('BZ').AsString, FieldByName('JHH').AsString,
              FieldByName('TX').AsString]);
          AssignSQLstr(data.qrytmp, v_sql);
          data.qrytmp.ExecSQL;
          if data.qrytmp.RowsAffected = 0 then
          begin
            v_sql := format(CS_INS, [FieldByName('JHH').AsString, FieldByName('TX').AsString,
              FieldByName('DWDM').AsString, FieldByName('ND').AsString,
                FieldByName('PPMC').AsString, FieldByName('JHFPZTS').AsString,
                FieldByName('ZBR').AsString, formatdatetime('yyyy-mm-dd', FieldByName('ZDRQ').AsDateTime),
                FieldByName('BZ').AsString]);
            AssignSQLstr(data.qrytmp, v_sql);
            data.qrytmp.ExecSQL;
          end;
        end;
        Qry_FPJH.Next;
      end;
  end;
begin
  Qry_FPJH.First;
  while not Qry_FPJH.Eof do
  begin
    if Qry_FPJH.FieldByName('JHFPZTS').AsInteger > 0 then
    begin
      if Qry_FPJH.FieldByName('ZBR').AsString = '' then
      begin
        CHQMsgBox('制表人不能为空!');
        DBG_FPJH.SetFocus;
        DBG_FPJH.SelectedIndex := 2;
        exit;
      end;

      if Qry_FPJH.FieldByName('ZDRQ').AsString = '' then
      begin
        CHQMsgBox('制表日期不能为空!');
        DBG_FPJH.SetFocus;
        DBG_FPJH.SelectedIndex := 3;
        exit;
      end;
    end;
    Qry_FPJH.Next;
  end;

  data.DM.StartTransaction;
  try
    DoApplyUpd;
    Qry_FPJH.Cancel;
    data.DM.Commit;
    NDChange(nil);
  except
    data.DM.Rollback;
    exit;
  end;
  Qry_FPJH.CancelUpdates;
  SetState(dtBrowse);
end;

procedure Tfrm_SJNDFPJH_LM.DoADDFPJH;
var
  v_b_add: boolean;
begin
  if Qry_FXJH.IsEmpty then
  begin
    CHQMsgBox('没有发行计划信息!');
    exit;
  end;
  Qry_FPJH.AfterScroll := nil;
  Qry_FXJH.First;
  Qry_FPJH.First;
  Qry_FPJH.BeforeInsert := nil;
  while not Qry_FXJH.Eof do
  begin
    Qry_FPJH.Locate('JHH;TX', VarArrayOf([Qry_FXJH.FieldByName('JHH').AsString, Qry_FXJH.FieldByName('TX').AsString]), []);
    if (Qry_FPJH.FieldByName('JHH').AsString <> Qry_FXJH.FieldByName('JHH').AsString) or
      (Qry_FPJH.FieldByName('TX').AsString <> Qry_FXJH.FieldByName('TX').AsString) then
    begin
      v_b_add := true;
      Qry_FPJH.Append;
      Qry_FPJH.FieldByName('JHH').AsString := Qry_FXJH.FieldByName('JHH').AsString;
      Qry_FPJH.FieldByName('TX').AsString := Qry_FXJH.FieldByName('TX').AsString;
      Qry_FPJH.FieldByName('ND').AsString := ND.Text;
      Qry_FPJH.FieldByName('DWDM').AsString := VG_UnitID;
      Qry_FPJH.FieldByName('PPMC').AsString := Qry_FXJH.FieldByName('TMC').AsString;
      Qry_FPJH.FieldByName('ZT').AsString := '0';
      Qry_FPJH.FieldByName('TUMC').AsString := Qry_FXJH.FieldByName('TMC').AsString + '(' + Qry_FXJH.FieldByName('TX').AsString + ')';
    end;
    Qry_FXJH.Next;
  end;
  Qry_FPJH.BeforeInsert := Qry_FPJHBeforeInsert;
  Qry_FPJH.AfterScroll := Qry_FPJHAfterScroll;
  if v_b_add then
    SetState(dtInsert);
end;

procedure Tfrm_SJNDFPJH_LM.ModiPanel1BtnClick(Index: TBtnVisible);

⌨️ 快捷键说明

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