?? sy_sjndfpjh_fp.pas
字號:
{*******************************************************}
{ }
{ 上級封片年度分配計劃補錄 }
{ }
{ 中軟金馬公司版權(quán)所有。2002.12前 }
{ }
{ 編制:中軟金馬項目開發(fā)組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級零枚票管理模塊 計劃管理部分的上級封片年度分配計劃補錄菜單調(diào)用。
*)
{數(shù)據(jù)說明:
大類下拉表中是TG_YZPPLDMB表中所有不以1、8、9開頭的大類。
郵資分類(界面左邊DBGrid)顯示當(dāng)前選中大類下的所有小類。
根據(jù)年度SpinEdit刷新分配計劃(界面右邊DBGrid);
郵資分類信息和分配計劃在游標(biāo)移動的時候彼此影響,定位。
分配計劃(界面右邊DBGrid)讀取數(shù)據(jù)來源:TYS_JJNFPJH_FP a, TG_YZPPLDMB;寫數(shù)據(jù):TYS_JJNFPJH_FP。
增加:將當(dāng)前年度、當(dāng)前大類下中沒有做分配計劃的小類分配計劃append到分配計劃中。
刪除:將分配計劃中當(dāng)前選中的一條記錄刪掉。
保存:將分配數(shù)量為0的記錄刪掉,提交。
2002.06 jillshao
}
unit SY_SJNDFPJH_FP;
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
//郵資類代碼
PYZLDM = ^YZLDM;
YZLDM = record
DL, MC: string;
end;
type
Tfrm_SJNDFPJH_FP = class(TFFormBase)
ModiPanel1: TModiPanel;
Panel1: TPanel;
Pnl_edit: TPanel;
DS_FXJH: TDataSource;
DS_FPJH: TDataSource;
Qry_FPJH: TQuery;
Panel4: TPanel;
XttxTitle: TRxLabel;
DWMC: TLabel;
Qry_FXJH: TQuery;
USQL_FPJH: TUpdateSQL;
Label8: TLabel;
ND: TSpinEdit;
Splitter1: TSplitter;
Label3: TLabel;
CB_dl: TComboBox;
Qry_FPJHND: TStringField;
Qry_FPJHYZLDM: TStringField;
Qry_FPJHDWDM: TStringField;
Qry_FPJHJHFPZTS: TFloatField;
Qry_FPJHZT: TStringField;
Qry_FPJHZBR: TStringField;
Qry_FPJHPZR: TStringField;
Qry_FPJHZDRQ: TDateTimeField;
Qry_FPJHBZ: TStringField;
Qry_FPJHMC: TStringField;
DBG_FPJH: TDBGridEh;
DBG_FXJH: TDBGridEh;
StaticText1: TStaticText;
StaticText2: TStaticText;
dbge_csh: TDBGridEhExport;
PM_Exp: TPopupMenu;
MI_Exc: TMenuItem;
N2: TMenuItem;
MI_txt: TMenuItem;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
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_FPJHAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure CB_dlChange(Sender: TObject);
procedure Qry_FPJHJHFPZTSSetText(Sender: TField; const Text: string);
procedure MI_ExcClick(Sender: TObject);
procedure MI_txtClick(Sender: TObject);
procedure Qry_FPJHBeforeInsert(DataSet: TDataSet);
procedure N3Click(Sender: TObject);
procedure PM_ExpPopup(Sender: TObject);
procedure DBG_FPJHEnter(Sender: TObject);
private
{ Private declarations }
FDtState: TDataState;
procedure Save;
procedure SetState(Value: TdataState);
function CheckExit(): boolean;
procedure DoADDFPJH;
public
{ Public declarations }
end;
function Show_SJNDFPJH_FP: Boolean;
var
frm_SJNDFPJH_FP: Tfrm_SJNDFPJH_FP;
implementation
uses datas, Pub;
{$R *.DFM}
function Show_SJNDFPJH_FP: Boolean;
begin
Application.CreateForm(Tfrm_SJNDFPJH_FP, frm_SJNDFPJH_FP);
with frm_SJNDFPJH_FP do
try
if CheckRight(frm_SJNDFPJH_FP, [Modipanel1]) then
result := ShowModal = MB_OK;
finally
Free;
end;
end;
procedure Tfrm_SJNDFPJH_FP.SetState(Value: TdataState);
var
i: integer;
v_col: TColor;
procedure SetControls(Value: Boolean); //瀏覽狀態(tài)
begin
ND.Enabled := Value;
CB_dl.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_FP.Save;
const
CS_UPD = 'update TYS_JJNFPJH_FP set JHFPZTS = ''%s'', ZBR = ''%s'', ZDRQ = to_date(''%s'',''YYYY-MM-DD''), BZ = ''%s''' +
' where ND = ''%s'' and YZLDM = ''%s''';
CS_INS = 'insert into TYS_JJNFPJH_FP(ND, YZLDM, DWDM, JHFPZTS, ZT, ZBR, ZDRQ, BZ) values' +
'(''%s'', ''%s'', ''%s'', ''%s'', ''0'', ''%s'', to_date(''%s'',''YYYY-MM-DD''), ''%s'')';
CS_DEL = 'delete from TYS_JJNFPJH_FP where ND = ''%s'' and YZLDM = ''%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, [ND.Text, FieldByName('YZLDM').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, ND.Text,
FieldByName('YZLDM').AsString]);
AssignSQLstr(data.qrytmp, v_sql);
data.qrytmp.ExecSQL;
if data.qrytmp.RowsAffected = 0 then
begin
v_sql := format(CS_INS, [ND.Text, FieldByName('YZLDM').AsString,
FieldByName('DWDM').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 //將分配數(shù)量為0的記錄刪除,并判斷制表人和制表日期是否為空
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_FP.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('YZLDM', Qry_FXJH.FieldByName('YZLDM').AsString, []);
if Qry_FPJH.FieldByName('YZLDM').AsString <> Qry_FXJH.FieldByName('YZLDM').AsString then
begin
v_b_add := true;
Qry_FPJH.Append;
Qry_FPJH.FieldByName('YZLDM').AsString := Qry_FXJH.FieldByName('YZLDM').AsString;
Qry_FPJH.FieldByName('ND').AsString := ND.Text;
Qry_FPJH.FieldByName('DWDM').AsString := VG_UnitID;
Qry_FPJH.FieldByName('MC').AsString := Qry_FXJH.FieldByName('MC').AsString;
Qry_FPJH.FieldByName('ZT').AsString := '0';
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_FP.ModiPanel1BtnClick(Index: TBtnVisible);
var
i: integer;
begin
case index of
bnAdd:
DoADDFPJH;
bnDelete:
begin
if Qry_FPJH.IsEmpty then
begin
CHQMsgBox('沒有可刪除的數(shù)據(jù)!');
exit;
end;
if CHQMsgBox('確定要刪除記錄嗎?', 2) = IDYES then
begin
Qry_FPJH.Edit;
Qry_FPJH.Delete;
Qry_FPJH.ApplyUpdates;
Qry_FPJH.CommitUpdates;
end;
end;
bnEdit:
begin
if Qry_FPJH.IsEmpty then
begin
CHQMsgBox('沒有可修改的數(shù)據(jù)!');
exit;
end;
SetState(dtEdit);
Qry_FPJH.Edit;
end;
bnSave:
Save;
bnCancel:
if CHQMsgBox('取消編輯, 確定嗎?', 2) = IDYES then
try
Qry_FPJH.Cancel;
Qry_FPJH.CancelUpdates;
finally
SetState(dtBrowse);
end;
bnClose:
Close;
end;
end;
procedure Tfrm_SJNDFPJH_FP.FormCreate(Sender: TObject);
begin
inherited;
DWMC.Caption := '使用單位:' + VG_UnitName;
DBG_FXJHEnter(DBG_FXJH);
SetState(dtBrowse);
end;
procedure Tfrm_SJNDFPJH_FP.NDChange(Sender: TObject);
begin
Qry_FPJH.AfterScroll := nil;
Qry_FXJH.AfterScroll := nil;
Qry_FXJH.Close;
Qry_FXJH.ParamByName('DL').AsString := CB_dl.Text;
Qry_FXJH.Open;
Qry_FPJH.Close;
Qry_FPJH.ParamByName('ND').AsString := ND.Text;
Qry_FPJH.ParamByName('DLDM').AsString := PYZLDM(CB_DL.Items.Objects[CB_DL.ItemIndex])^.DL;
Qry_FPJH.Open;
Qry_FPJH.AfterScroll := Qry_FPJHAfterScroll;
Qry_FXJH.AfterScroll := Qry_FXJHAfterScroll;
end;
procedure Tfrm_SJNDFPJH_FP.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
CanCLose := CheckExit;
end;
function Tfrm_SJNDFPJH_FP.CheckExit(): boolean;
begin
result := true;
if FDtState in [dtInsert, dtEdit] then
case CHQMsgBox('數(shù)據(jù)已經(jīng)被更改,是否保存所做修改?', 3) of
IDYes:
ModiPanel1BtnClick(bnSave);
IDNo:
ModiPanel1BtnClick(bnCancel);
IDCancel:
result := false;
end
end;
procedure Tfrm_SJNDFPJH_FP.Qry_FXJHAfterScroll(DataSet: TDataSet);
begin
if DBG_FXJH.TitleFont.Color = clNavy then
Qry_FPJH.Locate('YZLDM', Qry_FXJH.FieldByName('YZLDM').AsString, []);
end;
procedure Tfrm_SJNDFPJH_FP.Qry_FPJHAfterScroll(DataSet: TDataSet);
begin
if Qry_FPJH.IsEmpty then
exit;
if DBG_FPJH.TitleFont.Color = clNavy then
Qry_FXJH.Locate('YZLDM', Qry_FPJH.FieldByName('YZLDM').AsString, []);
end;
procedure Tfrm_SJNDFPJH_FP.DBG_FXJHEnter(Sender: TObject);
begin
if Sender = DBG_FXJH then
begin
DBG_FXJH.TitleFont.Color := clNavy;
DBG_FPJH.TitleFont.Color := clWindowText;
end
else
begin
DBG_FXJH.TitleFont.Color := clWindowText;
DBG_FPJH.TitleFont.Color := clNavy;
end;
end;
procedure Tfrm_SJNDFPJH_FP.FormShow(Sender: TObject);
var
AYZLDM: PYZLDM;
begin
CB_dl.OnChange := nil;
AssignSQLstr(data.qrytmp, 'select distinct substr(YZLDM,1,1),DL from TG_YZPPLDMB where substr(YZLDM,1,1) not in (1,8,9)');
data.qrytmp.Open;
while not data.qrytmp.eof do
begin
New(AYZLDM);
AYZLDM.DL := data.qrytmp.Fields[0].asstring;
AYZLDM.MC := data.qrytmp.Fields[1].asstring;
CB_dl.Items.AddObject(data.qrytmp.Fields[1].AsString, TObject(AYZLDM));
data.qrytmp.Next;
end;
CB_dl.ItemIndex := 0;
CB_dl.OnChange := CB_dlChange;
ND.Value := VG_Year;
end;
procedure Tfrm_SJNDFPJH_FP.CB_dlChange(Sender: TObject);
begin
NDChange(nil);
end;
procedure Tfrm_SJNDFPJH_FP.Qry_FPJHJHFPZTSSetText(Sender: TField;
const Text: string);
var
TextValue: Integer;
begin
try
TextValue := StrToInt(Text);
if TextValue < 0 then
begin
CHQMsgBox('非法數(shù)值!');
abort;
end;
Sender.AsInteger := TextValue;
except
if not (TextValue < 0) then
chqmsgbox('非法數(shù)值');
abort;
end;
end;
procedure Tfrm_SJNDFPJH_FP.MI_ExcClick(Sender: TObject);
begin
if DBG_FPJH.DataSource.DataSet.IsEmpty then
exit;
dbge_csh.Export_To_Excel(DBG_FPJH);
end;
procedure Tfrm_SJNDFPJH_FP.MI_txtClick(Sender: TObject);
begin
if DBG_FPJH.DataSource.DataSet.IsEmpty then
exit;
dbge_csh.Export_To_Txt(DBG_FPJH);
end;
procedure Tfrm_SJNDFPJH_FP.Qry_FPJHBeforeInsert(DataSet: TDataSet);
begin
Abort;
end;
procedure Tfrm_SJNDFPJH_FP.N3Click(Sender: TObject);
var
v_zbr, v_yzldm: string;
v_zbrq: TDateTime;
begin
case DBG_FPJH.SelectedIndex of
2:
v_zbr := Qry_FPJH.FieldByName('ZBR').AsString;
3:
v_zbrq := Qry_FPJH.FieldByName('ZDRQ').AsDateTime;
end;
v_yzldm := Qry_FPJH.FieldByName('yzldm').AsString;
Qry_FPJH.First;
while not Qry_FPJH.Eof do
begin
Qry_FPJH.Edit;
if TMenuItem(Sender).Tag = 11 then //
case DBG_FPJH.SelectedIndex of
2:
Qry_FPJH.FieldByName('ZBR').AsString := v_zbr;
3:
Qry_FPJH.FieldByName('ZDRQ').AsDateTime := v_zbrq;
end
else
case DBG_FPJH.SelectedIndex of
2:
if Qry_FPJH.FieldByName('ZBR').AsString = '' then
Qry_FPJH.FieldByName('ZBR').AsString := v_zbr;
3:
if Qry_FPJH.FieldByName('ZDRQ').IsNull then
Qry_FPJH.FieldByName('ZDRQ').AsDateTime := v_zbrq;
end;
Qry_FPJH.Next;
end;
Qry_FPJH.Locate('YZLDM', v_yzldm, []);
end;
procedure Tfrm_SJNDFPJH_FP.PM_ExpPopup(Sender: TObject);
begin
N1.Enabled := (FDtState <> dtBrowse) and (DBG_FPJH.SelectedIndex in [2, 3]);
end;
procedure Tfrm_SJNDFPJH_FP.DBG_FPJHEnter(Sender: TObject);
begin
if Sender = DBG_FXJH then
begin
DBG_FXJH.TitleFont.Color := clNavy;
DBG_FPJH.TitleFont.Color := clWindowText;
end
else
begin
DBG_FXJH.TitleFont.Color := clWindowText;
DBG_FPJH.TitleFont.Color := clNavy;
end;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -