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

📄 usearch.pas

📁 用户权限管理系统
💻 PAS
字号:
unit uSearch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzTabs, RzButton, StdCtrls, RzLabel, Grids, DBGridEh,
  cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, ExtCtrls,
  cxMaskEdit, cxDropDownEdit, RzPanel, cxTreeView, cxRadioGroup, cxCalendar,
  DB, DBClient, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox;

type
  TfrmSearch = class(TForm)
    RzButton1: TRzButton;
    RzButton2: TRzButton;
    RzLabel1: TRzLabel;
    Panel1: TPanel;
    cxRadioButton1: TcxRadioButton;
    cxRadioButton2: TcxRadioButton;
    cxRadioButton3: TcxRadioButton;
    Bevel1: TBevel;
    RzLabel2: TRzLabel;
    RzLabel3: TRzLabel;
    cxTextEdit1: TcxTextEdit;
    cxTextEdit2: TcxTextEdit;
    RzGroupBox1: TRzGroupBox;
    Panel2: TPanel;
    RzLabel4: TRzLabel;
    Panel3: TPanel;
    Bevel2: TBevel;
    cxRadioButton4: TcxRadioButton;
    cxRadioButton5: TcxRadioButton;
    cxRadioButton6: TcxRadioButton;
    cxRadioButton7: TcxRadioButton;
    cxRadioButton8: TcxRadioButton;
    cxRadioButton9: TcxRadioButton;
    cxRadioButton10: TcxRadioButton;
    cxRadioButton11: TcxRadioButton;
    RzLabel5: TRzLabel;
    cxDateEdit1: TcxDateEdit;
    RzLabel6: TRzLabel;
    cxDateEdit2: TcxDateEdit;
    RzButton3: TRzButton;
    RzButton4: TRzButton;
    RzButton5: TRzButton;
    RzButton6: TRzButton;
    RzButton7: TRzButton;
    RzButton8: TRzButton;
    DBGridEh2: TDBGridEh;
    cds_UserList: TClientDataSet;
    cds_UserListV01: TStringField;
    cds_UserListV37: TStringField;
    cds_UserListV38: TStringField;
    cds_UserListV02: TStringField;
    cds_UserListV03: TStringField;
    cds_UserListV35: TStringField;
    cds_UserListV11: TStringField;
    cds_UserListV05: TDateTimeField;
    cds_UserListV06: TDateTimeField;
    DataSource1: TDataSource;
    cds_Sd: TClientDataSet;
    cds_SdV01: TStringField;
    cds_SdV02: TStringField;
    ds_SD: TDataSource;
    cxLookupComboBox1: TcxLookupComboBox;
    cxLookupComboBox2: TcxLookupComboBox;
    cxLookupComboBox3: TcxLookupComboBox;
    cds_Sd1: TClientDataSet;
    StringField1: TStringField;
    StringField2: TStringField;
    ds_SD1: TDataSource;
    cds_Sd2: TClientDataSet;
    StringField3: TStringField;
    StringField4: TStringField;
    ds_SD2: TDataSource;
    procedure RzButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cxLookupComboBox1PropertiesChange(Sender: TObject);
    procedure cxLookupComboBox2PropertiesChange(Sender: TObject);
    procedure cxLookupComboBox3PropertiesChange(Sender: TObject);
    procedure cxRadioButton1Click(Sender: TObject);
    procedure RzButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RzButton3Click(Sender: TObject);
    procedure RzButton5Click(Sender: TObject);
    procedure RzButton4Click(Sender: TObject);
    procedure RzButton6Click(Sender: TObject);
    procedure RzButton7Click(Sender: TObject);
    procedure RzButton8Click(Sender: TObject);
  private
    { Private declarations }
    QrySql: string;
    procedure FillCombobox;
    procedure LoadDataFromGrp;
    procedure LoadDataFromSubSys;
    procedure LoadDataFromRightGrp;
    procedure QryData(const cSqlStr: string); overload;
    procedure QryData; overload;

    procedure ChangeStatus;
  public
    { Public declarations }
    iType: smallint;
  end;

