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

📄 startdate.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{                             }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级系统管理里面调用。

*)
{有两点
1. 在杂表中设置年度和月份
2. 自制基础信息}
unit StartDate;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Menus, libproc, Db, DBTables, Spin, Buttons, ExtCtrls, DBCtrls,
  Grids, DBGrids, sqlstrings;

type
  TfrmStartDate = class(TForm)
    GBo_CSH: TGroupBox;
    sp1: TSpinEdit;
    sp2: TSpinEdit;
    Label1: TLabel;
    StoredProc1: TStoredProc;
    BitBtn1: TBitBtn;
    button2: TBitBtn;
    Query1: TQuery;
    GBo_YJ: TGroupBox;
    SE_yj_r: TSpinEdit;
    Label2: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    function DoCheckGXDW: boolean;
    function DoSetYJRQ: boolean;

  public
    { Public declarations }
  end;

function ShowStartDate(p_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
function ShowYJDate(p_typ: TIO_TYPE; const SenderTag: Integer): Boolean;

var
  frmStartDate: TfrmStartDate;
  v_b_IsYJ: boolean;

implementation
uses datas;
{$R *.DFM}

var
  l_typ: TIO_TYPE;

function ShowStartDate(p_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
var
  v_s_sql: string;
begin
  Result := false;
  v_b_IsYJ := false;
  l_typ := p_typ;
  Application.CreateForm(TfrmStartDate, frmStartDate);
  with frmStartDate do
  try
    tag := SenderTag;
    if CheckRight(frmStartDate, [BitBtn1]) then
    begin
      Caption := CYZPPTIT;
      bitbtn1.Caption := pCaption[integer(l_typ)] + '设置';

      case p_typ of
        io_jyp:
          v_s_sql := 'jyp_jyny';
        io_txp:
          v_s_sql := 'txp_jyny';
        io_yp:
          v_s_sql := 'yp_jyny';
        io_grp:
          v_s_sql := 'grp_jyny';
      end;
      GetData('SELECT ZFXZ FROM TGS_ZB WHERE DM = ''' + v_s_sql + '''');

      if data.qrytmp.Fields[0].IsNull then
      begin
        sp1.Value := VG_Year;
        sp2.Value := VG_Month;
      end
      else
        with data.qrytmp do
        begin
          sp1.Value := strToInt(Copy(FieldByName('ZFXZ').Asstring, 1, 4));
          sp2.Value := strToInt(Copy(FieldByName('ZFXZ').Asstring, 5, 2));
        end;
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

function ShowYJDate(p_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
var
  v_s_sql: string;
begin
  Result := false;
  v_b_IsYJ := true;
  l_typ := p_typ;
  Application.CreateForm(TfrmStartDate, frmStartDate);
  with frmStartDate do
  try
    Tag := SenderTag;
    if CheckRight(frmStartDate, [BitBtn1]) then
    begin
      Caption := CYZPPTIT;
      bitbtn1.Caption := pCaption[integer(l_typ)] + '设置';
      case p_typ of
        io_jyp:
          v_s_sql := 'jyp_yjrq';
        io_txp:
          v_s_sql := 'txp_yjrq';
        io_yp:
          v_s_sql := 'yp_yjrq';
        io_grp:
          v_s_sql := 'grp_yjrq';
      end;
      Query1.Close;
      Query1.SQL.Clear;
      v_s_sql := 'SELECT ZFXZ FROM TGS_ZB WHERE DM = ''' + v_s_sql + '''';
      Query1.SQL.Add(v_s_sql);
      Query1.Open;
      if Query1.Fields[0].IsNull then
        SE_yj_r.Text := '25'
      else
        SE_yj_r.Text := Query1.Fields[0].AsString;
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

procedure TfrmStartDate.Button2Click(Sender: TObject);
begin
  close;
end;


procedure TfrmStartDate.BitBtn1Click(Sender: TObject);
begin
  if v_b_isYJ then
  begin
    DoSetYJRQ;
    exit;
  end;
  if not DoCheckGXDW then
    exit;

  with StoredProc1 do
  begin
    Close;
    Params[1].Asstring := Trim(floatTostr(sp1.value));
    Params[2].Asstring := Trim(floatTostr(sp2.value));
    Params[3].AsInteger := integer(l_typ) + 1;
    data.dm.StartTransaction;
    try
      ExecProc;
    except
      if data.dm.InTransaction then data.dm.Rollback;
      raise;
    end;
    if data.dm.InTransaction then
      if Params[0].AsInteger = 0 then
        data.dm.Commit
      else
        data.dm.Rollback;
    case Params[0].AsInteger of
      0:
        CHQMsgBox(pCaption[integer(l_typ)] + '启用日期设置成功!');
      1:
        CHQMsgBox(pCaption[integer(l_typ)] + '启用日期设置失败!请与软件开发商联系。');
    end;
  end;
end;

function TfrmStartDate.DoCheckGXDW: boolean;
const
  C_GXDW_BJSQL = 'select count(DWDM) from TGS_GXDWSJB where (BJ=''1'')';
  C_GXDW_XJSQL = 'select count(DWDM) from TGS_GXDWSJB where (ZJXJ=''1'')';
  C_KFBSQL = 'select count(KFDM) from TGS_KFB where not KFDM in (''-1'',''-2'')';
  C_INITED = 'select ZFXZ from TGS_ZB where DM = %s';
  function DoRunCheckSQL(const ASQL, AMsgStr: string; Chk_RQ: boolean = false): boolean;
  begin
    Result := true;
    with query1 do
    begin
      Close;
      sql.Clear;
      if Chk_RQ then
        case l_typ of
          io_jyp:
            sql.Add(format(ASQL, ['''jyp_csh_n''']));
          io_txp:
            sql.Add(format(ASQL, ['''txp_csh_n''']));
          io_yp:
            sql.Add(format(ASQL, ['''yp_csh_n''']));
          io_grp:
            sql.Add(format(ASQL, ['''grp_csh_n''']));
        end
      else
        sql.Add(ASQL);
      Open;
      if Chk_RQ then
      begin
        if Length(Fields[0].AsString) > 0 then
        begin
          Result := false;
          CHQMsgBox(AMsgStr);
          exit;
        end
      end
      else if Fields[0].AsFloat = 0 then
      begin
        Result := false;
        CHQMsgBox(AMsgStr);
        exit;
      end;
    end;
  end;

begin
  Result := false;
  if not DoRunCheckSQL(C_GXDW_BJSQL, '请先维护本单位信息!') then exit;
  if not DoRunCheckSQL(C_GXDW_XJSQL, '请先维护下级单位信息!') then exit;
  if not DoRunCheckSQL(C_KFBSQL, '请先维护库房信息!') then exit;
  if not DoRunCheckSQL(C_INITED, '系统启用日期已经设置!', true) then exit;
  Result := true;
end;

function TfrmStartDate.DoSetYJRQ: boolean;
const
  c_s_sql = 'update TGS_ZB set ZFXZ=''%s'' where DM=''%s''';
  function formatRQ: string;
  begin
    Result := SE_yj_r.Text;
    if Length(SE_yj_r.Text) = 1 then
      Result := '0' + SE_yj_r.Text;
  end;
begin
  Result := true;
  try
    with Query1 do
    begin
      Close;
      SQL.Clear;
      case l_typ of
        io_jyp:
          SQL.Add(format(c_s_sql, [formatRQ, 'jyp_yjrq']));
        io_txp:
          SQL.Add(format(c_s_sql, [formatRQ, 'txp_yjrq']));
        io_yp:
          SQL.Add(format(c_s_sql, [formatRQ, 'yp_yjrq']));
        io_grp:
          SQL.Add(format(c_s_sql, [formatRQ, 'grp_yjrq']));
      end;
      ExecSQL;
    end;
    CHQMsgBox(pCaption[integer(l_typ)] + '月结日设置成功!');
  except
    CHQMsgBox(pCaption[integer(l_typ)] + '月结日设置失败!请与软件开发商联系。');
  end;
end;

procedure TfrmStartDate.FormCreate(Sender: TObject);
begin
  GBo_CSH.Left := 18;
  GBo_CSH.Top := 26;
  GBo_YJ.Left := 18;
  GBo_YJ.Top := 26;

  GBo_CSH.Visible := not v_b_isYJ;
  GBo_YJ.Visible := v_b_isYJ;
  BitBtn1.BringToFront;
end;
{
又是一个,秋天晴朗的早晨


}
end.



⌨️ 快捷键说明

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