unit U_UserHelp_Bz; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxInplaceContainer, cxDBTL, cxTLData, ComCtrls, ToolWin, ADODB, ImgList,StrUtils, ExtCtrls, DBClient; type TfrmUserHelp_Bz = class(TForm) ToolBar2: TToolBar; TOk: TToolButton; TBClose: TToolButton; cxGrid1: TcxGrid; tv1: TcxGridDBTableView; tv1Code: TcxGridDBColumn; tv1Name: TcxGridDBColumn; DBGrid1Level1: TcxGridLevel; GroupBox1: TGroupBox; ADOQueryDept: TADOQuery; DataSource1: TDataSource; ADOConnection1: TADOConnection; tv1Column1: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; cxStyle_gridRow: TcxStyle; cxStyle_gridFoot: TcxStyle; cxStyle_gridHead: TcxStyle; cxStyle_gridGroupBox: TcxStyle; cxStyle_yellow: TcxStyle; cxStyle_Red: TcxStyle; ADOQueryHelp: TADOQuery; DataSource2: TDataSource; Label1: TLabel; Edt_name: TEdit; ImageList1: TImageList; cxStyleTree: TcxStyle; Label2: TLabel; Edt_Code: TEdit; ThreeImgList: TImageList; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; GroupBox2: TGroupBox; CDS_sel: TClientDataSet; DataSourceSel: TDataSource; cxDBTreeList1: TcxDBTreeList; cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn; Splitter1: TSplitter; Label3: TLabel; banzu: TComboBox; ADO_Cmd: TADOQuery; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TOkClick(Sender: TObject); procedure tv1DblClick(Sender: TObject); procedure Edt_nameChange(Sender: TObject); procedure cxDBTreeList1Click(Sender: TObject); private procedure InitTree(); procedure DoQuery(); procedure FilterData(strdepotno,strcode,strname:string); public fFrameNo:string; fFrameName:string; fIsYwy:boolean; end; var frmUserHelp_Bz: TfrmUserHelp_Bz; implementation uses U_DataLink,U_Fun10; {$R *.dfm} /////////////////////////////////////////////////////////// //////功能:过滤数据 /////////////////////////////////////////////////////////// procedure TfrmUserHelp_Bz.FilterData(strdepotno,strcode,strname:string); var filterStr:string; begin filterStr:=''; if trim(strdepotno)<>'' then filterStr:=filterStr+' and dept like '+quotedstr('%'+trim(strdepotno)+'%'); if trim(strcode)<>'' then filterStr:=filterStr+' and userID like '+quotedstr('%'+trim(strcode)+'%'); if trim(strname)<>'' then filterStr:=filterStr+' and userName like '+quotedstr('%'+trim(strname)+'%'); try ADOQueryHelp.DisableControls ; if trim(filterStr)='' then begin ADOQueryHelp.Filtered:=false; ADOQueryHelp.EnableControls; exit; end; filterStr:=trim(RightBStr(filterStr,length(filterStr)-5)); // showmessage(filterStr); with ADOQueryHelp do begin filtered:=false; filter:=filterStr; filtered:=true; end; finally ADOQueryHelp.EnableControls; end; end; ////////////////////////////////////////////////////// procedure TfrmUserHelp_Bz.InitTree(); var strsql,strwhere:string; begin strsql:=' SELECT distinct UDept=''ALL'',UDeptTop='''',UDeptName=''所有部门'',Framelevel=0 '+ ' union '+ ' SELECT distinct UDept,UDeptTop=''ALL'',UDept,Framelevel=1 '+ ' FROM BD_staff A '+ ' WHERE USERID<>''ADMIN'' and ISNULL(UDept,'''')<>'''' '; strwhere:=' where A.Valid=''Y'' '; { if fIsYwy then strwhere:=strwhere+' and A.YWYFlag=''Y'' '; if trim(fFrameNo)<>'' then strwhere:=strwhere+' and A.dept='+quotedstr(trim(fFrameNo)); if trim(fFrameName)<>'' then strwhere:=strwhere+' and B.frameName like '+quotedstr('%'+trim(fFrameName)+'%'); strsql:=strsql+ strwhere; } with ADOQueryDept do begin close; sql.Clear ; sql.Add( strsql); Open; end; cxDBTreeList1.FullExpand; DoQuery(); end; procedure TfrmUserHelp_Bz.FormShow(Sender: TObject); begin InitTree(); end; procedure TfrmUserHelp_Bz.FormCreate(Sender: TObject); begin GroupBox2.Align :=alclient; with ADOConnection1 do begin Connected:=false; ConnectionString:=DConString; Connected:=true; end; end; ////////////////////////////////////////////////// // ////////////////////////////////////////////////// procedure TfrmUserHelp_Bz.DoQuery(); var strsql,strwhere:string; begin strsql:=' select * '+ ' from BD_staff A '+ ' where isnull(UserID,'''')<>''ADMIN'' '+ ' and not exists(select userID from BD_staff_Banzu X where X.userID=A.UserID) '; strwhere:=' and A.Valid=''Y'' '; if fIsYwy then strwhere:=strwhere+' and A.Isywy=1 '; strsql:=strsql+ strwhere +' order by A.userID '; with ADOQueryHelp do begin close; sql.Clear ; sql.Add( strsql); Open; end; sCreateCDS20(ADOQueryHelp,cds_sel); end; procedure TfrmUserHelp_Bz.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmUserHelp_Bz.TOkClick(Sender: TObject); begin if ADOQueryHelp.IsEmpty then begin application.MessageBox('没有选择员工!','提示信息',MB_ICONERROR); exit; end; if trim(banzu.text)='' then begin application.MessageBox('没有选择班组!','提示信息',MB_ICONERROR); exit; end; ADO_Cmd.Connection.BeginTrans; try with CDS_sel do begin DisableControls; First; while not eof do begin with ADO_Cmd do begin close; sql.Clear; sql.Add('select * from BD_Staff_banzu'); sql.Add('where userID='+quotedstr(trim(CDS_sel.fieldbyname('userID').AsString))); open; if ADO_Cmd.IsEmpty then ADO_Cmd.Append else ADO_Cmd.Edit; ADO_Cmd.fieldbyname('userID').Value:=trim(CDS_sel.fieldbyname('userID').AsString); ADO_Cmd.fieldbyname('banzu').Value:=trim(banzu.Text); ADO_Cmd.Post; end; next; end; EnableControls; end; ADO_Cmd.Connection.CommitTrans; except CDS_sel.EnableControls; ADO_Cmd.Connection.RollbackTrans; application.MessageBox('数据保存失败!','提示信息',MB_ICONERROR); exit; end; ModalResult:=1; end; procedure TfrmUserHelp_Bz.tv1DblClick(Sender: TObject); var i:integer; begin if ADOQueryHelp.IsEmpty then exit; if CDS_Sel.Locate('userID',trim(adoqueryHelp.fieldbyname('userID').AsString),[]) then exit; with CDS_Sel do begin CDS_Sel.append; for i:=0 to ADOQueryHelp.FieldCount-1 do begin fields[i].Value:=ADOQueryHelp.Fields[i].Value; end; CDS_Sel.Post; end; end; procedure TfrmUserHelp_Bz.Edt_nameChange(Sender: TObject); begin FilterData('',edt_code.Text,Edt_name.Text); end; procedure TfrmUserHelp_Bz.cxDBTreeList1Click(Sender: TObject); begin if ADOQueryDept.IsEmpty then exit; if trim(ADOQueryDept.FieldByName('Framelevel').AsString)='0' then FilterData('','','') else FilterData(ADOQueryDept.FieldByName('UDept').AsString,'',''); end; end.