ask.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 525 行
PAS
525 行
unit ask;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, StdCtrls, Mask, ToolEdit, CurrEdit, RXDBCtrl, Buttons, ExtCtrls,
Grids, DBGrids, ImgList, ComCtrls, ToolWin, Menus,Db,Adodb;
type
TFormask = class(TForm)
ImageList2: TImageList;
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
ToolButton5: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
tbnprint: TToolButton;
ToolButton4: TToolButton;
DBNavigator1: TDBNavigator;
Splitter1: TSplitter;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
Panel2: TPanel;
Label18: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
Label19: TLabel;
MaskEdit2: TMaskEdit;
Label20: TLabel;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
ADOQuery1: TADOQuery;
ToolButton1: TToolButton;
Panel3: TPanel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Animate1: TAnimate;
DateTimePicker5: TDateTimePicker;
BitBtn1: TBitBtn;
DateTimePicker6: TDateTimePicker;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label16: TLabel;
Label17: TLabel;
DBText2: TDBText;
DBText3: TDBText;
DBText4: TDBText;
DBText5: TDBText;
DBText6: TDBText;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit11: TDBEdit;
DBComboBox1: TDBComboBox;
DBComboBox2: TDBComboBox;
DBText1: TDBText;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton4Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure DateTimePicker2CloseUp(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure tbnsortClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit11KeyPress(Sender: TObject; var Key: Char);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tbnprintClick(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure DBEdit5Exit(Sender: TObject);
procedure DBEdit6Exit(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure MaskEdit2Exit(Sender: TObject);
procedure DateTimePicker3CloseUp(Sender: TObject);
procedure DateTimePicker4CloseUp(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
private
{ Private declarations }
manyfield:boolean;
findex:array[1..5] of integer;
fsort:array[1..5] of string;
fcount:0..5;
f:string; //排序的字段
public
{ Public declarations }
end;
var
Formask: TFormask;
implementation
uses main,publicfunction,datamol, reportask;
{$R *.DFM}
procedure TFormask.FormCreate(Sender: TObject);
begin
with datamod do
begin
adoask.Open;
adoaskkind.open;
while not adoaskkind.eof do
begin
dbcombobox2.items.add(adoaskkindaskkind.asstring);
adoaskkind.next;
end;
adoaskreason.open;
while not adoaskreason.eof do
begin
dbcombobox1.items.add(adoaskreasonaskreason.asstring);
adoaskreason.next;
end;
adopersonal.Open;
end;
{ if dbcombobox3.text='有薪' then
begin
// label21.Visible:=true;
// label21.visible:=true;
dbedit8.Enabled:=true;
end
else
begin
// label21.Visible:=false;
// label21.Visible:=false;
label21.Enabled:=false;
dbedit8.Enabled:=false;
end;
}
end;
procedure TFormask.FormClose(Sender: TObject; var Action: TCloseAction);
begin
with datamod do
begin
adoask.close;
adoaskkind.close;
adoaskreason.close;
adopersonal.close;
end;
formask:=nil;
action:=cafree;
end;
procedure TFormask.ToolButton4Click(Sender: TObject);
begin
close;
end;
procedure TFormask.FormKeyPress(Sender: TObject; var Key: Char);
begin
if activecontrol=dbgrid1 then
exit;
if key=#13 then
begin
key:=#0;
if activecontrol=dbedit11 then
begin
if datamod.ADOask.State =dsinsert then
begin
datamod.adoask.post;
datamod.adoask.append;
end;
dbedit1.setfocus;
end
else
selectnext(activecontrol,true,true);
end;
end;
procedure TFormask.DateTimePicker1CloseUp(Sender: TObject);
begin
datamod.adoask.edit;
// datamod.adoaskstartrq.AsString:=datetostr(datetimepicker1.date);
end;
procedure TFormask.DateTimePicker2CloseUp(Sender: TObject);
begin
datamod.adoask.edit;
//datamod.adoaskendrq.AsString:=datetostr(datetimepicker2.date);
end;
procedure TFormask.tbnfindClick(Sender: TObject);
begin
findrecorder(datamod.adoask,'Adoask','atd13010');
end;
procedure TFormask.tbnsortClick(Sender: TObject);
var i:1..5;
begin
if manyfield then
begin
manyfield:=false;
tbnsort.hint:='设定多字段排序';
popupmenu1.Items[0].Enabled :=false;
popupmenu1.Items[1].Enabled :=false;
popupmenu1.Items[2].Enabled :=false;
popupmenu1.Items[3].Enabled :=false;
end
else begin
manyfield:=true;
tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
f:='';
popupmenu1.Items[0].Enabled :=true;
popupmenu1.Items[1].Enabled :=true;
popupmenu1.Items[2].Enabled :=true;
popupmenu1.Items[3].Enabled :=true;
fcount:=0;
for i:=1 to 5 do
begin
findex[i]:=0;
fsort[i]:='';
end;
end;
end;
procedure TFormask.N1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='ASC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure TFormask.N2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='DESC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure TFormask.N4Click(Sender: TObject);
var i:1..5;
begin
datamod.ADOask.Sort:='';
for i:=1 to fcount do
begin
if dbgrid1.Columns[findex[i]].Color=clgray then
begin
datamod.ADOask.Sort :=datamod.ADOask.Sort+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
if i<fcount then datamod.ADOask.Sort:=datamod.ADOask.Sort+',';
end;
end;
end;
procedure TFormask.N3Click(Sender: TObject);
var i:1..5;
begin
for i:=1 to fcount do
dbgrid1.Columns[findex[i]].Color :=clwindow;
fcount:=0;
end;
procedure TFormask.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
datamod.ADOask.Sort :=column.FieldName+' '+f;
end;
procedure TFormask.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(sender,key);
end;
procedure TFormask.DBEdit11KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if datamod.ADOask.Modified then
datamod.adoask.post;
dbedit1.setfocus;
key:=#0;
end;
end;
procedure TFormask.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_f1 then
begin
Application.helpfile :=extractfilepath(application.exename) +'help\pasahelp.hlp';
application.HelpJump('shm_contents0025');
end;
end;
procedure TFormask.tbnprintClick(Sender: TObject);
begin
if not assigned(reportofask) then
reportofask:=treportofask.create(self);
reportofask.show;
end;
procedure TFormask.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
if (button=nbinsert) or (button=nbedit) then
dbedit1.setfocus;
end;
procedure TFormask.DBEdit5Exit(Sender: TObject);
begin
if not datamod.ADOask.fieldbyname('endrq').isnull then
begin
if not isdate(dbedit4.text) then
begin
application.messagebox('您必须输入一个正确的日期,否则您的作业将产生一想不到的结果','Warning',mb_ok+mb_iconwarning);
dbedit6.SetFocus;
exit;
end;
if dbedit6.text<dbedit4.Text then
begin
showmessage('后面的日期不能小于前面的日期');
exit;
end;
end;
end;
procedure TFormask.DBEdit6Exit(Sender: TObject);
begin
if dbedit6.Text<dbedit4.text then
begin
showmessage('后面的日期不能小于前面的日期');
exit;
end;
begin
if (dbedit6.text=dbedit4.text) and (dbedit6.text<dbedit4.text) then
showmessage('后面的时间不能小于前面的时间');
exit;
end;
end;
procedure TFormask.Edit1Exit(Sender: TObject);
begin
with datamod do
begin
adoask.close;
adoask.commandtext:='select * from atd13010 where workno='''+edit1.text+''' or operator='''+edit1.text+''' or name like '''+edit1.text+'%'+''' ';
adoask.open;
end;
end;
procedure TFormask.ToolButton5Click(Sender: TObject);
begin
with datamod do
begin
adoask.close;
adoask.commandtext:='select * ,isnull(askhours,0)-isnull(dechours,0) nomoneyhours from atd13010 ';
adoask.open;
end;
end;
procedure TFormask.MaskEdit2Exit(Sender: TObject);
var fmat1:string;
begin
if fmat='/' then
fmat1:=' / / ';
if fmat='-' then
fmat1:=' - - ';
with datamod do
begin
if (edit1.text='') and (maskedit2.text<>fmat1) then
if (not isdate(maskedit1.Text)) or (not isdate(maskedit2.Text)) then
begin
Application.MessageBox('对不起,您输入的不是有效日期','Warning',mb_ok+mb_iconwarning);
maskedit1.SetFocus;
end
else begin
adoask.close;
adoask.commandtext:='select * from atd13010 where startrq >= '''+maskedit1.text+''' and startrq<='''+maskedit2.text+''' ';
adoask.open;
end;
end;
if (edit1.text<>'') and (maskedit1.text<>fmat1)and (maskedit2.text<>fmat1) then
if (not isdate(maskedit1.Text)) or (not isdate(maskedit2.Text)) then
begin
Application.MessageBox('对不起,您输入的不是有效日期','Warning',mb_ok+mb_iconwarning);
maskedit1.SetFocus;
end
else
begin
datamod.ADOask.Close;
datamod.ADOask.Prepared;
datamod.ADOask.CommandText:='select * from atd13010 where ( workno='''+edit1.text+''' or operator='''+edit1.text+''' or name like '''+edit1.text+'%'+''') and startrq >= '''+maskedit1.text+''' and startrq<='''+maskedit2.text+''' ';
datamod.ADOask.Open;
end;
end;
procedure TFormask.DateTimePicker3CloseUp(Sender: TObject);
begin
maskedit1.Text :=datetostr(datetimepicker3.Date);
end;
procedure TFormask.DateTimePicker4CloseUp(Sender: TObject);
begin
maskedit2.text:=datetostr(datetimepicker4.date);
end;
procedure TFormask.BitBtn2Click(Sender: TObject);
var i:string;
begin
if messagedlg('注意:移除前,无效的数据'+#13+'是否要进行移除',mtinformation,[mbyes,mbno],0)=mryes then
begin
Animate1.Active:=true;
adoquery1.Close;
adoquery1.SQL.Clear;
label24.Caption:='正在移除资料,请稍後........';
label24.Visible:=true;
label24.Update;
adoquery1.SQL.text:='exec bkask ''1'','''+formatdatetime('yyyy/mm/dd',DateTimePicker5.DateTime)+''','''+formatdatetime('yyyy/mm/dd',DateTimePicker6.datetime)+'''';
try
adoquery1.ExecSQL;
except
;
end;
label24.Caption:='移除完毕';
label24.Update;
Datamod.Adoask.Close;
Datamod.Adoask.commandtext:='select * from atd13010 order by deptno,workno';
Datamod.Adoask.Open;
messagedlg('移除成功,谢谢使用!!!!',mtinformation,[mbok],0);
Animate1.Active:=false;
label24.Visible:=false;
end;
end;
procedure TFormask.BitBtn1Click(Sender: TObject);
begin
panel3.Visible:=false;
label24.Visible:=false;
datetimepicker5.Date :=now;
datetimepicker6.Date :=now;
Animate1.Active:=false;
end;
procedure TFormask.BitBtn3Click(Sender: TObject);
begin
if messagedlg('注意:还原资料,将删除现有的资料',mtinformation,[mbyes,mbno],0)=mryes then
begin
Animate1.Active:=true;
label24.Caption:='正在还原资料,请稍後.......';
label24.Visible:=true;
label24.Update;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.text:='exec bkask ''0'','''+formatdatetime('yyyy/mm/dd',DateTimePicker5.DateTime)+''','''+formatdatetime('yyyy/mm/dd',DateTimePicker6.datetime)+'''';
try
adoquery1.ExecSQL;
except
;
end;
label24.Caption:='还原完毕';
label24.Update;
Datamod.Adoask.close;
Datamod.Adoask.commandtext:='select * from atd13010 order by deptno,workno';
Datamod.Adoask.Open;
messagedlg('还原成功,谢谢使用!!!!',mtinformation,[mbok],0);
Animate1.Active:=false;
label24.Visible:=false;
label24.Update;
end;
end;
procedure TFormask.ToolButton1Click(Sender: TObject);
begin
panel3.Visible:=true;
datetimepicker5.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?