📄 sy_sjndfpjh_lm.pas
字号:
{*******************************************************}
{ }
{ 上级纪特零枚年度分配计划补录 }
{ }
{ 中软金马公司版权所有。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 + -