📄 usearch.pas
字号:
unit uSearch;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMenu, StdCtrls, Buttons, ComCtrls, DBCtrls, ADODB, DB, uDlgbase;
type
TfrmFind = class(TfrmDlgBase)
Label3: TLabel;
gbInqus: TGroupBox;
rbEName: TRadioButton;
rbName: TRadioButton;
rbStano: TRadioButton;
edtInqu: TEdit;
btnSearch: TBitBtn;
btnCancel: TBitBtn;
pcFind: TPageControl;
tcSingle: TTabSheet;
tsMul: TTabSheet;
gbInqum: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label6: TLabel;
Label10: TLabel;
cbDep: TComboBox;
cbSort: TComboBox;
cbLevel: TComboBox;
xqFind: TXPMenu;
cbSex: TComboBox;
Label4: TLabel;
Label5: TLabel;
cbCap: TComboBox;
cbDState: TComboBox;
procedure FormCreate(Sender: TObject);
procedure btnSearchClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
procedure FillData;
public
{ Public declarations }
published
procedure RadioButtonClick(Sender: TObject);
end;
var
frmFind: TfrmFind;
implementation
uses uStainfo, uData, uGlobal;
var
fId: Integer = 0;
{$R *.dfm}
procedure TfrmFind.RadioButtonClick(Sender: TObject);
begin
case TRadioButton(Sender).Tag of
0: label3.Caption := '请输入工号:';
1: label3.Caption := '请输入姓名:';
2: label3.Caption := '请输入拼音:';
end;
edtInqu.SetFocus;
end;
procedure TfrmFind.FillData;
var
aqFillData: TADOQuery;
begin
aqFillData := TADOQuery.Create(self);
dmPer.OpenQuery(aqFillData, 'select dep from dept');
cbDep.Clear;
while not aqFillData.Eof do
begin
cbDep.Items.add(aqFillData.FieldByName('dep').AsString);
aqFillData.Next;
end;
dmPer.OpenQuery(aqFillData, 'select sname, iflag from oinfo');
FilterData(aqFillData, 'iflag = 1');
cbSort.Items.Clear;
while not aqFillData.Eof do
begin
cbSort.Items.add(aqFillData.FieldByName('sname').AsString);
aqFillData.Next;
end;
FilterData(aqFillData, 'iflag = 4');
cbLevel.Items.Clear;
while not aqFillData.Eof do
begin
cbLevel.Items.add(aqFillData.FieldByName('sname').AsString);
aqFillData.Next;
end;
FilterData(aqFillData, 'iflag = 5');
cbCap.Items.Clear;
while not aqFillData.Eof do
begin
cbCap.Items.add(aqFillData.FieldByName('sname').AsString);
aqFillData.Next;
end;
end;
procedure TfrmFind.FormCreate(Sender: TObject);
begin
Log.Write('进行员工信息查询模块');
FillData;
cbDep.Items.Insert(0, '不 限');
cbDep.ItemIndex := 0;
cbSex.Items.Insert(0, '不 限');
cbSex.ItemIndex := 0;
cbSort.Items.Insert(0, '不 限');
cbSort.ItemIndex := 0;
cbLevel.Items.Insert(0, '不 限');
cbLevel.ItemIndex := 0;
cbCap.Items.Insert(0, '不 限');
cbCap.ItemIndex := 0;
pcFind.ActivePageIndex := 0;
end;
procedure TfrmFind.btnSearchClick(Sender: TObject);
function GetDeptID(ADept: string): string;
var
aqDept: TADOQuery;
begin
Result := '';
aqDept := TADOQuery.Create(Self);
dmPer.OpenQuery(aqDept, 'select id, dep from dept');
if not aqDept.Eof then
try
Result := aqDept.Lookup('dep', ADept, 'id');
except
end;
aqDept.Free;
end;
function GetInfoID(AInfo: string): string;
var
aqInfo: TADOQuery;
begin
Result := '';
aqInfo := TADOQuery.Create(Self);
dmPer.OpenQuery(aqInfo, 'select id, sname from oinfo');
if not aqInfo.Eof then
try
Result := aqInfo.Lookup('sname', AInfo, 'id');
except
end;
aqInfo.Free;
end;
var
i: Integer;
sSta, sSql, sWhr: string;
begin
{单人查询}
if pcFind.ActivePageIndex = 0 then
begin
Log.Write('进行单人查询操作');
if edtInqu.Text <> '' then
begin
with frmStainfo do
begin
tvPer.SetFocus;
for i := fid to tvPer.Items.Count - 1 do
begin
fid := fid + 1;
if (tvPer.Items[i].Data <> nil) and (tvPer.Items[i].ImageIndex = 2) then
begin
if rbStano.Checked then
sSta := PNodeData(tvPer.Items[i].Data)^.No
else if rbName.Checked then
sSta := tvPer.Items[i].Text
else sSta := PNodeData(tvPer.Items[i].Data)^.En;
if sSta = edtInqu.Text then
begin
tvPer.Items[i].Selected := True;
tvPer.Setfocus;
Break;
end;
end;
end;
if i = tvPer.Items.Count then
begin
fid := 0;
MessageBox(Self.Handle, '已到了末尾!', '提示', mb_IconInformation + mb_Ok);
end;
end
end
else
begin
MessageBox(Handle, '请输入查询条件!', '提示', mb_IconInformation + mb_Ok);
edtInqu.SetFocus;
end;
end
{多人查询}
else
begin
Log.Write('进行多人查询操作');
sSql := 'select id, stano, sname, ename, depid from stainfo where 0=0 ';
sWhr := '';
if cbDep.Text <> '不 限' then sWhr := sWhr + ' and depid=' + GetDeptID(cbDep.Text);
if cbSex.Text <> '不 限' then sWhr := sWhr + ' and sex=' + QuotedStr(cbSex.Text);
if cbSort.Text <> '不 限' then sWhr := sWhr + ' and sorts=' + GetInfoID(cbSort.Text);
if cbLevel.Text <> '不 限' then sWhr := sWhr + ' and level=' + GetInfoID(cbLevel.Text);
if cbCap.Text <> '不 限' then sWhr := sWhr + ' and duty=' + GetInfoID(cbCap.Text);
if cbDState.Text <> '不 限' then sWhr := sWhr + ' and dutystate=' + QuotedStr(cbDState.Text);
if sWhr <> '' then sSql := sSql + sWhr;
frmStaInfo.sWhr := sWhr;
frmStaInfo.LoadTree(frmStaInfo.tvPer, sSql);
frmStaInfo.LoadTree(frmStaInfo.tvPerv, sSql);
end;
end;
procedure TfrmFind.btnCancelClick(Sender: TObject);
begin
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -