⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 input.pas

📁 劳保用品管理系统
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -