📄 ss_jypfhzcsh.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 + -