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

📄 ss_jypfhzcsh.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{                 集邮票分户帐余额初始化                }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级系统管理模块里的集邮票,集邮品,零枚,购入票里面调用。

*)
unit SS_JYPFHZCSH;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, ToolEdit, Grids, DBGrids,
  Db, DBTables, sqlstrings, RXCtrls, Menus, DBGridExport,Pub;

type
  Tfrm_JYPZFHZYEB = class(TFFormBase)
    ModiPanel1: TModiPanel;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    qryJYPZFHZYEB: TQuery;
    UpdateSQL1: TUpdateSQL;
    DataSource1: TDataSource;
    Edit2: TEdit;
    SqlStrings: TSqlStrings;
    UpdateSQL2: TUpdateSQL;
    UpdateSQL3: TUpdateSQL;
    UpdateSQL4: TUpdateSQL;
    Panel11: TPanel;
    RxLabel1: TRxLabel;
    DWMC: TLabel;
    qry_Tmp: TQuery;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure qryJYPZFHZYEBAfterOpen(DataSet: TDataSet);
    procedure qryJYPZFHZYEBUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
  private
    { Private declarations }
    FDtState: TDataState;
    upObject: array[io_jyp..io_grp] of TUpdateSQL;
    procedure SetState(Value: TdataState);
    function Save: Boolean;
    procedure SR_Change(Sender: TField);                    {输入改变,金额改变}
    procedure SetText(Sender: TField; const Text: string);

  public
    { Public declarations }
  end;

function Show_JYPZFHZYEB(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
var
  frm_JYPZFHZYEB: Tfrm_JYPZFHZYEB;

implementation

uses datas, SS_main;

{$R *.DFM}
{集邮票、零枚票、集邮品、市场购入票 分户帐初始化模块,将回款金额(元)字段取出,更正了系统的错误
采用系统启用时间进行查询。
石玉琢 2001.09.25 修改}

const
  //不同票品模块设置的字段名。
  GridMsg: array[io_jyp..io_grp] of array[0..4] of string = (
    ('YJZJJE', 'YJTJJE', 'YJHKJE', 'YJZXJE', 'YJYE'),
    ('ZJJE', 'TJJE', 'HKJE', 'ZXJE', 'YE'),
    ('YJZJJE', 'YJTJJE', 'YJHKJE', 'YJZXJE', 'YJYE'),
    ('YJZJJE', 'YJTJJE', 'YJHKJE', 'YJZXJE', 'YJYE'));

var
  l_typ: TIO_TYPE;         //xzy7@163.com

function Show_JYPZFHZYEB(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
begin
  Result := false;
  l_typ := t_typ;
  Application.CreateForm(Tfrm_JYPZFHZYEB, frm_JYPZFHZYEB);  {}
  with frm_JYPZFHZYEB do                                    {frmJYPZFHZYEB}
  try
    Tag := SenderTag;
    if CheckRight(frm_JYPZFHZYEB, [ModiPanel1]) then
    begin
      Caption := CYZPPTIT;
      DWMC.Caption := '使用单位:' + VG_UnitName;
      RxLabel1.Caption := pCaption[integer(l_typ)] + '分户帐初始化';
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

procedure Tfrm_JYPZFHZYEB.SetState(Value: TdataState);
begin
  if (Value in [dtInsert, dtEdit]) and ((Edit2.Text = '') or (Edit1.Text = '')) then exit;
  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  DBGrid1.ReadOnly := (FDtState = dtBrowse);
  ModiPanel1.FButtons[bnEdit].Enabled := (FDtState = dtBrowse) and (not (InitOver(l_typ) >= 0));
  ModiPanel1.FButtons[bnDelete].Enabled := not (FDtState = dtBrowse);
  with qryJYPZFHZYEB do
    case Fdtstate of
      dtBrowse: ;                                           {browse}
      dtinsert: Append;                                     {append}
      dtedit:
        begin                                               {edit}
          begin
            Edit;
            DBGrid1.SetFocus;
            if (DBGrid1.SelectedIndex = 0) or (DBGrid1.SelectedIndex = 5) then
              DBGrid1.SelectedIndex := 1;
          end;
        end;
    end;
  {syz,如果没有初始化,则设置编辑按钮变灰}
  if (Edit2.Text = '') or (Edit1.Text = '') then
    ModiPanel1.FButtons[bnEdit].Enabled := False;
end;

function Tfrm_JYPZFHZYEB.Save: Boolean;
const
  DALL_SQL = 'delete from %s';
  dTable: array[io_jyp..io_grp] of string = ('TYS_JYPZFHZYEB', 'TYS_TXPZFHZYEB', 'TYS_YPZFHZYEB', 'TYS_GRPZFHZYEB');
var
  OldBookmark: TBookMark;

  procedure InstOrUpdate;
  var
    i: integer;
  begin
    with qryJYPZFHZYEB do                                   {query}
    begin
      data.qrytmp.Sql.Text := upObject[l_typ].InsertSQL.Text;
      data.qrytmp.ParamByName('DWDM').Asstring := FieldByName('DWDM').Asstring;
      data.qrytmp.ParamByName('ND').Asstring := Edit1.Text;
      data.qrytmp.ParamByName('YF').Asstring := Edit2.Text;
      for i := 0 to 4 do
        data.qrytmp.ParamByName(GridMsg[l_typ][i]).AsFloat :=
          iif(FieldByName(GridMsg[l_typ][i]).isNull, 0, FieldByName(GridMsg[l_typ][i]).AsFloat);
      data.qrytmp.ExecSQL;
    end;
  end;
begin

  with qryJYPZFHZYEB do                                     {query}
  begin
    OldBookMark := qryJYPZFHZYEB.GetBookmark;
    Database.StartTransaction;
    try
      SetData(Format(DALL_SQL, [dTable[l_typ]]));
      DisableControls;
      First;
      while not Eof do
      begin
        InstOrUpdate;
        Next;
      end;
      EnableControls;
      Database.Commit;
      result := True;
    except
      EnableControls;
      if Database.InTransaction then Database.RollBack;
      if errMsg = '' then
        raise
      else
        raise exception.Create(errMsg);
    end;
    qryJYPZFHZYEB.GotoBookMark(OldBookMark);
    SetState(dtBrowse);
  end;
end;

procedure Tfrm_JYPZFHZYEB.ModiPanel1BtnClick(Index: TBtnVisible);
begin
  inherited;
  case index of
    bnAdd: SetState(dtInsert);
    bnDelete: ;
    bnEdit:
      begin
        if Trim(qryJYPZFHZYEB.FieldByName('DWDM').AsString) = '' then
          Exit;
        SetState(dtEdit);
      end;
    bnSave: Save;
    bnCancel:
      if CHQMsgBox('取消编辑, 确定吗?', 2) = IDYES then
      begin
        qryJYPZFHZYEB.Close;
        qryJYPZFHZYEB.Open;
        SetState(dtBrowse);
      end;
    bnPrint:                                                {print}
      PrintDBGrid(DBGrid1, RxLabel1.Caption);
    bnClose: Close;
  end;
end;

procedure Tfrm_JYPZFHZYEB.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  if (FDtstate in [dtInsert, dtEdit]) then
    case CHQMsgBox(MSG_EXITSAVE, 3) of
      IDYES:
        if not Save then Action := caNone;
      IDCANCEL: Action := caNone;
    end;
end;

procedure Tfrm_JYPZFHZYEB.FormCreate(Sender: TObject);
var
  i: integer;
  nd, yf: string;
  Tmp_Str: string;
begin
  inherited;
  ModiPanel1.FButtons[bnEdit].Tag := 201;
  GetInitDate(nd, yf, l_typ);
  Edit1.Text := nd;
  Edit2.Text := yf;

  if qryJYPZFHZYEB.Active then qryJYPZFHZYEB.Close;
  upObject[io_jyp] := UpdateSQL1;
  upObject[io_txp] := UpdateSQL2;
  upObject[io_yp] := UpdateSQL3;
  upObject[io_grp] := UpdateSQL4;

  Caption := pCaption[integer(l_Typ)] + '分户帐余额初始化';
  qryJYPZFHZYEB.SQL := SqlStrings.FSqlText[l_typ];
  qryJYPZFHZYEB.UpdateObject := upObject[l_typ];
  for i := 0 to 4 do
    DBGrid1.Columns[i + 1].FieldName := GridMsg[l_typ][i];

  qryJYPZFHZYEB.Open;
  SetState(dtBrowse);

  {补丁,用来给出提示}{syz}
  {-----------------------判断年度-----------------------}
  case l_typ of
    io_jyp: Tmp_Str := 'jyp_csh_n';
    io_txp: Tmp_Str := 'txp_csh_n';
    io_yp: Tmp_Str := 'yp_csh_n';
    io_grp: Tmp_Str := 'grp_csh_n';
  end;
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select ZFXZ From TGS_ZB Where DM=''' + Tmp_Str + '''';
    Open;
    if FieldByName('ZFXZ').AsString = '' then
    begin
      CHQMsgBox('初始化日期没有设定!请进行初始化日期设定,然后才能进行分户帐初始化!');
      Exit;
    end;
  end;
  {-----------------------判断月份-----------------------}
  case l_typ of
    io_jyp: Tmp_Str := 'jyp_csh_y';
    io_txp: Tmp_Str := 'txp_csh_y';
    io_yp: Tmp_Str := 'yp_csh_y';
    io_grp: Tmp_Str := 'grp_csh_y';
  end;

  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select ZFXZ From TGS_ZB Where DM=''' + Tmp_Str + '''';
    Open;
    if FieldByName('ZFXZ').AsString = '' then
    begin
      CHQMsgBox('初始化日期没有设定!请进行初始化日期设定,然后才能进行分户帐初始化!');
      Exit;
    end;
  end;
  {-----------------------判断是否结束-------------------------}
  case l_typ of
    io_jyp: Tmp_Str := 'jyp_csh_js';
    io_txp: Tmp_Str := 'txp_csh_js';
    io_yp: Tmp_Str := 'yp_csh_js';
    io_grp: Tmp_Str := 'grp_csh_js';
  end;

  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select ZFXZ From TGS_ZB Where DM=''' + Tmp_Str + '''';
    Open;
    if (FieldByName('ZFXZ').AsString = 'Y') or (FieldByName('ZFXZ').AsString = 'YY') then
    begin
      CHQMsgBox('初始化已经完成,现在只能进行查看!');
      Exit;
    end;
  end;

end;

{-------------------------------------------------------------------------------}
{设置接收文本方式}{syz}
procedure Tfrm_JYPZFHZYEB.qryJYPZFHZYEBAfterOpen(DataSet: TDataSet);
var
  i: integer;
begin
  with DataSet do
  begin
    for i := 0 to 4 do
      TNumericField(FieldByName(GridMsg[l_typ][i])).OnGetText := nDisplay.GetText;

    for i := 0 to 2 do
      TNumericField(FieldByName(GridMsg[l_typ][i])).OnSetText := SetText;

    TNumericField(FieldByName(GridMsg[l_typ][4])).OnSetText := nDisplay.SetText;
  end;

  {增加事件}
  qryJYPZFHZYEB.FieldByName(GridMsg[l_typ][0]).OnChange := SR_Change;
  qryJYPZFHZYEB.FieldByName(GridMsg[l_typ][1]).OnChange := SR_Change;
  qryJYPZFHZYEB.FieldByName(GridMsg[l_typ][2]).OnChange := SR_Change;
end;

{-------------------------------------------------------------------------------}
{控制金额输入不能为负}
procedure Tfrm_JYPZFHZYEB.SetText(Sender: TField; const Text: string);
begin
  if StrToFloat(Text) < 0 then
  begin
    CHQMsgBox('输入金额不能为负!');
    Abort;
  end;

  Sender.AsFloat := strToFloat(Text) * 100;
end;

{-------------------------------------------------------------------------------}
{输入改变,金额改变}{syz}
procedure Tfrm_JYPZFHZYEB.SR_Change(Sender: TField);
begin
  with qryJYPZFHZYEB do
  begin
    Edit;
    FieldByName(GridMsg[l_typ][4]).AsFloat := FieldByName(GridMsg[l_typ][0]).AsFloat -
      FieldByName(GridMsg[l_typ][1]).AsFloat - FieldByName(GridMsg[l_typ][2]).AsFloat;
  end;
end;

procedure Tfrm_JYPZFHZYEB.qryJYPZFHZYEBUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
  inherited;
  case GetErrCode(DataSet, E, ErrMsg) of
    Err_NoMasterRec: errMsg := errMsg + '&_&' + Format(MST_NOREC, ['', '', '']);
    Err_HasDetailRec: errMsg := errMsg + '&_&' + Format(DTL_EXSTREC, ['']);
    Err_RecDouble: errMsg := errMsg + '&_&' + Format(DBL_REC, ['']);
    Err_NotNull: errMsg := errMsg + '&_&' + Format(NOTNULL, ['']);
  else
    errMsg := errMsg + '&_&' + OTHERERROR;
  end;
end;


{
SELECT G.DWJC DWMC, J.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
 FROM TYS_GRPZFHZYEB J, TGS_GXDWSJB G
 WHERE G.DWDM = J.DWDM(+) AND FHDX = '1'
  and G.JYYW='1'
 order by PXM

SELECT G.DWJC DWMC, J.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
From TYS_GRPZFHZYEB J,
(Select * from TGS_GXDWSJB where FHDX = '1' and JYYW = '1')G
where G.DWDM(+) = J.DWDM
order by G.PXM

SELECT G.DWJC DWMC, J.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
FROM TYS_JYPZFHZYEB J, TGS_GXDWSJB G
WHERE G.DWDM = J.DWDM(+ ) and FHDX = '1'
and G.JYYW = '1'
order by PXM

SELECT G.DWJC DWMC, J.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
FROM TYS_JYPZFHZYEB J,
(Select * from TGS_GXDWSJB Where FHDX = '1' and JYYW = '1')G
Where G.DWDM(+) = J.DWDM
order by G.PXM

SELECT  G.DWJC DWMC, G.DWDM, ND, YF, ZJJE, TJJE, HKJE, ZXJE, YE
 FROM TYS_TXPZFHZYEB J, TGS_GXDWSJB G
 WHERE G.DWDM = J.DWDM(+) AND FHDX = '1'
  and G.TXYW='1'
 order by PXM

SELECT  G.DWJC DWMC, J.DWDM, ND, YF, ZJJE, TJJE, HKJE, ZXJE, YE
FROM TYS_TXPZFHZYEB J,
 (Select * From TGS_GXDWSJB Where FHDX = '1' and TXYW='1')G
Where  G.DWDM(+)= J.DWDM
order by G.PXM

SELECT  G.DWJC DWMC, G.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
 FROM TYS_YPZFHZYEB J, TGS_GXDWSJB G
 WHERE G.DWDM = J.DWDM(+) AND FHDX = '1'
  and G.JYYW='1'
 order by PXM

SELECT  G.DWJC DWMC, J.DWDM, ND, YF, YJZJJE, YJTJJE, YJHKJE, YJZXJE, YJYE
FROM TYS_YPZFHZYEB J,
 (Select * From TGS_GXDWSJB Where FHDX = '1' and JYYW='1') G
Where G.DWDM(+) = J.DWDM
order by G.PXM
}

end.

⌨️ 快捷键说明

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