📄 udwwh.pas
字号:
unit uDWWH;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
uInfoTemp, ExtCtrls, StdCtrls, ComCtrls, Db, DBTables, Grids, DBGrids,
Mask, DBCtrls, wwdblook, wwdbdatetimepicker, Menus;
type
TfrmDWWH = class(TfrmInfoTemp)
pnlLeft: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
treDW: TTreeView;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Panel1: TPanel;
btnInsert: TButton;
btnPost: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
dtpSHHFFSJ: TwwDBDateTimePicker;
edtDWDM: TDBEdit;
edtDWMC: TDBEdit;
edtFRDB: TDBEdit;
edtDWJBR: TDBEdit;
edtLXDH: TDBEdit;
edtDWDZ: TDBEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
edtZH: TDBEdit;
edtKHMC: TDBEdit;
edtYZBM: TDBEdit;
souMaster: TDataSource;
qryMaster: TQuery;
qryMasterDWID_FF: TStringField;
qryMasterSSDWID: TStringField;
qryMasterDWID: TStringField;
qryMasterZH: TStringField;
qryMasterKHMC: TStringField;
qryMasterYZBM: TStringField;
qryMasterSSHY: TFloatField;
qryMasterDWDM: TStringField;
qryMasterDWMC: TStringField;
qryMasterFRDB: TStringField;
qryMasterDWJBR: TStringField;
qryMasterLXDH: TStringField;
qryMasterDWDZ: TStringField;
qryMasterSHHFFSJ: TDateTimeField;
qryMasterSJDWDM: TStringField;
qryMasterJBR: TStringField;
qryMasterJBRQ: TDateTimeField;
qryMasterSHR: TStringField;
qryMasterSHRQ: TDateTimeField;
sqlMaster: TUpdateSQL;
btnCancel: TButton;
btnDelete: TButton;
souWTJG: TDataSource;
qryWTJG: TQuery;
qryWRJGFFJGID: TStringField;
qryWRJGFFJG_C: TStringField;
qryWTJGDWID_FF: TStringField;
sqlWTJG: TUpdateSQL;
souFFJG: TDataSource;
tblFFJG: TTable;
popRYXX: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure FormShow(Sender: TObject);
procedure treDWExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
procedure treDWClick(Sender: TObject);
procedure btnInsertClick(Sender: TObject);
procedure btnPostClick(Sender: TObject);
procedure qryMasterAfterInsert(DataSet: TDataSet);
procedure qryMasterBeforeInsert(DataSet: TDataSet);
procedure qryMasterAfterPost(DataSet: TDataSet);
procedure qryMasterBeforeDelete(DataSet: TDataSet);
procedure qryMasterBeforePost(DataSet: TDataSet);
procedure btnDeleteClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure qryWTJGAfterInsert(DataSet: TDataSet);
procedure qryWTJGAfterPost(DataSet: TDataSet);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure qryMasterAfterDelete(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
procedure pTreeRefresh; //刷新树
end;
var
frmDWWH: TfrmDWWH;
implementation
uses dMain, uCommon, uMain;
{$R *.DFM}
{*********************************************************
函数和过程名:TfrmDWWH.FormShow
用途 :显示树
*********************************************************}
procedure TfrmDWWH.FormShow(Sender: TObject);
begin
inherited;
//显示单位树
pTreeRefresh;
qryMaster.Open;
tblFFJG.Open;
qryWTJG.Open;
end;
{*********************************************************
函数和过程名:TfrmDWWH.pTreeRefresh
用途 :刷新树,重新建立单位的树形结构
*********************************************************}
procedure TfrmDWWH.pTreeRefresh;
var
RootNode: TTreeNode;
begin
//避免刷新
TreDW.Hide;
with TQuery.Create(Self) do
try
DatabaseName := dfmMain.dbsMain.DatabaseName;
//显示行业单位表
TreDW.Items.Clear;
//添加单位项
SQL.Add('SELECT DMB.DMMC,DMB.DM,COUNT(*) DMCOUNT ');
SQL.Add('FROM tDMB DMB,tff_dwxx DW ');
SQL.Add('WHERE DMB.DM(+)=DW.SSHY and DMB.ZDBZ=''SSHY'' ');
SQL.Add('GROUP BY DMMC,DM ');
Open;
while not Eof do
begin
RootNode := treDW.Items.AddChildObject(
nil,
FieldByName('DMMC').AsString,
Pointer(FieldByName('DM').AsInteger));
RootNode.ImageIndex := 0;
RootNode.SelectedIndex := 1;
if FieldByName('DMCOUNT').AsInteger = 0 then
RootNode.HasChildren := False
else
RootNode.HasChildren := True;
Next;
end;
Close;
finally
Free;
end;
treDW.Show;
end;
{*********************************************************
函数和过程名:TfrmDWWH.treDWExpanding
用途 :点击行业和单位后 显示单位和下属组
*********************************************************}
procedure TfrmDWWH.treDWExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
var
ChildNode: TTreeNode;
begin
inherited;
//如果HasChildren 为真,需要
if Node.HasChildren then
begin
//Node=0 行业
//Node=1 单位
if Node.Level = 0 then //行业
begin
//清空子节点
Node.DeleteChildren;
//添加子节点
with TQuery.Create(Self) do
try
DataBaseName := dfmMain.dbsMain.DatabaseName;
SQL.Add('SELECT DW.SSDWID,DW2.DWMC,COUNT(*) DMCOUNT');
SQL.Add('FROM tff_DWXX DW,tff_DWXX DW2,tDMB ');
SQL.Add('WHERE DW.SSHY=tDMB.DM AND tDMB.ZDBZ=''SSHY''');
SQL.Add(' AND DW.SSDWID=DW2.DWID_FF AND tDMB.DMMC=''' + Node.Text +
'''');
SQL.Add('GROUP BY DW.SSDWID,DW2.DWMC');
Open;
while not EOF do
begin
ChildNode := treDW.Items.AddChildObject(
Node,
FieldByName('DWMC').AsString,
Pointer(FieldByName('SSDWID').AsInteger));
ChildNode.ImageIndex := 2;
ChildNode.SelectedIndex := 3;
if FieldByName('DMCOUNT').AsInteger = 1 then
ChildNode.HasChildren := False
else
ChildNode.HasChildren := True;
Next;
end;
finally
Free;
end;
end;
end;
if Node.Level = 1 then //单位
begin
//清空子节点
Node.DeleteChildren;
//添加子节点
with TQuery.Create(Self) do
try
DataBaseName := dfmMain.dbsMain.DatabaseName;
SQL.Add('SELECT DWMC,DWID_FF');
SQL.Add('FROM tff_DWXX');
SQL.Add('WHERE ssdwid=''' + IntToStr(Integer(Node.Data)) + '''');
SQL.Add(' and dwid_ff<>ssdwid');
Open;
while not EOF do
begin
ChildNode := treDW.Items.AddChildObject(
Node,
FieldByName('DWMC').AsString,
Pointer(FieldByName('DWID_FF').AsInteger));
ChildNode.ImageIndex := 2;
ChildNode.SelectedIndex := 3;
Next;
end;
finally
Free;
end;
end;
end;
{*********************************************************
函数和过程名:TfrmDWWH.treDWClick
用途 :点击树后显示单位的信息
*********************************************************}
procedure TfrmDWWH.treDWClick(Sender: TObject);
begin
inherited;
//点击时显示单位
if treDW.Selected.Level <> 0 then
begin
Screen.Cursor := crSQLWait;
qryMaster.DisableControls;
qryMaster.Close;
qryMaster.ParamByName('DWID_FF').AsInteger := Integer(treDW.Selected.Data);
qryMaster.Open;
qryMaster.EnableControls;
Screen.Cursor := crDefault;
treDW.PopupMenu := popRYXX;
end
else
treDW.PopupMenu := nil;
end;
{*********************************************************
函数和过程名:TfrmDWWH.Button1Click
用途 : 新增单位信息
*********************************************************}
procedure TfrmDWWH.btnInsertClick(Sender: TObject);
begin
inherited;
//新增单位单位
qryMaster.Insert;
end;
{*********************************************************
函数和过程名:TfrmDWWH.Button2Click
用途 :保存单位信息
*********************************************************}
procedure TfrmDWWH.btnPostClick(Sender: TObject);
begin
inherited;
//保存单位信息
qryMaster.Post;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryMasterAfterInsert
用途 :新记录增加后填写上级单位信息和行业信息
*********************************************************}
procedure TfrmDWWH.qryMasterAfterInsert(DataSet: TDataSet);
begin
inherited;
//单位ID
TQuery(DataSet).FieldByName('DWID_FF').AsString :=
gfGetNumber('tFF_DWXX');
TQuery(DataSet).FieldByName('JBR').AsString := gsUserName;
TQuery(DataSet).FieldByName('JBRQ').AsString := DateToStr(Now);
//如果创建的是单位 需要用户填写单位
if treDW.Selected.Level = 0 then
begin
//默认上级单位
TQuery(DataSet).FieldByName('SJDWDM').AsString := '0';
//所属单位ID为当前单位
TQuery(DataSet).FieldByName('SSDWID').AsString :=
TQuery(DataSet).FieldByName('DWID_FF').AsString;
TQuery(DataSet).FieldByName('SSHY').AsInteger :=
Integer(treDW.Selected.Data);
end
else //如果是创建组
begin
//默认上级单位
TQuery(DataSet).FieldByName('SJDWDM').AsInteger :=
Integer(treDW.Selected.Data);
//所属单位ID为当前单位
TQuery(DataSet).FieldByName('SSDWID').AsInteger :=
Integer(treDW.Selected.Data);
TQuery(DataSet).FieldByName('SSHY').AsInteger :=
Integer(treDW.Selected.Parent.Data);
end;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryMasterBeforeInsert
用途 :新增记录前检查是否选择了上级单位和行业
*********************************************************}
procedure TfrmDWWH.qryMasterBeforeInsert(DataSet: TDataSet);
begin
inherited;
//判断所选节点是否是行业和单位
if treDW.Selected = nil then
begin
gfShowError('请选择上级单位和行业名称');
Abort;
end
else
begin
if treDW.Selected.Level = 0 then
begin
if gfShowQuestion(PChar('是否创建' + treDW.Selected.Text +
'行业的单位信息')) <>
IDOK then
Abort;
end;
if treDW.Selected.Level = 1 then
begin
if gfShowQuestion(PChar('是否创建' + treDW.Selected.Text +
'下属的发放组信息'))
<>
IDOK then
Abort;
end;
if treDW.Selected.Level >= 2 then
Abort;
end;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryMasterAfterPost
用途 :提交记录
*********************************************************}
procedure TfrmDWWH.qryMasterAfterPost(DataSet: TDataSet);
begin
inherited;
TQuery(DataSet).ApplyUpdates;
TQuery(DataSet).CommitUpdates;
pTreeRefresh;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryMasterBeforeDelete
用途 :是否删除记录提示
*********************************************************}
procedure TfrmDWWH.qryMasterBeforeDelete(DataSet: TDataSet);
begin
inherited;
if gfShowQuestion('是否删除该单位信息') <> IDOK then
Abort;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryMasterBeforePost
用途 :保存前检查是否填写了上级单位代码和
所属单位代码
*********************************************************}
procedure TfrmDWWH.qryMasterBeforePost(DataSet: TDataSet);
begin
//检查数据是否正确
if TQuery(DataSet).FieldByName('SJDWDM').isNULL then
begin
gfShowError('上级单位不能为空');
Abort;
end;
if TQuery(DataSet).FieldByName('SHHFFSJ').isNULL then
begin
gfShowError('社会化发放时间不能为空');
Abort;
end;
//如果上级代码是0,表示这是一个单位。这时候所属单位代码等于发放单位代码
//如果上级代码不是0,表示这是一个组,,这时候所属单位代码等于
inherited;
end;
{*********************************************************
函数和过程名:TfrmDWWH.btnDeleteClick
用途 :删除
*********************************************************}
procedure TfrmDWWH.btnDeleteClick(Sender: TObject);
begin
inherited;
//删除
qryMaster.Delete;
pTreeRefresh;
end;
{*********************************************************
函数和过程名:TfrmDWWH.btnCancelClick
用途 :取消操作
*********************************************************}
procedure TfrmDWWH.btnCancelClick(Sender: TObject);
begin
inherited;
qryMaster.Cancel;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryWTJGAfterInsert
用途 :新增时写入所属单位
*********************************************************}
procedure TfrmDWWH.qryWTJGAfterInsert(DataSet: TDataSet);
begin
inherited;
TQuery(DataSet).FieldByName('dwid_ff').AsString :=
qryMaster.FieldByName('ssdwid').AsString;
end;
{*********************************************************
函数和过程名:TfrmDWWH.qryWTJGAfterPost
用途 :更新委托发放机构
*********************************************************}
procedure TfrmDWWH.qryWTJGAfterPost(DataSet: TDataSet);
begin
inherited;
TQuery(DataSet).ApplyUpdates;
TQuery(DataSet).CommitUpdates;
end;
procedure TfrmDWWH.N1Click(Sender: TObject);
begin
inherited;
//
frmMain.actZYCL.Execute;
end;
procedure TfrmDWWH.N2Click(Sender: TObject);
begin
inherited;
frmMain.actJYCL.Execute;
end;
procedure TfrmDWWH.FormKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if Key = #13 then
begin
SelectNext(ActiveControl as tWinControl, True, True);
Key := #0;
end;
end;
procedure TfrmDWWH.qryMasterAfterDelete(DataSet: TDataSet);
begin
inherited;
TQuery(DataSet).CommitUpdates;
TQuery(DataSet).ApplyUpdates;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -