⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udwwh.pas

📁 行业应急系统 包括: 应急系统(待遇核发) 发放系统 开发环境:Delphi5 (sp1)+ Oracle 8.05 MultiExport是一个可以将数据按指定字段倒出
💻 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 + -