📄 rsfind.pas
字号:
unit rsfind;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, ComCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Mask, Db;
type
Trsfindb = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
ComboBox2: TComboBox;
Label6: TLabel;
Edit4: TEdit;
Label7: TLabel;
Edit5: TEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
DateTimePicker1: TDateTimePicker;
Label11: TLabel;
DateTimePicker2: TDateTimePicker;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Panel2: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Panel3: TPanel;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
DataSource2: TDataSource;
DataSource3: TDataSource;
DataSource4: TDataSource;
DataSource5: TDataSource;
DataSource6: TDataSource;
c: TPageControl;
TabSheet1: TTabSheet;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
//DBComboBox6: TDBComboBox;
DBEdit3: TDBEdit;
DateTimePicker3: TDateTimePicker;
// DBComboBox7: TDBComboBox;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DateTimePicker4: TDateTimePicker;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
Panel4: TPanel;
DBImage1: TDBImage;
Button5: TButton;
TabSheet2: TTabSheet;
DBRichEdit1: TDBRichEdit;
DataSource7: TDataSource;
// DBComboBox5: TDBComboBox;
DBLookupComboBox5: TDBLookupComboBox;
DBLookupComboBox6: TDBLookupComboBox;
DBLookupComboBox7: TDBLookupComboBox;
DBLookupComboBox8: TDBLookupComboBox;
DBGrid3: TDBGrid;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBEdit14: TDBEdit;
DBEdit15: TDBEdit;
DBEdit16: TDBEdit;
DBComboBox1: TDBComboBox;
Edit6: TEdit;
treeview1: TTreeView;
procedure FormShow(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure treeview1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6Enter(Sender: TObject);
procedure Edit6Exit(Sender: TObject);
procedure DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
i_key13:boolean; { Public declarations }
end;
var
rsfindb: Trsfindb;
implementation
uses datamodule;
{$R *.DFM}
procedure Trsfindb.FormShow(Sender: TObject);
var
grouprsbm,rsbmstr:string;
begin
dbgrid1.setfocus;
i_key13:=true;
edit6.text:='';
edit1.text:='';
edit2.text:='';
edit3.text:='';
combobox2.text:='';
edit4.text:='';
edit5.text:='';
datetimepicker1.date:=strtodate('1990-1-1');
treeview1.items.clear;
grouprsbm:='select a_bm from rsbm group by a_bm';
with datamodule1.rsbms do
begin
close;
sql.clear;
sql.add(grouprsbm);
prepare;
open;
end;
datamodule1.rsbms.Last;
while not datamodule1.rsbms.bof do
begin
rsbmstr:='select *from rsbm where a_bm='+''''+datamodule1.rsbms.fieldbyname('a_bm').asstring+'''';
with datamodule1.rsbmss do
begin
close;
sql.clear;
sql.add(rsbmstr);
prepare;
open;
end;//with
// treeview1.Items.Clear;
if datamodule1.rsbms.eof then
begin
if (datamodule1.rsbms.eof) and (datamodule1.rsbmss.RecordCount<=1) then
begin
treeview1.Items.Add(treeview1.TopItem ,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
treeview1.TopItem.selected:=true;
end//if
else
begin
treeview1.Items.Add(treeview1.TopItem ,datamodule1.rsbms.fieldbyname('a_bm').asstring);
datamodule1.rsbmss.last;
while not datamodule1.rsbmss.bof do
begin
if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
treeview1.Items.addchild(treeview1.topitem,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
datamodule1.rsbmss.prior;
end;//while
treeview1.TopItem.selected:=true;
end;//else 第一条头节点
end//datamodule1.rsbms.bof
else
begin
if datamodule1.rsbmss.RecordCount<=1 then
begin
treeview1.Items.Add(treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bm').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
treeview1.Selected.getNextSibling.Selected :=true;
end
else
begin
treeview1.items.add(treeview1.Selected.getNextSibling,datamodule1.rsbms.fieldbyname('a_bm').asstring);
treeview1.Selected.getNextSibling.Selected :=true;
datamodule1.rsbmss.last;
while not datamodule1.rsbmss.bof do
begin
if datamodule1.rsbmss.FieldByName('a_bz').asstring<>'' then
treeview1.items.addchild(treeview1.selected,datamodule1.rsbmss.fieldbyname('a_bz').asstring+'('+datamodule1.rsbmss.fieldbyname('a_number').asstring+')');
datamodule1.rsbmss.prior;
end;//while not
end;
end;//else不是第一条节点
datamodule1.rsbms.prior;
end;//while not rsbms //到这边结束
treeview1.visible:=false;
end;
procedure Trsfindb.DBGrid2DblClick(Sender: TObject);
begin
edit6.text:=datamodule1.rsbm.fieldbyname('a_bm').asstring;
edit1.text:=datamodule1.rsbm.fieldbyname('a_bz').asstring;
end;
procedure Trsfindb.Button1Click(Sender: TObject);
var
first_age,last_age,str:string;
begin
if edit6.text<>'' then //有选择部门和班组的情况
begin
str:='select *from yggb where a_bm=';
str:=str+''''+edit6.text+''''+' and a_bz=';
str:=str+''''+edit1.text+'''';
end
else //没有选择部门和班组的情况
begin
str:='select *from yggb where a_bm like ';
str:=str+''''+'%'+edit6.text+'%'+''''+' and a_bz like ';
str:=str+''''+'%'+edit1.text+'%'+'''';
end;
if (edit2.text<>'') and (edit3.text<>'') then //年龄段
begin
first_age:='12/31/'+(inttostr(strtoint(formatdatetime('yyyy',date))-strtoint(edit2.text)));
// 要从last先来
last_age:='1/1/'+(inttostr(strtoint(formatdatetime('yyyy',date))-strtoint(edit3.text)));
str:=str+' and a_bir between '+''''+last_age+''''+' and '+''''+first_age+'''';
end;
if combobox2.text<>'' then //性别
begin
str:=str+' and a_sex='+''''+combobox2.text+'''';
end;
if (edit4.text<>'') and (edit5.text<>'') then //生日
begin
str:=str+' and extract(month from a_bir)='+''''+edit4.text+'''';
str:=str+' and extract(day from a_bir)='+''''+edit5.text+'''';
end;
if dblookupcombobox7.text<>'' then //民族
begin
str:=str+' and a_mz='+''''+dblookupcombobox7.text+'''';
end;
if dblookupcombobox8.text<>'' then //文化程度
begin
str:=str+' and a_whzd='+''''+dblookupcombobox8.text+'''';
end;
if dblookupcombobox5.text<>'' then //职称
begin
str:=str+' and a_zz='+''''+dblookupcombobox5.text+'''';
end;
if dblookupcombobox6.text<>'' then //职务
begin
str:=str+' and a_zw='+''''+dblookupcombobox6.text+'''';
end;
//最后加一个进公司日期
str:=str+' and a_hzsj between '+''''+formatdatetime('mm''/''d''/''yyyy',datetimepicker1.date)+'''';
str:=str+' and '+''''+formatdatetime('mm''/''d''/''yyyy',datetimepicker2.date)+'''';
with datamodule1.yggb do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;
if datamodule1.yggb.eof then
showmessage('查无此人');
end;
procedure Trsfindb.Button6Click(Sender: TObject);
begin
//showmessage(inttostr(( (strtoint(formatdatetime('yyyy',date))-20) ))));
showmessage('12/31/'+(inttostr(strtoint(formatdatetime('yyyy',date))-20)));
end;
procedure Trsfindb.CheckBox1Click(Sender: TObject);
begin
checkbox2.checked:=not checkbox1.checked;
if checkbox1.checked=true then
dbgrid3.visible:=true
else
dbgrid3.visible:=false;
end;
procedure Trsfindb.CheckBox2Click(Sender: TObject);
begin
checkbox1.checked:=not checkbox2.checked;
if checkbox1.checked=true then
dbgrid3.visible:=true
else
dbgrid3.visible:=false;
end;
procedure Trsfindb.treeview1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key in [37..40] then
begin
if treeview1.Selected.haschildren=true then
begin
if treeview1.Selected.level<>0 then
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
edit6.text:=treeview1.selected.parent.text
else
edit6.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
if pos('(',treeview1.selected.text)=0 then
edit1.text:=treeview1.Selected.Text
else
edit1.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;
end;//if treeview1
{else
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
edit1.text:=treeview1.selected.parent.text
else
edit1.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
edit2.text:='';
end;//else }
if treeview1.selected.level<>0 then
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
edit6.text:=treeview1.selected.parent.text
else
edit6.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
if pos('(',treeview1.selected.text)=0 then
edit1.text:=treeview1.Selected.Text
else
edit1.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;
end;//if inttostr
if key=13 then
begin
if (treeview1.Selected.HasChildren=true) and (treeview1.Selected.Level=0) then
begin
showmessage('请先选择好班组,谢谢!');
i_key13:=true;
treeview1.Selected.getFirstChild.Selected:=true;
end//if (
else
begin
if i_key13=false then
treeview1.visible:=false;
//
if treeview1.Selected.haschildren=true then
begin
if treeview1.Selected.level<>0 then
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
edit6.text:=treeview1.selected.parent.text
else
edit6.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
if pos('(',treeview1.selected.text)=0 then
edit1.text:=treeview1.Selected.Text
else
edit1.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;
end//if treeview1
else
begin
if pos('(',treeview1.Selected.Text)=0 then
edit6.text:=treeview1.selected.text
else
edit6.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
edit1.text:='';
end;//else
if treeview1.selected.level<>0 then
begin
if pos('(',treeview1.Selected.parent.Text)=0 then
edit6.text:=treeview1.selected.parent.text
else
edit6.text:=copy(treeview1.selected.parent.text,1,pos('(',treeview1.selected.parent.text)-1);
if pos('(',treeview1.selected.text)=0 then
edit1.text:=treeview1.Selected.Text
else
edit1.text:=copy(treeview1.selected.text,1,pos('(',treeview1.selected.text)-1);
end;
//
i_key13:=false;
end;
end;//if key 13结束
end;
procedure Trsfindb.Edit6Enter(Sender: TObject);
begin
with (sender as tedit) do
color:=cllime;
treeview1.visible:=true;
treeview1.setfocus;
end;
procedure Trsfindb.Edit6Exit(Sender: TObject);
begin
with (sender as tedit) do
color:=clwhite;
end;
procedure Trsfindb.DBGrid3DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
lastcolor: TColor;
begin
with (Sender as TDBGrid) do
begin
lastcolor := clred;
case DataSource.DataSet.RecNo mod 2 of
1: lastcolor := cllime;
0: lastcolor := clwhite;
end;
if gdSelected in State then
lastcolor := clred; //选中行背景为绿色
Canvas.Brush.Color := lastcolor;
DefaultDrawDataCell(Rect, Column.Field, State);
end;
end;
procedure Trsfindb.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.release;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -