?? sy_ndjhqlbzd.pas
字號:
{*******************************************************}
{ }
{ 下級單位年度需求查詢(補錄) }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬郵資票品項目開發組 }
{ }
{ }
{*******************************************************}
(*
省級集郵品管理 ,地市集郵票管理
*)
unit SY_NDJHQLBZD;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ComCtrls, ImgList, ExtCtrls, StdCtrls, CheckLst, Grids,
DBGrids, ActnList, Buttons, Spin, Mask, DBCtrls, RXCtrls, Menus,
DBGridExport, EHGrids, DBGridEh, DBGridEhExport;
type
TDataState = (dsBrowse, dsInsert, dsEdit);
type
TFrmY_NDJHQLBZD = class(TForm)
ILi_Edit: TImageList;
Panel1: TPanel;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
ActionList1: TActionList;
Act_add: TAction;
Act_del: TAction;
Act_mod: TAction;
Act_sav: TAction;
Act_can: TAction;
Act_rtn: TAction;
DS_ydlx: TDataSource;
Act_pagechange: TAction;
Act_tzExit: TAction;
PgeCtl_p: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel2: TPanel;
DBGrid_ydlx: TDBGrid;
Splitter1: TSplitter;
DS_dw: TDataSource;
Qry_dw: TQuery;
Qry_ydlx: TQuery;
DS_yd: TDataSource;
Qry_yd: TQuery;
UpdateSQL1: TUpdateSQL;
Qry_super: TQuery;
Qry_ydlxYDLXDM: TStringField;
Qry_ydlxYDLXMC: TStringField;
Qry_ydlxND: TStringField;
Panel4: TPanel;
Label3: TLabel;
DS_xq: TDataSource;
Qry_xq: TQuery;
UpdateSQL2: TUpdateSQL;
Qry_xqJHH: TStringField;
Qry_xqSQDWDM: TStringField;
Qry_xqND: TStringField;
Qry_xqZT: TStringField;
Qry_xqPPMC: TStringField;
Qry_xqXQZTS: TFloatField;
Qry_xqYDTS: TFloatField;
Qry_xqLSTS: TFloatField;
Qry_xqKFYPTS: TFloatField;
Qry_xqZBR: TStringField;
Qry_xqPZR: TStringField;
Qry_xqZDRQ: TDateTimeField;
Qry_xqBZ: TStringField;
Act_snd: TAction;
Act_dwchange: TAction;
Act_setText: TAction;
Qry_xqNCTS: TFloatField;
Qry_ydND: TStringField;
Qry_ydDWDM: TStringField;
Qry_ydYDLXDM: TStringField;
Qry_ydYDTS: TFloatField;
Qry_ydLSTS: TFloatField;
Qry_yddwmc: TStringField;
DBLCBo_dw: TDBLookupComboBox;
Label4: TLabel;
Qry_xqTMC: TStringField;
Panel5: TPanel;
DWMC: TLabel;
XttxTitle: TRxLabel;
TabSheet3: TTabSheet;
Label8: TLabel;
SpinEdit4: TSpinEdit;
Qry_nc: TQuery;
DS_nc: TDataSource;
USQL_nc: TUpdateSQL;
Qry_ncND: TStringField;
Qry_ncDWDM: TStringField;
Qry_ncNCTS: TFloatField;
Qry_ncdwmc: TStringField;
DBGE_yd: TDBGridEh;
DBGE_nc: TDBGridEh;
DBGE_xq: TDBGridEh;
procedure Act_modExecute(Sender: TObject);
procedure Act_canExecute(Sender: TObject);
procedure Act_savExecute(Sender: TObject);
procedure DBGrid_ydlxCellClick(Column: TColumn);
procedure Qry_xqUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure Act_dwchangeExecute(Sender: TField);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Act_rtnExecute(Sender: TObject);
procedure Qry_ydUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure Qry_xqKFYPTSChange(Sender: TField);
procedure FormCreate(Sender: TObject);
procedure Qry_dwAfterScroll(DataSet: TDataSet);
procedure Qry_xqCalcFields(DataSet: TDataSet);
procedure DBGrid_ydKeyPress(Sender: TObject; var Key: Char);
procedure SpinEdit4Change(Sender: TObject);
procedure PgeCtl_pChanging(Sender: TObject; var AllowChange: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TabSheet2Enter(Sender: TObject);
procedure Qry_ydlxAfterOpen(DataSet: TDataSet);
procedure Qry_dwAfterOpen(DataSet: TDataSet);
procedure DBGE_ydDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure DBGE_ydGetFooterParams(Sender: TObject; DataCol,
Row: Integer; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment: TAlignment;
State: TGridDrawState; var Text: string);
private
{ Private declarations }
vlp_v_dwdm: variant;
FDataEditState: TDataState;
vlp_s_errmsg: string;
function CheckExit(): boolean;
procedure SetDataEdit(const state: TDataState);
function ExistRecord(Tablenamestr, Conditionstr: string): boolean;
procedure GetCurrVal(Tablenamestr, Fieldnamestr: string; var Fieldval: variant);
procedure CheckXQ(const P_V_isNC: boolean = false);
public
{ Public declarations }
function Execute(const DB: TDatabase): boolean;
end;
var
FrmY_NDJHQLBZD: TFrmY_NDJHQLBZD;
implementation
{$R *.DFM}
uses datas, pub;
function TFrmY_NDJHQLBZD.CheckExit(): boolean;
procedure DoCloseYDQry;
begin
Qry_super.Close;
Qry_ydlx.Close;
Qry_yd.Close;
Qry_nc.Close;
Qry_xq.Close;
Qry_dw.Close;
Close;
end;
begin
result := true;
if (FDataEditState <> dsBrowse) then
case CHQMsgBox('數據已經被更改,是否保存所做修改?', 3) of
IDYes:
begin
Act_savExecute(nil);
DoCloseYDQry;
end;
IDNo:
begin
Act_canExecute(nil);
DoCloseYDQry;
end;
IDCancel:
result := false;
end
else
begin
DoCloseYDQry;
end;
end;
procedure TFrmY_NDJHQLBZD.GetCurrVal(Tablenamestr, Fieldnamestr: string; var Fieldval: variant);
begin
Fieldval := null;
with Qry_super do
begin
Close;
SQL.Clear;
SQL.Add('select ' + Fieldnamestr + ' from ' + Tablenamestr);
Open;
if not IsEmpty then
FieldVal := Fields[0].AsVariant;
end;
end;
function TFrmY_NDJHQLBZD.ExistRecord(Tablenamestr, Conditionstr: string): boolean;
begin
with Qry_super do
begin
CLose;
SQL.Clear;
SQL.Add('Select count(*) from ' + Tablenamestr + ' Where ' + Conditionstr);
Open;
ExistRecord := (Fields[0].Asinteger > 0);
end;
end;
procedure TFrmY_NDJHQLBZD.SetDataEdit(const state: TDataState);
begin
FDataEditState := state;
SpinEdit4.Enabled := state = dsBrowse;
{ DBGrid_yd.ReadOnly := (state = dsBrowse);
DBG_nc.ReadOnly := (state = dsBrowse);
DBGrid_xq.ReadOnly := (state = dsBrowse);}
case PgeCtl_p.ActivePageIndex of
0:
begin
DBGrid_ydlx.Enabled := (State = dsBrowse);
DBGE_yd.ReadOnly := (State = dsBrowse);
case state of
dsInsert:
begin
Qry_dw.First;
while not Qry_dw.Eof do
if not ExistRecord('TY_JYPYDJHB', 'ND=''' + SpinEdit4.Text + ''' and DWDM=''' + Qry_dw.FieldByName('DWDM').AsString + ''' and YDLXDM=''' + Qry_ydlx.FieldByName('YDLXDM').AsString + '''') then //Qry_yd.Locate('DWDM', Qry_dw.FieldByName('DWDM').AsString, []) then
begin
Qry_yd.Append;
Qry_yd.FieldByName('ND').AsString := SpinEdit4.Text;
Qry_yd.FieldByName('YDLXDM').Value := Qry_ydlx.FieldByName('YDLXDM').Value;
Qry_yd.FieldByName('YDTS').Value := 0;
Qry_yd.FieldByName('LSTS').Value := 0;
Qry_yd.FieldByName('NCTS').Value := 0;
Qry_yd.FieldByName('DWDM').AsString := Qry_dw.FieldByName('DWDM').AsString;
Qry_dw.next;
end
else
Qry_dw.next;
end;
dsEdit:
Qry_yd.Edit;
dsBrowse:
begin
end;
end;
end;
1:
begin
DBGE_nc.ReadOnly := (State = dsBrowse);
case state of
dsEdit:
Qry_nc.Edit;
end;
end;
2:
begin
DBGE_xq.ReadOnly := (State = dsBrowse);
case state of
dsInsert:
begin
end;
dsEdit:
Qry_yd.Edit;
dsBrowse:
begin
end;
end;
end;
end;
Act_add.Enabled := (PgeCtl_p.ActivePageIndex = 0) and (state = dsBrowse);
Act_del.Enabled := (PgeCtl_p.ActivePageIndex = 0) and (state = dsBrowse);
Act_mod.Enabled := (state = dsBrowse);
Act_sav.Enabled := (state <> dsBrowse);
Act_can.Enabled := (state <> dsBrowse);
Act_snd.Visible := false;
end;
function TFrmY_NDJHQLBZD.Execute(const DB: TDatabase): boolean;
begin
Result := false;
if not Assigned(DB) then
exit;
DWMC.Caption := '使用單位:' + VG_UnitName;
try
Qry_dw.Close;
Qry_dw.DatabaseName := DB.DatabaseName;
SpinEdit4.OnChange := nil;
SpinEdit4.Text := inttostr(VG_Year);
SpinEdit4.OnChange := SpinEdit4Change;
Qry_super.Close;
Qry_super.DatabaseName := DB.DatabaseName;
//page1
Qry_ydlx.Close;
Qry_ydlx.DatabaseName := DB.DatabaseName;
Qry_yd.Close;
Qry_yd.DatabaseName := DB.DatabaseName;
//page2
Qry_nc.Close;
Qry_nc.DatabaseName := DB.DatabaseName;
//page3
// DBLCBo_dw.KeyValue := Qry_dw.FieldByName('DWDM').AsString;
Qry_xq.Close;
Qry_xq.DatabaseName := DB.DatabaseName;
GetCurrVal('TGS_GXDWSJB where BJ=''1''', 'DWDM', vlp_v_dwdm);
PgeCtl_p.ActivePageIndex := 0;
SpinEdit4Change(nil);
SetDataEdit(dsBrowse);
Result := true;
except
CHQMsgBox('不能打開 <集郵票預訂需求> 表 !');
exit;
end;
end;
procedure TFrmY_NDJHQLBZD.Act_modExecute(Sender: TObject);
begin
case PgeCtl_p.ActivePageIndex of
0, 1:
begin
if Qry_yd.IsEmpty then
begin
CHQMsgBox('沒有可修改的數據!');
exit;
end;
SetDataEdit(dsEdit);
end;
2:
begin
if Qry_xq.IsEmpty then
begin
CHQMsgBox('沒有可修改的數據!');
exit;
end;
if Qry_xq.FieldByName('ZT').AsString <> '0' then
begin
CHQMsgBox('該需求已被處理!');
exit;
end;
SetDataEdit(dsEdit);
end;
end;
end;
procedure TFrmY_NDJHQLBZD.Act_canExecute(Sender: TObject);
var
vl_s_year: string;
begin
if (FDataEditState = dsBrowse) then
exit;
vl_s_year := SpinEdit4.Text;
data.DM.StartTransaction;
try
case PgeCtl_p.ActivePageIndex of
0:
Qry_yd.CancelUpdates;
1:
Qry_nc.CancelUpdates;
2:
Qry_xq.CancelUpdates;
end;
data.DM.Commit;
except
data.DM.Rollback;
CHQMsgBox('數據訪問錯誤!');
end;
case PgeCtl_p.ActivePageIndex of
0:
Qry_yd.CommitUpdates;
1:
Qry_nc.CommitUpdates;
2:
Qry_xq.CommitUpdates;
end;
SetDataEdit(dsBrowse);
end;
procedure TFrmY_NDJHQLBZD.CheckXQ(const P_V_isNC: Boolean = false);
var
v_sql, vl_f_ydts, vl_f_lsts {, vl_f_ncts}: string;
vl_sl_jhh: TStringList;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -