在vba访问

时间:2015-12-25 05:52:20

标签: vba ms-access access-vba

我有一个表单名称frmCEA1和一个名为tabsubCEA。字段名称是:

  1. E_ID(员工ID,号码字段)
  2. FY(即财政年度,字符串即2014-15)
  3. FChildPrFr(索赔开始日期,日期(dd-mmm-yy格式))
  4. FChildPrupto(索赔结束日期,日期(dd-mmm-yy格式))
  5. 还有

      

    表格中的四个字段(tabSubCEA)

    1. EID(员工ID,号码字段),
    2. FY(即财政年度,字符串即2014-15),
    3. PeriodFrom(声明开始日期,日期(dd-mmm-yy格式)),
    4. Periodtill(索赔结束日期,日期(dd-mmm-yy格式))。
    5. 员工可以在单个孩子的财政年度内单次处理索赔,并且他/她可以申请最多两个孩子。他/她可以为两个孩子单独索赔,也可以合并索赔。他/她也可以申请上个财政年度。

      我在Fin.Year 2014-15处理了单身孩子的雇员索赔,现在员工将在同一财政年度领取他/她的第二个孩子,并且我成功地处理了它。

      我想知道我的表格(frmCEA1)怎么能阻止我使用(messagebox)如果我去处理相同信息的索赔,即同一个E_ID,第一个或第二个孩子在开始和结束时段之间具有相同的权利要求。

      我尝试了很多,但没有成功。请帮助...

1 个答案:

答案 0 :(得分:0)

这不一定要在VBA中完成,但这是一个选项。无论哪种方式,都需要运行查询来提取与给定情况匹配的记录数。

处理员工时,在tabSubCEA表中针对该员工ID运行查询,以查找所需财务年度的记录数。但是,不是返回实际记录数据,而是返回记录的COUNT。如果我正确理解您的情况,那么每当COUNT超过2时,您就不希望处理该员工。最简单的方法是禁用表单上的“提交”按钮。

您的查询,无论是在表单上引用字段的创建查询,还是通过VBA,都会看起来像这样:

SELECT
 COUNT(*)
FROM
 tabSubCEA
WHERE
 EID = '<employee id here>' AND
 FY = '<fiscal year here>' AND
 PeriodFrom > '<application date here>' AND
 Periodtill > '<application date here>'

这将计算相关员工在具有有效索赔期的所需会计年度内成功提交的记录数。

基本上,您尝试从系统中提取的内容是满足此情况的特定条件的记录数量。您将需要类似于此的内容来验证员工提出的索赔数量。