首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在microsoft access数据库中选中所有复选框时自动删除行?

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

Stack Overflow用户
提问于 2015-05-20 19:24:15
回答 3查看 592关注 0票数 0

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

我计划将这些部分放入复选框中,以便管理员更容易看到员工已完成哪些部分,以及员工尚未完成哪些部分。

我已经制作了一个表,它由员工的基本信息组成,比如ID、姓名和这些复选框。但是,我需要创建一个系统,用于在选中所有复选框时进行管理。

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

例如,有两个表:DevelopmentCSA_LisenceDevelopment是包含复选框的表,CSA_Lisence是在完全选中Development上的复选框时自动更新的表。我不知道如何做到这一点,如何在我的VBA编码。

EN

回答 3

Stack Overflow用户

发布于 2015-05-20 20:46:08

该事件将调用您需要创建函数,该函数将检查是否已选中所有复选框。

该函数看起来与约翰提到的非常接近,但是您需要对其进行扩展以选中所有10个框,如果全部选中,则对您的CSA_Lisence运行更新查询,然后对Development表运行删除查询。

代码语言:javascript
复制
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事件上,您可以调用一个函数来处理是否选中了所有框,如下所示:

代码语言:javascript
复制
Public Function UpdateEmployee() 

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

End Function

然后,在每个checkbox的更新事件中都会有如下内容:

代码语言:javascript
复制
Private Sub chk1_AfterUpdate()
    Call UpdateEmployee()
End Sub

但是您还需要知道,在Stack Overflow中,您并不是一个可以让人们为您编写代码的地方,所以我只提供了一个框架结构。因此,你需要做一些研究,研究如何实现这一点,并亲自尝试。但是如果你被卡住了,这就是我们在这里的目的:-)

票数 1
EN

Stack Overflow用户

发布于 2015-05-20 19:43:30

如果我说错了,请原谅,但从您的描述来看,您似乎应该重新考虑您的表结构。到目前为止,您将自己限制为每个员工只能选中这10个复选框。如果公司改变了他们的培训,或者增加了更多的培训怎么办?查看表的规范化。也许可以添加一个由employeeID、TrainingID和复选框组成的表,以确定是否完成。它们可以在创建用户或添加或删除新训练时填充,但如果训练编号或方法发生变化,您可以根据需要添加尽可能多的记录。我还建议您最好不要从您的表中删除这样的记录。取而代之的是使用某种类型的标识符表示活动或非活动。这样,当您从另一个表中删除记录时,就不再需要将记录插入到另一个表中。这种类型的过程通常是不必要的,并且使本应将简单布尔值从true更改为false的操作复杂化。

票数 0
EN

Stack Overflow用户

发布于 2015-05-20 19:50:32

目前,您可以通过连接复选框的值来生成一个字符串,并检查该值是否符合您的条件(为了得到1而不是-1,请使用值)。

代码语言:javascript
复制
checkCompletion = chk1 & chk2 & chk3 '(1 & 1 & 1 = "111")

If checkCompletion = "111" Then
    'Do Something
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30348245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档