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

📄 sy_lmndqljh.pas

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

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

{数据说明:
  根据年度SpinEdit、本级/下级RadioGroup、单位名称LookupComboBox刷新年度请领计划DBGrid;
  单位名称LookupComboBox数据来源:TGS_GXDWSJB,直接下级&零枚业务&发货对象

  年度请领计划DBGrid读取数据来源:TY_JJNXQB_LM, TF_PFXJHTAO;写数据:TY_JJNXQB_LM。

  邮票名称Edit回车定位票品。
  增加:将当前年度、当前单位中没有做分配计划的票品append到分配计划中。
  删除:将分配计划中当前选中的一条记录删掉。
  保存:将分配数量为0的记录删掉,提交。

2002.06 jillshao
}
unit SY_LMNDQLJH;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBCtrls, EHGrids, DBGridEh, Buttons, Spin, RXCtrls,
  Db, DBTables, Grids, Menus, DBGrids, DBGridEhExport;

type
  TDataState = (dsBrowse, dsInsert, dsEdit);

type
  TFrmY_LMNDQLJH = class(TForm)
    Panel5: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Label8: TLabel;
    SE_year: TSpinEdit;
    Panel1: TPanel;
    BBt_edt: TBitBtn;
    BBt_sav: TBitBtn;
    BBt_can: TBitBtn;
    BBt_rtn: TBitBtn;
    DBGE_qljh: TDBGridEh;
    BBt_re: TBitBtn;
    BBt_snd: TBitBtn;
    Panel4: TPanel;
    RG_JB: TRadioGroup;
    DS_dw: TDataSource;
    Qry_dw: TQuery;
    Label3: TLabel;
    DBLCBo_dw: TDBLookupComboBox;
    Qry_qljh: TQuery;
    DS_qljh: TDataSource;
    USQL_qljh: TUpdateSQL;
    Label1: TLabel;
    Edt_ypmc: TEdit;
    Qry_qljhJHH: TStringField;
    Qry_qljhTX: TFloatField;
    Qry_qljhSQDWDM: TStringField;
    Qry_qljhND: TStringField;
    Qry_qljhZT: TStringField;
    Qry_qljhPPMC: TStringField;
    Qry_qljhXQZTS: TFloatField;
    Qry_qljhZBR: TStringField;
    Qry_qljhPZR: TStringField;
    Qry_qljhZDRQ: TDateTimeField;
    Qry_qljhBZ: TStringField;
    procedure Qry_dwAfterScroll(DataSet: TDataSet);
    procedure SE_yearChange(Sender: TObject);
    procedure RG_JBClick(Sender: TObject);
    procedure BBt_reClick(Sender: TObject);
    procedure BBt_edtClick(Sender: TObject);
    procedure Qry_qljhUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure BBt_savClick(Sender: TObject);
    procedure BBt_canClick(Sender: TObject);
    procedure BBt_sndClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBGE_qljhDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure DBGE_qljhGetFooterParams(Sender: TObject; DataCol,
      Row: Integer; Column: TColumnEh; AFont: TFont;
      var Background: TColor; var Alignment: TAlignment;
      State: TGridDrawState; var Text: string);
    procedure BBt_rtnClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Qry_qljhFilterRecord(DataSet: TDataSet; var Accept: Boolean);
    procedure Edt_ypmcKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Qry_qljhXQZTSSetText(Sender: TField; const Text: string);
    procedure Qry_qljhBeforeInsert(DataSet: TDataSet);
  private
    FDataEditState: TDataState;
    vlp_s_errmsg: string;
    V_S_locPPMC: string;
    procedure SetParams(APname, APval: string);
    function DoCXSCTJ(B_IsAPP: boolean = false): boolean;
    procedure SetDataEdit(const state: TDataState);
    function CheckExit(): boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmY_LMNDQLJH: TFrmY_LMNDQLJH;

implementation
uses datas, pub;

{$R *.DFM}

procedure TFrmY_LMNDQLJH.SetParams(APname, APval: string);
begin
  Qry_qljh.Close;
  Qry_qljh.ParamByName(APname).AsString := APval;
  Qry_qljh.Open;
end;

procedure TFrmY_LMNDQLJH.Qry_dwAfterScroll(DataSet: TDataSet);
begin
  SetParams('SQDWDM', Qry_dw.FieldByName('DWDM').AsString);
end;

procedure TFrmY_LMNDQLJH.SE_yearChange(Sender: TObject);
begin
  SetParams('ND', SE_year.Text);
end;

procedure TFrmY_LMNDQLJH.RG_JBClick(Sender: TObject);
begin
  case RG_JB.ItemIndex of
    0:
      begin
        DBLCBo_dw.Enabled := false;
        DBLCBo_dw.Color := clBtnFace;
        SetParams('SQDWDM', VG_UnitID);
        BBt_re.Caption := '重新生成';
      end;
    1:
      begin
        DBLCBo_dw.Enabled := true;
        DBLCBo_dw.Color := clWindow;
        SetParams('SQDWDM', DBLCBo_dw.keyValue);
        BBt_re.Caption := '增加';
      end;
  end;
  BBt_snd.Enabled := (RG_JB.ItemIndex = 0);

end;

procedure TFrmY_LMNDQLJH.BBt_reClick(Sender: TObject);
var
  v_JHH, v_TX: string;
begin
  case RG_JB.ItemIndex of
    0:
      v_JHH := VG_UnitName;
    1:
      v_JHH := qry_dw.FieldbyName('DWMC').AsString;
  end;

  v_JHH := Qry_qljh.FieldByName('JHH').AsString;
  v_TX := Qry_qljh.FieldByName('TX').AsString;
  DoCXSCTJ;
end;

function TFrmY_LMNDQLJH.DoCXSCTJ(B_IsAPP: boolean = false): boolean;
const
  c_s_del = 'delete from TY_JJNXQB_LM where ND=''%s'' and SQDWDM=''%s''';
  c_s_ins1 = 'insert into TY_JJNXQB_LM(JHH, TX, SQDWDM, ND, PPMC, XQZTS, ZT, ZBR, ZDRQ) ';
  c_s_ins2 = 'select a.JHH, a.TX, ''%s'', b.ND, b.TMC, 0 XQZTS, 0, ''%s'', sysdate ' +
    'from TF_PFXJHTU a, TF_PFXJHTAO b ';
  c_s_ins3 = 'where a.JHH=b.JHH and b.ND=''%s'' and a.TZDM=''01'' ' +
    'and (a.JHH, a.TX) not in (select JHH, TX from TY_JJNXQB_LM where ND=''%s'' and SQDWDM=''%s'')';

  c_s_hz = 'select JHH, TX, ''%s'', ND, PPMC TMC, sum(XQZTS) XQZTS, 0, ''%s'', sysdate from TY_JJNXQB_LM ' +
    'where ND=''%s'' and SQDWDM<>''%s'' group by JHH, TX, ND, PPMC';
{  c_s_hz = 'select JHH, TX, ''%s'', ND, PPMC TMC, sum(XQZTS) XQZTS, 0, ''%s'', sysdate from TY_JJNXQB_LM ' +
    'where ND=''%s'' and (JHH,TX) not in(select JHH,TX from TY_JJNXQB_LM where ND=''%s'' and SQDWDM=''%s'') group by JHH, TX, ND, PPMC';}
var
  v_JHH, v_tx: string;
  v_edt: boolean;
begin
  result := true;

  try
    data.qrytmp.Close;
    data.qrytmp.SQL.Clear;

    if (RG_JB.ItemIndex = 1) then //下级单位app(数量0)
    begin
      data.qrytmp.SQL.Add(format(c_s_ins2, [Qry_qljh.ParamByName('SQDWDM').AsString, VG_UserName]));
      data.qrytmp.SQL.Add(format(c_s_ins3, [SE_year.Text, SE_year.Text, Qry_qljh.ParamByName('SQDWDM').AsString]));
    end
    else //本单位汇总app(数量0)
    begin
{      data.qrytmp.SQL.Add(format(c_s_del, [SE_year.Text, VG_UnitID]));
      data.qrytmp.ExecSQL;
      data.qrytmp.SQL.Clear; }
      data.qrytmp.SQL.Add(format(c_s_hz, [VG_UnitID, VG_UserName, SE_year.Text, VG_UnitID]));
    end;

    data.qrytmp.Open;
    if not data.qrytmp.IsEmpty then
    begin
      data.qrytmp.First;
      v_JHH := data.qrytmp.FieldByName('JHH').AsString;
      v_TX := data.qrytmp.FieldByName('TX').AsString;
      Qry_qljh.BeforeInsert := nil;
      while not data.qrytmp.Eof do
      begin
        v_edt := false;
        if (RG_JB.ItemIndex = 0) then
          if Qry_qljh.Locate('JHH;TX', varArrayOf([data.qrytmp.FieldByName('JHH').AsString, data.qrytmp.FieldByName('TX').AsString]), []) then
          begin
            v_edt := true;
            Qry_qljh.Edit;
            Qry_qljh.FieldByName('XQZTS').AsInteger := data.qrytmp.FieldByName('XQZTS').AsInteger;
          end;
        if not v_edt then
        begin
          Qry_qljh.Append;
          Qry_qljh.FieldByName('JHH').AsString := data.qrytmp.FieldByName('JHH').AsString;
          Qry_qljh.FieldByName('TX').AsString := data.qrytmp.FieldByName('TX').AsString;
          Qry_qljh.FieldByName('SQDWDM').AsString := Qry_qljh.ParamByName('SQDWDM').AsString;
          Qry_qljh.FieldByName('XQZTS').AsInteger := data.qrytmp.FieldByName('XQZTS').AsInteger;
          Qry_qljh.FieldByName('ND').AsString := SE_year.Text;
          Qry_qljh.FieldByName('PPMC').AsString := data.qrytmp.FieldByName('TMC').AsString;
          Qry_qljh.FieldByName('ZT').AsString := '0';
          Qry_qljh.FieldByName('ZBR').AsString := VG_UserName;
          Qry_qljh.FieldByName('ZDRQ').AsDateTime := data.qrytmp.FieldByName('sysdate').AsDateTime;
        end;
        data.qrytmp.Next;
      end;
      SetDataEdit(dsEdit);
      Qry_qljh.BeforeInsert := Qry_qljhBeforeInsert;
      Qry_qljh.Locate('JHH;TX', varArrayOf([v_JHH, v_TX]), [loCaseInsensitive, loPartialKey]);
    end;
  except
    result := false;
  end;
end;

procedure TFrmY_LMNDQLJH.BBt_edtClick(Sender: TObject);
begin
  if Qry_qljh.IsEmpty then
  begin
    CHQMsgBox('没有可修改的数据!');
    exit;
  end;
  SetDataEdit(dsEdit);

end;

procedure TFrmY_LMNDQLJH.SetDataEdit(const state: TDataState);
begin
  FDataEditState := state;
  DBGE_qljh.ReadOnly := (state = dsBrowse);
  SE_year.ReadOnly := (state <> dsBrowse);
  RG_JB.Enabled := (state = dsBrowse);
  DBLCBo_dw.Enabled := (RG_JB.ItemIndex = 1) and (state = dsBrowse);
  DBGE_qljh.ReadOnly := (State = dsBrowse);

  case state of
    dsEdit:
      Qry_qljh.Edit;
    dsBrowse:
      begin
      end;
  end;

⌨️ 快捷键说明

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