var
  frmSearch: TfrmSearch;

implementation

uses untDM, uUserAttr, untUser, uUserLog, untPublic;

{$R *.dfm}

procedure TfrmSearch.FillCombobox;
begin
  if cds_Sd.Active then
    cds_Sd.Close;
  cds_Sd.XMLData := DM.FreeQuery('select V01,V02 from T_003 union ' +
    'select ''All'',''所有'' order by V01');
  cds_Sd.Active := true;

  if cds_Sd1.Active then
    cds_Sd1.Close;
  cds_Sd1.XMLData := DM.FreeQuery('select V01,V02 from T_005 union ' +
    'select ''All'',''所有'' order by V01');
  cds_Sd1.Active := true;

  if cds_Sd2.Active then
    cds_Sd2.Close;
  cds_Sd2.XMLData := DM.FreeQuery('select V01,V02 from T_004 union ' +
    'select ''All'',''所有'' order by V01');
  cds_Sd2.Active := true;

end;

procedure TfrmSearch.RzButton2Click(Sender: TObject);
begin
  close;
end;

procedure TfrmSearch.FormCreate(Sender: TObject);
begin
  FillCombobox;
  cxTextEdit1.Text := '';
  cxTextEdit2.Text := '';
  cxDateEdit1.Text := '';
  cxDateEdit2.Text := '';
  cds_UserList.CreateDataSet;
  cds_UserList.Active := true;
end;

procedure TfrmSearch.LoadDataFromGrp;
var
  cSql: string;
begin
  if cxLookupComboBox1.EditValue = 'All' then
    cSql := 'select * from V_001'
  else if cxLookupComboBox1.EditValue <> null then
    cSql := 'select * from V_0011 where V31=' +
      QuotedStr(cxLookupComboBox1.EditValue)
  else
    cSql := 'select * from V_0011 where 1<>1';

  QryData(cSql);
end;

procedure TfrmSearch.LoadDataFromRightGrp;
var
  cSql: string;
begin
  if cxLookupComboBox3.EditValue = 'All' then
    cSql := 'select * from V_001'
  else if cxLookupComboBox3.EditValue <> null then
    cSql := 'select * from V_001 ' + ' where isnull(V16,0)= 0 and V17=' +
      QuotedStr(cxLookupComboBox3.EditValue)
  else
    cSql := 'select * from V_0011 where 1<>1';

  QryData(cSql);
end;

procedure TfrmSearch.LoadDataFromSubSys;
var
  cSql: string;
begin
  if cxLookupComboBox2.EditValue = 'All' then
    cSql := 'select * from V_001'
  else if cxLookupComboBox2.EditValue <> null then
    cSql := 'Q_SysUser ' + QuotedStr(cxLookupComboBox2.EditValue)
  else
    cSql := 'select * from V_0011 where 1<>1';

  QryData(cSql);
end;

procedure TfrmSearch.cxLookupComboBox1PropertiesChange(Sender: TObject);
begin
  LoadDataFromGrp;
end;

procedure TfrmSearch.cxLookupComboBox2PropertiesChange(Sender: TObject);
begin
  LoadDataFromSubSys;
end;

procedure TfrmSearch.cxLookupComboBox3PropertiesChange(Sender: TObject);
begin
  LoadDataFromRightGrp;
end;

procedure TfrmSearch.ChangeStatus;
begin
  if cxRadioButton1.Checked then
  begin
    cxLookupComboBox1.Enabled := true;
    cxLookupComboBox2.Enabled := false;
    cxLookupComboBox3.Enabled := false;
    RzButton7.Enabled := false;
    RzButton8.Enabled := true;
    cxLookupComboBox1.Properties.OnChange(self);
  end
  else if cxRadioButton2.Checked then
  begin
    cxLookupComboBox1.Enabled := false;
    cxLookupComboBox2.Enabled := true;
    cxLookupComboBox3.Enabled := false;
    RzButton7.Enabled := true;
    RzButton8.Enabled := false;
    cxLookupComboBox2.Properties.OnChange(self);
  end
  else if cxRadioButton3.Checked then
  begin
    cxLookupComboBox1.Enabled := false;
    cxLookupComboBox2.Enabled := false;
    cxLookupComboBox3.Enabled := true;
    RzButton7.Enabled := false;
    RzButton8.Enabled := true;
    cxLookupComboBox3.Properties.OnChange(self);
  end;

end;

procedure TfrmSearch.cxRadioButton1Click(Sender: TObject);
begin
  ChangeStatus;
end;

procedure TfrmSearch.RzButton1Click(Sender: TObject);
var
  cSql: string;
begin
  cSql := 'select * from V_001 where 1=1 ';

  if trim(cxTextEdit1.Text) <> '' then
    cSql := cSql + ' and V03 like ' +
      QuotedStr('%' + trim(cxTextEdit1.Text) + '%');

  if trim(cxTextEdit2.Text) <> '' then
    cSql := cSql + ' and V02 like ' +
      QuotedStr('%' + trim(cxTextEdit2.Text) + '%');

  if cxRadioButton5.Checked then
    cSql := cSql +
      ' and V05>= dateadd(day,-7,convert(varchar(10),getdate(),120))'
  else if cxRadioButton6.Checked then
    cSql := cSql +
      ' and V05>= dateadd(month,-1,convert(varchar(10),getdate(),120))'
  else if cxRadioButton7.Checked then
    cSql := cSql +
      ' and V05>= dateadd(year,-1,convert(varchar(10),getdate(),120))'
  else if cxRadioButton8.Checked then
  begin
    if trim(cxDateEdit1.EditText) <> '' then
      cSql := cSql + ' and V05>=' + QuotedStr(trim(cxDateEdit1.EditText));
    if trim(cxDateEdit2.EditText) <> '' then
      cSql := cSql + ' and V05<=' + QuotedStr(trim(cxDateEdit2.EditText));
  end;

  if cxRadioButton10.Checked then
    cSql := cSql + ' and V08= 1'
  else if cxRadioButton11.Checked then
    cSql := cSql + ' and isnull(V08,0)= 0';

  QryData(cSql);
end;

procedure TfrmSearch.FormShow(Sender: TObject);
begin
  case iType of
    0: cxRadioButton1.Checked := true;
    1: cxRadioButton2.Checked := true;
    2: cxRadioButton3.Checked := true;
  end;
  ChangeStatus;

end;

procedure TfrmSearch.RzButton3Click(Sender: TObject);
var
  CUser: TUser;
  UserId: string;
begin
  if cds_UserList.Active and not cds_UserList.IsEmpty then
  begin
    UserId := trim(cds_UserList.fieldbyname('V01').AsString);
    CUser := TUser.Create(UserId, 1);
    frmUserAttr := TfrmUserAttr.Create(nil);
    frmUserAttr.CurUser := CUser;
    frmUserAttr.ShowModal;
    frmUserAttr.Free;
    CUser.Free;
  end;
end;

procedure TfrmSearch.RzButton5Click(Sender: TObject);
var
  CUser: TUser;
begin
  CUser := TUser.Create('', 0);
  frmUserAttr := TfrmUserAttr.Create(nil);
  frmUserAttr.CurUser := CUser;
  if frmUserAttr.ShowModal = mrOk then
  begin
    cds_UserList.Append;
    cds_UserList.FieldByName('V01').Value := CUser.V01;
    cds_UserList.FieldByName('V37').Value := CUser.V37;
    cds_UserList.FieldByName('V38').Value := CUser.V38;
    cds_UserList.FieldByName('V02').Value := CUser.V02;
    cds_UserList.FieldByName('V03').Value := CUser.V03;
    if trim(CUser.V05) <> '' then
      cds_UserList.FieldByName('V05').Value := StrToDate(CUser.V05);
    if trim(CUser.V06) <> '' then
      cds_UserList.FieldByName('V06').Value := StrToDate(CUser.V06);
    cds_UserList.FieldByName('V35').Value := CUser.V35;
    cds_UserList.FieldByName('V11').Value := CUser.V11;
    cds_UserList.Post;
  end;
  frmUserAttr.Free;
  CUser.Free;
end;

procedure TfrmSearch.RzButton4Click(Sender: TObject);
begin
  if cds_UserList.Active and not cds_UserList.IsEmpty then
  begin
    if TPublicFunc.ShowQuestionMsg('您确实要删除此用户吗?') = IDYes then
    begin

      if DM.UserDel(trim(cds_UserList.fieldbyname('V01').AsString)) = 0 then
        cds_UserList.Delete;
    end;
  end;
end;

procedure TfrmSearch.RzButton6Click(Sender: TObject);
begin
  if cds_UserList.Active and not cds_UserList.IsEmpty then
  begin
    frmUserLog := TfrmUserLog.Create(nil);
    frmUserLog.iMod := 1;
    frmUserLog.UserId := trim(cds_UserList.fieldbyname('V01').AsString);
    frmUserLog.cxTextEdit1.Text :=
      trim(cds_UserList.fieldbyname('V03').AsString);
    frmUserLog.ShowModal;
    frmUserLog.Free;
  end;
end;

procedure TfrmSearch.RzButton7Click(Sender: TObject);
var
  SysId, V02: string;
begin
  if cds_UserList.Active and not cds_UserList.IsEmpty then
  begin
    if (cxLookupComboBox2.EditValue <> 'All') and
      (cxLookupComboBox2.EditValue <> null) then
    begin
      SysId := cxLookupComboBox2.EditValue;
      V02 := trim(cds_UserList.fieldbyname('V01').AsString);
      if DM.SubRightChg(SysId, V02, '') = 0 then
      begin
        TPublicFunc.ShowInfoMsg('操作成功!');
        QryData;
      end
      else
        TPublicFunc.ShowInfoMsg('操作失败!');
    end
    else
      TPublicFunc.ShowInfoMsg('请指定子系统!');
  end;
end;

procedure TfrmSearch.RzButton8Click(Sender: TObject);
var
  GrpId, V02, cSql: string;
begin
  if cds_UserList.Active and not cds_UserList.IsEmpty then
  begin
    if cxRadioButton1.Checked then
    begin
      if (cxLookupComboBox1.EditValue <> 'All') and
        (cxLookupComboBox1.EditValue <> null) then
      begin
        GrpId := cxLookupComboBox1.EditValue;
        V02 := trim(cds_UserList.fieldbyname('V01').AsString);
        if DM.UserToGrp(GrpId, V02) = 0 then
          TPublicFunc.ShowInfoMsg('操作成功!')
        else
          TPublicFunc.ShowInfoMsg('操作失败!');
      end
      else
        TPublicFunc.ShowInfoMsg('请指定用户组!');
    end
    else if cxRadioButton3.Checked then
    begin
      if (cxLookupComboBox3.EditValue <> 'All') and
        (cxLookupComboBox3.EditValue <> null) then
      begin
        GrpId := cxLookupComboBox3.EditValue;
        V02 := trim(cds_UserList.fieldbyname('V01').AsString);
        cSql := 'update T_001 set V16=0,V17=' + QuotedStr(GrpId) +
          ' where V01=' + QuotedStr(V02);
        if DM.ExecuteSqlCmd(cSql) = 0 then
          TPublicFunc.ShowInfoMsg('操作成功!')
        else
          TPublicFunc.ShowInfoMsg('操作失败!');
      end
      else
        TPublicFunc.ShowInfoMsg('请指定权限组!');
    end;
  end;
end;

procedure TfrmSearch.QryData(const cSqlStr: string);
begin
  QrySql := cSqlStr;
  if cds_UserList.Active then
    cds_UserList.Active := false;
  cds_UserList.XMLData := DM.FreeQuery(QrySql);
  cds_UserList.Active := true;
end;

procedure TfrmSearch.QryData;
begin
  if cds_UserList.Active then
    cds_UserList.Active := false;
  cds_UserList.XMLData := DM.FreeQuery(QrySql);
  cds_UserList.Active := true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -