📄 input.pas
字号:
adodm.ADOTable1.Active := true;
with adodm.ADOTable1 do
begin
append;
FieldValues['bmbh'] := trim(edit1.text);
FieldValues['ygbh'] := trim(edit2.text);
FieldValues['xm'] := trim(edit3.text);
FieldValues['xmdm'] := trim(Edit4.text);
FieldValues['xb'] := trim(combobox2.text);
FieldValues['gzbh'] := trim(edit5.text);
for j := 0 to ii - 1 do
FieldValues[lbname[j]] := a[j].Text;
Post;
end;
adodm.ADOTable1.close;
//开始生成发放记录,检索工种对应的劳保名称及发放周期
sqltxt := 'select lbmc,ffzq from gzlb where gzbh=''' + trim(edit5.text) + '''';
openadoquery(adodm.adoquery2, sqltxt);
//生成初始发放日期
decodedate(Date, yy, mm, dd);
ffrq := inttostr(yy) + '-07-01';
//发放记录填写
adodm.ADOTable1.TableName := 'ffjl';
adodm.ADOTable1.Open;
with adodm.ADOTable1 do
begin
for i := 1 to adodm.adoquery2.RecordCount do
begin
append;
FieldValues['bmbh'] := trim(edit1.text);
FieldValues['gzbh'] := trim(edit5.text);
FieldValues['ygbh'] := trim(edit2.text);
FieldValues['lbmc'] := adodm.adoquery2.FieldValues['lbmc'];
FieldValues['ffzq'] := adodm.adoquery2.FieldValues['ffzq'];
FieldValues['ffrq'] := ffrq;
post;
adodm.adoquery2.Next;
end;
end;
adodm.ADOTable1.close;
//将发放记录列出供修改
sqltxt := 'select id,lbmc,ffzq,ffrq from ffjl where ygbh=''' + trim(edit2.Text) + '''';
openadoquery(adodm.ADOQuery3, sqltxt);
//清理输入框
edit2.text := '';
edit3.text := '';
edit4.text := '';
end;
//更换工种
procedure Tinputfm.BitBtn3Click(Sender: TObject);
var
i: integer;
yy, mm, dd: word;
ffrq, s, s1, sqltxt: string;
begin
if (edit9.text = '') or (edit11.text = '') then
begin
MessageDlg('员工编号、新工种编号缺一不可!', mtWarning, [mbOK], 0);
exit;
end;
//判断员工是否存在或对应的工种是否存在
sqltxt := 'select ygbh from lkyg where ygbh=''' + trim(edit9.Text) + '''';
openadoquery(adodm.ADOQuery2, sqltxt);
if adodm.adoquery2.RecordCount = 0 then
begin
MessageDlg('员工不存在!', mtWarning, [mbOK], 0);
exit;
end;
sqltxt := 'select gzbh from gz where gzbh=''' + trim(edit11.Text) + '''';
openadoquery(adodm.ADOQuery2, sqltxt);
if adodm.adoquery2.RecordCount = 0 then
begin
MessageDlg('要更换的工种不存在!', mtWarning, [mbOK], 0);
exit;
end;
//删除原来记录
sqltxt := 'delete from ffjl where ygbh=''' + trim(edit9.Text) + '''';
execadoquery(adodm.ADOQuery2, sqltxt);
//开始生成新发放记录,先提取部门编号(由员工编号决定),劳保用品
with adodm.adoQuery2 do
begin
close;
SQL.clear;
SQL.add('select gzlb.lbmc,ffzq,lkyg.bmbh from gzlb,lkyg');
Sql.add(' where gzlb.gzbh=:p1 and ygbh=:p2');
parameters.ParamByname('p1').Value := trim(edit11.text);
parameters.ParamByname('p2').Value := trim(edit9.text);
open;
end;
//生成初始发放日期
decodedate(Date, yy, mm, dd);
ffrq := inttostr(yy) + '-07-01';
//发放记录填写
adodm.ADOTable1.TableName := 'ffjl';
adodm.ADOTable1.Open;
with adodm.ADOTable1 do
begin
for i := 1 to adodm.adoQuery2.recordcount do
begin
append;
FieldValues['bmbh'] := adodm.adoQuery2.FieldValues['bmbh'];
FieldValues['ygbh'] := trim(edit9.text);
FieldValues['gzbh'] := trim(edit11.text);
FieldValues['lbmc'] := adodm.adoQuery2.FieldValues['lbmc'];
FieldValues['ffzq'] := adodm.adoQuery2.FieldValues['ffzq'];
FieldValues['ffrq'] := ffrq;
post;
adodm.adoQuery2.Next;
end;
end;
adodm.ADOTable1.close;
//将发放记录列出供修改
sqltxt := 'select id,lbmc,ffzq,ffrq from ffjl where ygbh=''' + trim(edit9.Text) + '''';
openadoquery(adodm.ADOQuery3, sqltxt);
//更改主库中工种代码
s1 := trim(edit11.Text);
s := trim(edit9.Text);
sqltxt := 'update lkyg set gzbh=''' + s1 + ''' where ygbh=''' + s + '''';
execadoquery(adodm.adoquery2, sqltxt);
end;
procedure Tinputfm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then edit2.SetFocus;
end;
procedure Tinputfm.BitBtn2Click(Sender: TObject);
var sqltxt: string;
begin
if (edit9.text = '') then
begin
MessageDlg('员工编号必须输入!', mtWarning, [mbOK], 0);
exit;
end;
sqltxt := 'select id,lbmc,ffzq,ffrq from ffjl where ygbh=''' + trim(edit9.Text) + '''';
openadoquery(adodm.ADOQuery3, sqltxt);
end;
procedure Tinputfm.TabSheet4Show(Sender: TObject);
var yy, mm, dd: word;
s: string;
begin
decodedate(Date, yy, mm, dd);
s := inttostr(yy);
if (mm >= 1) and (mm <= 6) then edit31.Text := s + '-1-1';
if (mm >= 7) and (mm <= 12) then edit31.Text := s + '-7-1';
adodm.adoquery4.close;
adodm.adoquery4.open;
end;
procedure Tinputfm.BitBtn17Click(Sender: TObject);
var
s1, s2, s3, s4, s5, s6, gg, xm, sqltxt: string;
yy, mm, dd: word;
yy1, mm1, dd1: word;
rcount, i, j: integer;
sl: Extended;
sMsgCaption, sMsgText : String;
iMsgType,iUserResp : integer;
begin
//请确认没有重复发放,到打印发放数据中利用预览可以看看日期本次是否已经发放过。
sMsgCaption := '请确认!';
sMsgText := '请确认没有重复发放,到打印发放数据中利用预览可以看看日期确定本次是否已经发放过!';
iMsgType := MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_APPLMODAL;
// iUserResp := MessageBox(Handle,PChar(sMsgText.c_str()),PChar(sMsgCaption.c_str()),iMsgType);
iUserResp := MessageBox(Handle,pchar(sMsgText),'请确认!', MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_APPLMODAL);
if iUserResp =IDCANCEL then exit;
//准备工作,获取用户选中的部门名称和部门编号并判断人数是否为0
s1 := adodm.adoquery4.FieldValues['bmbh']; //部门编号
s2 := adodm.adoquery4.FieldValues['bmmc']; //部门名称
sqltxt := 'select * from ffjl where bmbh=''' + s1 + '''';
openadoquery(adodm.adoquery2, sqltxt);
rcount := adodm.adoquery2.RecordCount;
if rcount = 0 then
begin
MessageDlg('此单位没有员工!', mtWarning, [mbOk], 0);
exit;
end;
//获取用户输入日期,分解为年月日
s4 := trim(edit31.text);
decodedate(strtodate(trim(edit31.text)), yy, mm, dd);
//下面代码发放日期是否输入正确*******
if not isdate(s4) then
begin
MessageDlg('日期输入错误!', mtWarning, [mbOk], 0);
exit;
end;
if is4year(s4) = false then
begin
MessageDlg('年份请输入4位!', mtWarning, [mbOk], 0);
exit;
end;
//
sqltxt := 'delete from fftmp where bmbh=''' + s1 + '''';
EXECADOquery(adodm.ADOQuery9, sqltxt);
// MessageDlg('初始化完毕,本次发放过程中不要再使用此功能!', mtInformation,
// [mbOk], 0);
//判断完毕。现在:单位有人员,年份且正确,所有人员发放记录已经
//提取到adoquery2中 ,开始进行发放处理,放入临时库中
adodm.adotable1.TableName := 'fftmp';
adodm.adotable1.Active := true;
adodm.adoquery2.First;
//重新写一个劳保发放
for i := 1 to rcount do
begin
s5 := adodm.adoquery2.FieldValues['ygbh']; //员工编号
s6 := adodm.adoquery2.FieldValues['lbmc']; //劳保名称
//获取员工姓名
s3 := 'select xm from lkyg where ygbh=''' + s5 + '''';
openadoquery(adodm.adoquery9, s3);
xm := adodm.adoquery9.FieldValues['xm'];
// 获取上次发放时间
decodedate(adodm.adoquery2.FieldValues['ffrq'], yy1, mm1, dd1);
//计算发放数量
sl := ((yy - yy1) * 12 + mm - mm1) div (adodm.adoquery2.FieldValues['ffzq']);
if sl >= 1 then //开始发放
begin
//判断是否是有规格劳保
s3 := 'select * from ygglb where lbmc=''' + s6 + '''';
openadoquery(adodm.adoquery9, s3);
//提取规格
if adodm.ADOQuery9.RecordCount > 0 then //有规格,从员工表中找出规格
begin
s3 := 'select ' + s6 + ' from lkyg where ygbh=''' + s5 + '''';
openadoquery(adodm.adoquery9, s3);
gg := adodm.adoquery9.FieldValues[s6];
if gg = '' then gg := '-';
end
else
gg := '-';
//提取规格结束,若没有则规格=“—”
//写发放记录
adodm.adotable1.append;
adodm.adotable1.FieldValues['bmbh'] := s1;
adodm.adotable1.FieldValues['bmmc'] := s2;
adodm.adotable1.FieldValues['ygbh'] := s5;
adodm.adotable1.FieldValues['xm'] := xm;
adodm.adotable1.FieldValues['lbmc'] := s6;
adodm.adotable1.FieldValues['gg'] := gg;
adodm.adotable1.FieldValues['sl'] := sl;
adodm.adotable1.post;
//更新原始发放记录,在查询集中更新
adodm.ADOQuery2.Edit;
adodm.ADOQuery2.FieldValues['ffrq'] := strtodate(trim(edit31.text));
adodm.ADOQuery2.post;
end;
adodm.adoquery2.next;
end;
//
adodm.adotable1.Active := false;
adodm.ADOQuery2.Close;
//显示单位发放记录
s3 := 'select bmmc,ygbh,xm,lbmc,gg,sl from fftmp where bmbh=''' + s1 + '''';
openadoquery(adodm.adoquery5, s3);
//显示单位汇总
s3 := 'select lbmc,gg,sum(sl) as zsl from fftmp ';
s3 := s3 + 'where bmbh=''' + s1 + ''' group by lbmc,gg';
openadoquery(adodm.adoquery6, s3);
end;
//已发放部门查询
procedure Tinputfm.BitBtn19Click(Sender: TObject);
var
s1, s2, s3, xm, lbmc, gg: string;
ir, sl, i: integer;
t: TfrMemoView;
begin
if adodm.ADOQuery8.RecordCount = 0 then exit;
s1 := adodm.ADOQuery8.FieldValues['bmbh'];
s2 := adodm.ADOQuery8.FieldValues['bmmc'];
t := TfrMemoView(frReport1.FindObject('Memo11'));
if t <> nil then
t.Memo.Text := s2 + '劳保用品发放表(' + edit31.Text + ')';
getlist;
//显示单位发放记录
s3 := 'select bmmc,ygbh,xm,lbmc,gg,sl from fftmp where bmbh=''' + s1 + '''';
s3 := s3 + noprintlb + ' order by ygbh';
openadoquery(adodm.adoquery24, s3);
frreport1.ShowReport;
////清理网格
// ir := adodm.adoquery9.RecordCount;
// gridinit(StringGrid1, 5, ir + 3, s2 + '劳保用品发放表(' + edit31.Text + ')');
// with StringGrid1 do
// begin
// foretexts[1, 2] := '姓名';
// foretexts[2, 2] := ' 劳保名称';
// foretexts[3, 2] := ' 规格';
// foretexts[4, 2] := ' 数量';
// end;
// with adodm.adoquery9 do
// begin
// for i := 1 to RecordCount do
// begin
// xm := FieldValues['xm'];
// lbmc := FieldValues['lbmc'];
// gg := FieldValues['gg'];
// sl := FieldValues['sl'];
// StringGrid1.foretexts[1, i + 2] := xm;
// StringGrid1.foretexts[2, i + 2] := lbmc;
// StringGrid1.foretexts[3, i + 2] := gg;
// StringGrid1.foretexts[4, i + 2] := inttostr(sl);
// next;
// end;
// end;
// SaveDataSet(adodm.adoquery5, s1);
// SaveDataSet(adodm.adoquery6, s2);
end;
//生成汇总文件
//所有发放汇总
procedure Tinputfm.TabSheet1Show(Sender: TObject);
begin
edit39.SetFocus;
end;
procedure Tinputfm.Edit39Change(Sender: TObject);
var s1, sqltxt: string;
begin
s1 := trim(edit39.Text);
sqltxt := 'select bmbh as 部门编号,bmmc as 部门名称 from bm where py like ''' + s1 + '%''';
editc(edit39, adodm.loadquery, loadfm, sqltxt);
end;
procedure Tinputfm.Edit39KeyPress(Sender: TObject; var Key: Char);
var s1, s2: string;
begin
if (key = #13) and (loadfm.Tag = 1) then
begin
if adodm.loadquery.RecordCount = 0 then Edit39.SetFocus;
if adodm.loadquery.RecordCount > 0 then
begin
s1 := adodm.loadquery.FieldValues['部门名称'];
s2 := adodm.loadquery.FieldValues['部门编号'];
edit39.Text := s1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -