?? sy_zdxxwh.pas
字號:
{*******************************************************}
{ }
{ 征訂信息維護 }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬郵資票品項目開發組 }
{ }
{ }
{*******************************************************}
(*
本模塊在省級購入票系統管理模塊里面調用。
*)
unit SY_ZDXXWH;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ComCtrls, Menus, ActnList, ImgList, ToolWin, StdCtrls,
DBCtrls, Mask, DBCGrids, ExtCtrls, Buttons, Grids, DBGrids, ToolEdit,
RXDBCtrl, extdlgs, Spin, RXCtrls, ErrDialog, RxQuery;
type
old_mei = record
old_mei_jhh: string;
old_mei_mxh: string;
end;
TFrm_grp = class(TForm)
ActionList1: TActionList;
Act_add: TAction;
Act_delete: TAction;
Act_modify: TAction;
Act_save: TAction;
Act_cancel: TAction;
Act_exit: TAction;
ImageList1: TImageList;
Panel1: TPanel;
BBt_add: TBitBtn;
BBt_dte: TBitBtn;
BBt_mfy: TBitBtn;
BBt_sve: TBitBtn;
BBt_cel: TBitBtn;
BBt_rrn: TBitBtn;
BBt_pnt: TBitBtn;
DS_tao: TDataSource;
Upd_tao: TUpdateSQL;
Qry_tzdm: TQuery;
DS_tzdm: TDataSource;
DS_pplb: TDataSource;
Qry_pplb: TQuery;
Upd_mei: TUpdateSQL;
DS_mei: TDataSource;
Act_send: TAction;
Panel2: TPanel;
Panel3: TPanel;
GBo_mei: TGroupBox;
Label22: TLabel;
Label25: TLabel;
Label28: TLabel;
Label33: TLabel;
DBEdit13: TDBEdit;
DBEdit15: TDBEdit;
DBEdit16: TDBEdit;
DBEdit21: TDBEdit;
GBo_tao: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label10: TLabel;
Label11: TLabel;
Label13: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit7: TDBEdit;
DBEdit10: TDBEdit;
DBLCbox_jyplb: TDBLookupComboBox;
DBLCbox_tz: TDBLookupComboBox;
DBDateEdit1: TDBDateEdit;
Label42: TLabel;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
Panel4: TPanel;
Label34: TLabel;
DBEdit9: TDBEdit;
Label9: TLabel;
DBEdit8: TDBEdit;
Label50: TLabel;
Qry_super: TQuery;
Label23: TLabel;
Panel7: TPanel;
DBGid_tao: TDBGrid;
DBGid_mei: TDBGrid;
Splitter1: TSplitter;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Qry_tao: TQuery;
Qry_mei: TQuery;
Qry_dw: TQuery;
DS_dw: TDataSource;
BitBtn1: TBitBtn;
XttxTitle: TRxLabel;
DBEdit14: TDBEdit;
Label20: TLabel;
SpinEdit1: TSpinEdit;
DWMC: TLabel;
Qry_meiJHH: TStringField;
Qry_meiMXH: TFloatField;
Qry_meiPPLB: TStringField;
Qry_meiDW: TStringField;
Qry_meiTUMC: TStringField;
Qry_meiTUJC: TStringField;
Qry_meiCB: TFloatField;
Qry_meiSJ: TFloatField;
Qry_meiJHFXL: TFloatField;
Qry_meiBZ: TStringField;
Qry_meiSDATEFX: TDateTimeField;
Qry_taoJHH: TStringField;
Qry_taoND: TStringField;
Qry_taoXH: TStringField;
Qry_taoJYPLB: TStringField;
Qry_taoTZDM: TStringField;
Qry_taoDW: TStringField;
Qry_taoTMC: TStringField;
Qry_taoTJC: TStringField;
Qry_taoQTMS: TFloatField;
Qry_taoCB: TFloatField;
Qry_taoQTSJ: TFloatField;
Qry_taoFXRQ: TDateTimeField;
Qry_taoJHFXL: TFloatField;
Qry_taoFXDWDM: TStringField;
Qry_taoFXDWMC: TStringField;
Qry_taoPZR: TStringField;
Qry_taoZBR: TStringField;
Qry_taoZBRQ: TDateTimeField;
Qry_taoBZ: TStringField;
Qry_taoSDATEFX: TDateTimeField;
DBMemo1: TDBMemo;
DBMemo2: TDBMemo;
Label3: TLabel;
DBLCbox_DL: TDBLookupComboBox;
Qry_DL: TQuery;
DS_DL: TDataSource;
procedure Act_addExecute(Sender: TObject);
procedure Act_deleteExecute(Sender: TObject);
procedure Act_modifyExecute(Sender: TObject);
procedure Act_saveExecute(Sender: TObject);
procedure Act_cancelExecute(Sender: TObject);
procedure Act_exitExecute(Sender: TObject);
procedure DBGid_taoEnter(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGid_taoMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Act_sendExecute(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure LoadBitmapToBlobField(const AField: TField);
procedure SpinEdit1Change(Sender: TObject);
procedure Qry_taoUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure DBLookupComboBox3Exit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Qry_taoCBGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_taoCBSetText(Sender: TField; const Text: string);
procedure Qry_taoQTSJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_taoQTSJSetText(Sender: TField; const Text: string);
procedure Qry_meiCBGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_meiCBSetText(Sender: TField; const Text: string);
procedure Qry_meiSJGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure Qry_meiSJSetText(Sender: TField; const Text: string);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBLCbox_DLCloseUp(Sender: TObject);
procedure Qry_taoAfterScroll(DataSet: TDataSet);
private
VLp_status: integer;
//0......初始狀態(瀏覽)
//1......add編輯狀態
//2......查詢結果瀏覽狀態
//3......edit編輯狀態
VLp_FocusGrid: TDBGrid;
//.tag=0......套
//.tag=1......枚
vlp_stao_jhh: string[15];
vlp_imei_mxh: integer;
vlp_oldmeival: old_mei;
vlp_s_errmsg: string;
function CheckExit(): boolean;
function ExistRecord(Tablenamestr, Conditionstr: string): boolean;
procedure SetEditStatus(SubMod: integer; SelectedRowsCount: integer = 1);
//0......初始狀態(瀏覽)
//1......編輯狀態
//2......查詢結果瀏覽狀態
{ Private declarations }
public
{ Public declarations }
function Execute(const DB: TDatabase): boolean;
end;
var
Frm_grp: TFrm_grp;
implementation
uses datas, pub;
{$R *.DFM}
function TFrm_grp.CheckExit(): boolean;
begin
result := true;
if (VLp_status <> 0) then
case CHQMsgBox('確定要放棄所做修改嗎?', 3) of
IDNo:
begin
Act_saveExecute(nil);
if VLp_status = 0 then
begin
Qry_tao.Close;
Qry_mei.Close;
Qry_DL.Close;
Qry_pplb.Close;
Qry_tzdm.Close;
Qry_super.Close;
end
else
result := false;
end;
IDYes:
begin
Act_cancelExecute(nil);
Qry_tao.Close;
Qry_mei.Close;
Qry_DL.Close;
Qry_pplb.Close;
Qry_tzdm.Close;
Qry_super.Close;
end;
IDCancel:
result := false;
end
else
begin
Qry_tao.Close;
Qry_mei.Close;
Qry_DL.Close;
Qry_pplb.Close;
Qry_tzdm.Close;
Qry_super.Close;
end;
end;
function TFrm_grp.Execute(const DB: TDatabase): boolean;
begin
Result := false;
if not Assigned(DB) then
exit;
DWMC.Caption := '使用單位:' + VG_UnitName;
try
vlp_stao_jhh := '';
vlp_imei_mxh := 0;
vlp_FocusGrid := DBGid_tao;
Qry_tao.Close;
Qry_tao.DatabaseName := DB.DatabaseName;
Qry_tao.Open;
Qry_mei.Close;
Qry_mei.DatabaseName := DB.DatabaseName;
Qry_mei.Open;
Qry_DL.Close;
Qry_DL.DatabaseName := DB.DatabaseName;
Qry_DL.Open;
Qry_tzdm.Close;
Qry_tzdm.DatabaseName := DB.DatabaseName;
Qry_tzdm.Open;
Qry_dw.Close;
Qry_dw.DatabaseName := DB.DatabaseName;
Qry_dw.Open;
Qry_super.Close;
Qry_super.DatabaseName := DB.DatabaseName;
if not Qry_tao.IsEmpty then
SpinEdit1.Text := Qry_tao.FieldByName('ND').AsString
else
SpinEdit1.Text := inttostr(SpinEdit1.MinValue);
SetEditStatus(0);
SpinEdit1Change(nil);
if Qry_tao.IsEmpty then
SpinEdit1.Text := inttostr(VG_Year)
else
SpinEdit1.Text := Qry_tao.FieldByName('ND').AsString;
DBGid_taoEnter(DBGid_tao);
Result := true;
except
CHQMsgBox('不能打開 <郵資票品信息> 表 !');
exit;
end;
end;
function TFrm_grp.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 TFrm_grp.SetEditStatus(SubMod: integer; SelectedRowsCount: integer = 1);
//submod:
//0......初始狀態(瀏覽)
//1......add編輯狀態
//2......查詢結果瀏覽狀態
//3......edit編輯狀態
//4......multiselected
var
vl_b_tao, vl_b_mei: boolean;
i: integer;
begin
//設置button狀態
SpinEdit1.ReadOnly := (SubMod <> 0);
if (SubMod = 4) then
if (SelectedRowsCount > 0) then
begin
Act_add.Enabled := (SelectedRowsCount = 1);
Act_delete.Enabled := (SelectedRowsCount = 1);
Act_modify.Enabled := (SelectedRowsCount = 1);
exit;
end
else
begin
Act_add.Enabled := true;
Act_delete.Enabled := true;
Act_modify.Enabled := true;
Act_send.Enabled := false;
exit;
end;
VLp_status := SubMod;
//設置DBGrid狀態
if (vlp_FocusGrid = DBGid_tao) then
DBGid_tao.TitleFont.Color := clnavy
else
DBGid_tao.TitleFont.Color := clblack;
if (VLp_FocusGrid = DBGid_mei) then
DBGid_mei.TitleFont.Color := clnavy
else
DBGid_mei.TitleFont.Color := clblack;
GBo_tao.Visible := (vlp_FocusGrid = DBGid_tao);
GBo_mei.Visible := (vlp_FocusGrid = DBGid_mei);
//設置button狀態
Act_add.Enabled := (SubMod = 0);
Act_delete.Enabled := (SubMod = 0);
Act_modify.Enabled := (SubMod = 0);
Act_save.Enabled := (SubMod = 1) or (SubMod = 3);
Act_cancel.Enabled := (SubMod = 1) or (SubMod = 3);
Act_send.Enabled := (SubMod = 0) or (SubMod = 4);
DBGid_tao.Enabled := (SubMod = 0) or (SubMod = 2);
DBGid_mei.Enabled := (SubMod = 0) or (SubMod = 2);
vl_b_tao := ((SubMod = 1) or (SubMod = 3) and (vlp_FocusGrid.Tag = 0));
for i := 0 to GBo_tao.ControlCount - 1 do
begin
if (GBo_tao.Controls[i] is TDBEdit) or
(GBo_tao.Controls[i] is TDBDateEdit) or
(GBo_tao.Controls[i] is TDBMemo) or
(GBo_tao.Controls[i] is TSpeedButton) or
(GBo_tao.Controls[i] is TDBLookupComboBox) then
begin
(GBo_tao.Controls[i]).Enabled := vl_b_tao;
end;
end;
DBEdit1.Enabled := (vlp_FocusGrid = DBGid_tao) and (SubMod = 1);
vl_b_mei := ((SubMod = 1) or (SubMod = 3) and (vlp_FocusGrid.Tag = 1));
for i := 0 to GBo_mei.ControlCount - 1 do
begin
if (GBo_mei.Controls[i] is TDBEdit) or
(GBo_mei.Controls[i] is TDBDateEdit) or
(GBo_mei.Controls[i] is TDBMemo) or
(GBo_mei.Controls[i] is TSpeedButton) then
begin
(GBo_mei.Controls[i]).Enabled := vl_b_mei;
end;
end;
end;
procedure TFrm_grp.Act_addExecute(Sender: TObject);
begin
// SetEditStatus(1);
vlp_FocusGrid.DataSource.DataSet.Append;
SetEditStatus(1);
case vlp_FocusGrid.Tag of
0:
begin
Qry_tao.FieldByName('ND').AsString := inttostr(VG_Year);
Qry_pplb.First;
Qry_tao.FieldByName('JYPLB').AsString := Qry_pplb.FieldByName('JYPLDM').AsString;
DBLCbox_jyplb.KeyValue := Qry_pplb.FieldByName('JYPLDM').AsString;
Qry_tzdm.First;
Qry_tao.FieldByName('TZDM').AsString := Qry_tzdm.FieldByName('TZDM').AsString;
DBLCbox_tz.KeyValue := Qry_tzdm.FieldByName('TZDM').AsString;
ActiveControl := DBEdit1;
end;
1: //mei
begin
Qry_mei.FieldByName('JHH').AsString := Qry_tao.FieldByName('JHH').AsString;
Qry_mei.FieldByName('DW').AsString := Qry_tao.FieldByName('DW').AsString;
Qry_mei.FieldByName('JHFXL').AsString := Qry_tao.FieldByName('JHFXL').AsString;
ActiveControl := DBEdit13;
end;
end;
end;
procedure TFrm_grp.Act_deleteExecute(Sender: TObject);
begin
if ((vlp_FocusGrid.tag = 0) and (DBGid_tao.DataSource.DataSet.IsEmpty)) or
((vlp_FocusGrid.tag = 1) and (DBGid_mei.DataSource.DataSet.IsEmpty)) then
begin
CHQMsgBox('當前沒有可刪除的記錄。');
exit;
end;
if CHQMsgBox('確實要刪除選中的記錄嗎?', 2) <> IDYes then
Exit;
vlp_FocusGrid.DataSource.DataSet.Next;
if (VLp_FocusGrid.DataSource.DataSet.Eof) then
begin
VLp_FocusGrid.DataSource.DataSet.Prior;
vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
if VLp_FocusGrid.Tag = 1 then
vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
VLp_FocusGrid.DataSource.DataSet.Next;
end
else
begin
vlp_stao_jhh := Qry_tao.fieldbyname('JHH').AsString;
if vlp_FocusGrid.Tag = 1 then
vlp_imei_mxh := Qry_mei.fieldbyname('MXH').AsInteger;
vlp_FocusGrid.DataSource.DataSet.Prior;
end;
Qry_tao.DataBase.StartTransaction;
try
with Qry_super do
begin
case vlp_FocusGrid.tag of
0: //套
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM TF_GRPFXJHM WHERE JHH =''' +
Qry_tao.fieldbyname('JHH').AsString + '''');
ExecSQL;
vlp_FocusGrid.DataSource.DataSet.Delete;
end;
1: //圖
begin
vlp_FocusGrid.DataSource.DataSet.Delete;
end;
end;
end;
(vlp_FocusGrid.DataSource.DataSet as TQuery).ApplyUpdates;
Qry_tao.DataBase.Commit;
except
Qry_tao.DataBase.RollBack;
raise exception.Create('數據訪問錯誤!');
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -