如何在microsoft access数据库中选中所有复选框时自动删除行?

时间:2015-05-20 11:24:15

标签: database vba ms-access access-vba checkboxlist

我正在为公司创建一个简单的数据库。该数据库包含几个表,其中一个表将记录每个员工已完成的培训信息。大约有十个部分的培训应该完成。

我计划将这些部分放入复选框,以便管理员更轻松地查看员工已完成哪些部分,以及员工尚未完成哪些部分。

我已经制作了这张桌子,它由员工和#39;基本信息,如ID,名称和这些复选框。但是,我需要创建一个系统,只要检查了所有复选框,就可以进行管理。

我需要它,所以一旦检查了员工的所有复选框,该员工的信息将自动从表中删除。同时我需要将一些内容自动插入到另一个表中。

例如,有两个表:DevelopmentCSA_LisenceDevelopment是包含复选框的表格,CSA_Lisence是在完全检查Development上的复选框时自动更新的表格。我不知道该怎么做,如何在我的VBA上编码。

3 个答案:

答案 0 :(得分:1)

即使在所有复选框上,您也需要在每个After Update上添加一个函数。该事件将调用您需要创建的函数,该函数将检查是否已检查所有复选框。

该功能看起来与John提到的相当接近,但是你需要对其进行扩展以检查所有十个框,如果选中所有框,则为CSA_Lisence运行更新查询,然后运行删除查询为您的Development表。所以这样就可以检查培训的状态:

Public Function CheckCompletion() As Boolean

    Dim blnComplete As Boolean 
    Dim strCompletionSummary as String 

    strCompletionSummary = chk1 & chk2 & chk3 & chk4 & chk5 'etc

    If strCompletionSummary = "11111" Then 
        blnComplete = True
    Else 
        blnComplete = False
    End If 

End Function

然后在您的AfterUpdate事件中,您可以调用一个函数来处理是否检查了所有框,如下所示:

Public Function UpdateEmployee() 

    If CheckCompletion Then 
        'Run Update Query
        'Run Delete Query
    End If 

End Function

然后你会在每个复选框的更新事件中有类似的东西:

Private Sub chk1_AfterUpdate()
    Call UpdateEmployee()
End Sub

但是您还需要知道Stack Overflow并不是一个让人们为您编写代码的地方,所以我只为您提供了一个骨架结构。所以你需要做一些研究如何完成这个并自己尝试。但是,如果你遇到困难,那就是我们在这里: - )

答案 1 :(得分:0)

请原谅我,如果我不在基地,但从你的描述来看,你应该重新考虑你的桌面结构。截至目前,您每个员工都限制自己使用这10个复选框。如果公司改变培训或增加培训,该怎么办?查看表规范化。也许添加一个包含employeeID,TrainingID和复选框的表,以便完成或不完成。可以在创建用户或添加或删除新培训时填充它们,但如果培训号或方法发生更改,您可以根据需要添加任意数量的记录。 我还建议最好不要从表中删除这些记录。而是使用某种类型的标识符来激活或不激活。当您从此记录中删除记录时,这也消除了将记录插入另一个表的需要。这种类型的过程通常是不必要的,并且应该将简单布尔值从true更改为false。

答案 2 :(得分:0)

暂时你可以通过连接复选框的值来创建一个字符串,并检查该值是否符合你的标准(abs为了得到1而不是-1的值) 例如

checkCompletion = chk1 & chk2 & chk3 '(1 & 1 & 1 = "111")

If checkCompletion = "111" Then
    'Do Something
End If