📄 u_fk_record.~pas
字号:
unit U_fk_record;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, StdCtrls, Mask, DBCtrls, Grids, DBGrids, ExtCtrls, DBTables, Buttons,
U_Fr_fk_Printselect, ComCtrls;
type
TF_fk_record = class(TForm)
Q_fk_record: TQuery;
Panel1: TPanel;
DBGrid1: TDBGrid;
Q_fk_recordworknum: TStringField;
Q_fk_recorditem: TStringField;
Q_fk_recordmoney: TFloatField;
Q_fk_recordfs_date: TStringField;
Q_fk_recordkkyf: TStringField;
Q_fk_recorddj_date: TStringField;
Q_fk_recordmemo: TStringField;
DataSource1: TDataSource;
Q_emp_fk: TQuery;
DataSource2: TDataSource;
Q_emp_fkyjbm_name: TStringField;
Q_emp_fkejbm_name: TStringField;
Q_emp_fkwork_num: TStringField;
Q_emp_fkitem: TStringField;
Q_emp_fkmoney: TFloatField;
Q_emp_fkfs_date: TStringField;
Q_emp_fkkkyf: TStringField;
Q_emp_fkdj_date: TStringField;
Q_emp_fkmemo: TStringField;
Label8: TLabel;
Q_emp_fkname: TStringField;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit3: TEdit;
Label2: TLabel;
ComboBox1: TComboBox;
Label3: TLabel;
Label4: TLabel;
MaskEdit1: TMaskEdit;
DateTimePicker1: TDateTimePicker;
Label5: TLabel;
MaskEdit2: TMaskEdit;
Label6: TLabel;
MaskEdit3: TMaskEdit;
DateTimePicker2: TDateTimePicker;
Label7: TLabel;
DBEdit7: TDBEdit;
Bevel1: TBevel;
bitbtn3: TSpeedButton;
bitbtn1: TSpeedButton;
bitbtn2: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton2: TSpeedButton;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
bitbtn4: TSpeedButton;
bitbtn5: TSpeedButton;
Label9: TLabel;
Panel2: TPanel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit1: TEdit;
MaskEdit4: TMaskEdit;
SpeedButton1: TSpeedButton;
Edit2: TEdit;
ComboBox2: TComboBox;
SpeedButton3: TSpeedButton;
ComboBox4: TComboBox;
Edit4: TEdit;
Panel3: TPanel;
Label13: TLabel;
ComboBox3: TComboBox;
Edit5: TEdit;
UpDown1: TUpDown;
Label14: TLabel;
Edit6: TEdit;
UpDown2: TUpDown;
Label15: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DataSource1StateChange(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure MaskEdit4Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Qnge(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure MaskEdit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure MaskEdit2Change(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bitbtn2Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure Edit4DblClick(Sender: TObject);
procedure ComboBox2Click(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
procedure DateTimePicker2Change(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure ComboBox4Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit7Change(Sender: TObject);
private
{ Private declarations }
Procedure enableEdit(flag:boolean);
Function Check:boolean;
public
{ Public declarations }
fromasok:boolean;
end;
var
F_fk_record: TF_fk_record;
implementation
uses U_dm, U_fkokbottomdlg, U_Fr_DM, URP_fk;
{$R *.DFM}
function TF_fk_record.Check():Boolean ;
begin
if Length(Trim(edit3.Text))<>6 then
begin
Application.MessageBox('输入工号有误!!!','系统提示',MB_ICONSTOP+MB_OK);
Result:=false;
exit;
end;
if Combobox1.Text='' then
begin
Application.MessageBox('选择罚款类别!!!','系统提示',MB_ICONSTOP+MB_OK);
Result:=false;
exit;
end;
if (Length(trim(Maskedit1.Text))<>10)or(Length(trim(Maskedit2.Text))<>7)or(Length(trim(Maskedit3.Text))<>10) then
begin
Application.MessageBox('时间和扣款月份有误!!!','系统提示',MB_ICONSTOP+MB_OK);
Result:=false;
exit;
end;
Result:=true;
end;
procedure TF_fk_record.enableEdit(flag:boolean);
begin
if flag then
begin
bitbtn3.Enabled:=false;
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=true;
end
else
begin
bitbtn3.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=false;
end;
end;
procedure TF_fk_record.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if Panel2.Visible then
if (Length(Trim(Maskedit4.Text))<>4) or (Edit1.Text='') then
begin
Application.MessageBox('为补卡输入时间和标识!!!','系统提示',MB_ICONSTOP+MB_OK);
Action:=caNone;
exit;
end;
if Q_fk_record.State in [dsedit,dsinsert] then
begin
Application.MessageBox('项目处在编辑状态,确认后退出!!!','系统提示',MB_ICONSTOP+MB_OK);
Action:=caNone;
end
else
Action:=caFree;
end;
//新增
procedure TF_fk_record.BitBtn3Click(Sender: TObject);
begin
Q_fk_record.Append;
edit3.SetFocus;
end;
//保存
procedure TF_fk_record.BitBtn1Click(Sender: TObject);
begin
if not check then exit;
if Panel2.Visible then
if (Length(Trim(Maskedit4.Text))<>4) or (Edit1.Text='') then
begin
Application.MessageBox('为补卡输入时间和标识!!!','系统提示',MB_ICONSTOP+MB_OK);
exit;
end;
Q_fk_record.FieldByName('worknum').asstring:=Edit3.Text;
Q_fk_record.FieldByName('money').asstring:=Edit4.Text;
Q_fk_record.FieldByName('item').asstring:=Combobox1.Text;
Q_fk_record.FieldByName('fs_date').asstring:=Maskedit1.Text;
Q_fk_record.FieldByName('kkyf').asstring:=Maskedit2.Text;
Q_fk_record.FieldByName('dj_date').asstring:=Maskedit3.Text;
if Panel3.Visible then
begin
if strtoint(Edit5.Text)=1 then
Q_fk_record.FieldByName('memo').asstring:='担保'+combobox3.Text+Edit5.Text+'人次入住'+Edit6.Text+'晚'
else
Q_fk_record.FieldByName('memo').asstring:='担保'+combobox3.Text+'等'+Edit5.Text+'人次入住'+Edit6.Text+'晚';
end;
Q_fk_record.Post;
with Q_emp_fk do
begin
close;
sql.Clear;
sql.Add('select * from V_emp_fk where work_num='+''''+edit3.text+'''');
open;
end;
end;
//数据状态
procedure TF_fk_record.DataSource1StateChange(Sender: TObject);
begin
if Q_fk_record.State in [dsedit,dsinsert] then
begin
enableEdit(true);
end
else
begin
enableEdit(false);
end;
end;
//补卡
procedure TF_fk_record.SpeedButton1Click(Sender: TObject);
begin
panel2.Visible:=false;
end;
//时间
procedure TF_fk_record.MaskEdit4Change(Sender: TObject);
begin
if Length(trim(Maskedit4.text))=4 then
Edit1.SetFocus;
end;
//输入工号查询
procedure TF_fk_record.Edit2Change(Sender: TObject);
begin
if Q_fk_record.State in [dsedit,dsinsert] then
Q_fk_record.cancel;
if Length(Trim(edit2.text))<>6 then exit;
with DM.Q_temp do
begin
close;
sql.Clear;
sql.Add('select * from V_yj_ej_emp where work_num='+''''+edit2.text+'''');
open;
end;
F_fk_record.Caption:='当前被罚款对象:'+DM.Q_temp.fieldbyname('yjbm_name').asstring+' '+
DM.Q_temp.fieldbyname('ejbm_name').asstring+' '+
DM.Q_temp.fieldbyname('name').asstring;
with Q_emp_fk do
begin
close;
sql.Clear;
sql.Add('select * from V_emp_fk where work_num='+''''+edit2.text+'''');
open;
end
end;
//编辑状态
procedure TF_fk_record.BitBtn4Click(Sender: TObject);
begin
DBGrid1.ReadOnly:=false;
Q_emp_fk.Edit;
end;
procedure TF_fk_record.Qnge(Sender:TObject);
begin
if Q_emp_fk.State in [dsedit,dsinsert] then
begin
bitbtn4.Enabled:=false;
DBGrid1.ReadOnly:=false;
end
else
begin
bitbtn4.Enabled:=true;
DBGrid1.ReadOnly:=true;
end;
end;
//删除数据
procedure TF_fk_record.BitBtn5Click(Sender: TObject);
var
Q_temp:TQuery;
begin
if Q_fk_record.State in [dsedit,dsinsert] then
begin
Application.MessageBox('项目处在编辑状态,确认后再操作!!!','系统提示',MB_ICONSTOP+MB_OK);
exit;
end;
if MessageDlg('确认要删除"'+Q_emp_fk.fieldbyname('Name').asstring+'"此条记录吗?',mtConfirmation,[mbok,mbcancel],0)=mrcancel then exit;
Q_temp:=TQuery.Create(self);
try
Q_temp.DatabaseName:='Person_DB';
with Q_temp do
begin
close;
sql.Clear;
sql.Add('Delete from fk_record where worknum='+''''+Q_emp_fk.fieldbyname('work_num').asstring+'''');
sql.Add(' and fs_date='+''''+Q_emp_fk.fieldbyname('fs_date').asstring+'''');
if Q_emp_fk.fieldbyname('memo').asstring<>'' then
sql.Add(' and memo='+''''+Q_emp_fk.fieldbyname('memo').asstring+'''');
ExecSQL;
end;
finally
Q_temp.free;
end;
Q_emp_fk.Close;
Q_emp_fk.Open;
end;
//date1
procedure TF_fk_record.MaskEdit1Change(Sender: TObject);
begin
if fromasok then exit;
if panel2.Visible then exit;
if Length(Trim(Maskedit1.text))=10 then
if Length(Trim(maskedit2.text))=7 then
DBEdit7.SetFocus
else
Maskedit2.SetFocus;
end;
//输入工号查询
procedure TF_fk_record.Edit3Change(Sender: TObject);
begin
if Length(Trim(edit3.text))<>6 then exit;
with DM.Q_temp do
begin
close;
sql.Clear;
sql.Add('select * from V_yj_ej_emp where work_num='+''''+edit3.text+'''');
open;
end;
Label8.Caption:=DM.Q_temp.fieldbyname('yjbm_name').asstring+' '+
DM.Q_temp.fieldbyname('ejbm_name').asstring+' '+
DM.Q_temp.fieldbyname('name').asstring;
if fromasok then exit;
if Panel2.Visible then exit;
Edit4.SetFocus;
end;
//date2
procedure TF_fk_record.MaskEdit2Change(Sender: TObject);
begin
if fromasok then exit;
if panel2.Visible then exit;
if Length(trim(Maskedit2.text))=7 then DBedit7.SetFocus;
end;
//查询
procedure TF_fk_record.SpeedButton2Click(Sender: TObject);
begin
if edit2.Text='' then
with Q_emp_fk do
begin
close;
sql.Clear;
sql.Add('select * from V_emp_fk ');
open;
end;
end;
//窗体创建
procedure TF_fk_record.FormCreate(Sender: TObject);
begin
Q_fk_record.Open;
end;
//取消
procedure TF_fk_record.bitbtn2Click(Sender: TObject);
begin
Q_fk_record.Cancel;
if Q_emp_fk.State in [dsedit] then
Q_emp_fk.cancel;
end;
// 选择罚款类别
procedure TF_fk_record.ComboBox1Click(Sender: TObject);
begin
if not (Q_fk_record.State in [dsedit,dsinsert]) then exit;
if Combobox1.Text='借宿' then
Panel3.Visible:=true
else
Panel3.Visible:=false;
end;
//计算
procedure TF_fk_record.Edit4DblClick(Sender: TObject);
begin
Edit4.text:=inttostr((strtoint(Edit5.Text)*strtoint(Edit6.text))*10);
end;
procedure TF_fk_record.ComboBox2Click(Sender: TObject);
begin
edit1.Text:=combobox2.Text;
end;
procedure TF_fk_record.DateTimePicker1Change(Sender: TObject);
begin
maskedit1.Text:=datetostr(datetimepicker1.date);
end;
procedure TF_fk_record.DateTimePicker2Change(Sender: TObject);
begin
maskedit3.Text:=datetostr(datetimepicker2.Date);
end;
//补时
procedure TF_fk_record.SpeedButton4Click(Sender: TObject);
begin
panel2.Visible:=true; //补时
end;
//打印数据
procedure TF_fk_record.SpeedButton3Click(Sender: TObject);
var
i:integer;
s:string;
begin
if fkokbottomdlg.ShowModal=mrCancel then exit;
if fkOkbottomdlg.ListBox2.Items.Count=0 then
begin
Application.MessageBox('请选择有效的类别!','系统提示',mb_iconstop+mb_ok);
exit;
end;
for i:=0 to Fkokbottomdlg.ListBox2.Items.Count-1 do
if i<Fkokbottomdlg.ListBox2.Items.Count-1 then
s:=s+''''+fkokbottomdlg.ListBox2.Items.Strings[i]+''''+','
else
s:=s+''''+fkokbottomdlg.ListBox2.Items.Strings[i]+'''';
if Length(trim(fkOkbottomdlg.MaskEdit1.Text))<>7 then
begin
Application.MessageBox('输入的月份无效,无法执行!','系统提示',mb_iconstop+mb_ok);
exit;
end;
if MessageDlg('当前选择类别是:'+s,mtInformation,[mbYes,mbNo],0)=mrNo then exit;
if s=''''+'借宿'+'''' then
begin
with Fr_dm.QV_emp_fk do
begin
close;
sql.Clear;
sql.Add('select work_num,name,ejbm_name,sum(money)as total,item,kkyf from V_emp_fk');
sql.add(' where item='+''''+'借宿'+'''');
sql.Add(' and kkyf='+''''+fkokbottomdlg.MaskEdit1.Text+'''');
sql.Add(' group by work_num,name,ejbm_name,item,kkyf');
sql.Add(' order by ejbm_name,name');
open;
end;
if RP_fk=nil then
RP_fk:=TRP_fk.Create(self);
RP_fk.QuickRep2.ReportTitle:=fkokbottomdlg.Maskedit1.Text+'借宿情况统计';
RP_fk.QuickRep2.Preview;
end
else
begin
with Fr_dm.QV_emp_fk do
begin
close;
sql.Clear;
sql.Add('select * from V_emp_fk');
sql.add(' where item in'+'('+s+')');
if MessageDlg('扣款月份:yes'+#13+'发生月份:no',mtConfirmation,[mbyes,mbno],0)=mryes
then sql.Add(' and kkyf like '''+fkokbottomdlg.MaskEdit1.Text+'%''')
else sql.Add(' and fs_date like '''+fkokbottomdlg.MaskEdit1.Text+'%''');;
sql.Add(' order by yjbm_name,ejbm_name,name');
open;
end;
if RP_fk<>nil then rp_fk.close;
RP_fk:=TRP_fk.Create(self);
if fkokbottomdlg.RadioGroup1.ItemIndex=0 then
RP_fk.QuickRep1.ReportTitle:=fkokbottomdlg.Maskedit1.Text+'违规统计'
else
RP_fk.QuickRep1.ReportTitle:=fkokbottomdlg.Maskedit1.Text+'扣款统计';
RP_fk.QuickRep1.Preview;
end;
end;
procedure TF_fk_record.ComboBox4Click(Sender: TObject);
begin
edit4.Text:=combobox4.Text;
end;
procedure TF_fk_record.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
speedbutton3.click;
end;
procedure TF_fk_record.Edit7Change(Sender: TObject);
begin
dbedit7.text:=edit7.text;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -