- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二讲程序重要功能及打印功能的实现(上)
第十二讲程序重要功能及打印功能的实现(上)
?
在本讲及下一讲中,我们来完成本程序最重要的一个功能:劳保发放。此功能从原理上来讲不是太复杂,但实现起来需要动脑筋,稍有不慎就会导致发放错误。下面我们来讲如何实现此功能。
劳保用品发放。在前面的讲座中,心铃给大家讲了数据维护等一些功能,在劳保用品发放前必须对各种需要维护的数据做好维护工作,比如工种、岗位是否有调整,劳保用品的发放周期是否改变,部门是否有新进员工,是否有员工退休等等,这些工作的目的都是为了保证上次发放记录(对某些员工是初始发放记录)的完整性。因为心铃在程序中采用的方式是发放记录中保存着发放周期、上次发放时间、工种等几个关键信息,所以上次发放记录的准确性是非常重要的。
下面我们来看看程序实现思路。劳保用品发放要得到的结果是:本次发放劳保用品的员工姓名(编号)、劳保用品名称、发放数量,这是直接结果,同时我们还需要在发放的同时把发放记录中的劳保用品的上次发放时间更新为本次发放时间。根据需要,我们要统计单个部门所有劳保用品名称、规格、发放数量,还要统计所有需要发放的劳保用品名称、规格、发放数量。由于我们的发放记录数据表中是不保存这些信息的,所以我们需要建立一个数据表来保存本次发放的基本数据,便于随时查询、统计本次发放的各种信息。心铃将此数据表命名为fftmp(发放临时表),此数据表字段如下:
Bmbh 部门编号 Bmmc 部门名称 Ygbh 员工编号 Xm 员工姓名 Lbmc 劳保名称 Gg 劳保规格 Sl 发放数量 注意:上面的表格有点冗余,其实部门名称、员工姓名都是可以根据部门编号和员工编号查到的,这里主要是为了方便起见才这样处理的。之所以称此表为发放临时表,主要是其数据寿命周期为到下次发放为止,在下次发放(我们公司是半年为一周期)时要清空此数据表。下面我们就来看看如何用代码实现。
首先看发放界面图,见图(12-1)。界面图上右下角有一个“初始化发放数据表”,此按钮的代码如下:
procedure TForm3.BitBtn23Click(Sender: TObject);
begin
if MessageDlg(本功能每次发放前使用一次,且只能使用一次,请确认!, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
table11.EmptyTable;
MessageDlg(初始化完毕,本次发放过程中不要再使用此功能!, mtInformation, [mbOk], 0);
end;
end;
上面这段代码用了Emptytable这个数据表的方法来清空数据表,并在清空数据表前让用户确认、在清空后给出用户提示信息。这是本次发放前需要首先做的工作。下面我们在发放日期输入框中输入本次方法日期,日期输入框上面是部门名称、编号列表,这个应该会做了吧。中间三个DBGRID表格从上到到下依次是:部门详细发放数据、部门劳保用品汇总数据、所有劳保用品汇总数据。
首先我们在部门列表中选择部门,确认日期输入无误后,单击“部门劳保用品发放”按钮。这是最重要的代码,下面我们将代码写出来,然后分析。
procedure TForm3.BitBtn17Click(Sender: TObject);
var s1,s2,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,gg,xm:string;
yy,mm,dd, yy1,mm1,dd1:word;
i,j:integer;
sl:Extended;
begin
//准备工作,获取部门名称和编号
s1:=query13.FieldValues[bmbh];
s2:=query13.FieldValues[bmmc];
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;
//开始进行发放
table7.Active :=true;
table8.active:=true;
table9.active:=true;
if table7.RecordCount=0 then
您可能关注的文档
最近下载
- 3.3《人间词话六则》课件-中职高二语文(高教版2024拓展模块上册).pptx
- 《人工智能应用导论》PPT全套完整教学课件.pptx VIP
- 体育课堂中团队合作游戏对团队意识培养的实践研究教学研究课题报告.docx
- 人工智能导论PPT全套课件.pptx VIP
- 3.2《文学作为语言艺术的独特地位》课件-中职高二语文(高教版2024拓展模块上册).pptx
- 医务科管理制度-标准版.doc VIP
- 初中英语阅读——篇章结构强化练习(附答案).pdf VIP
- 初中英语过去时强化练习(附答案).docx VIP
- 形容词和副词的比较级和最高级及专项练习(精品).doc VIP
- 2025年新版人教版四年级上册英语 四上Unit 5 The weather and us 单元整体教学设计.pdf VIP
文档评论(0)