我正在为一家公司创建一个简单的数据库。此数据库包含多个表,其中一个表将记录每个员工已完成的培训的相关信息。大约有十个部分的培训需要完成。
我计划将这些部分放入复选框中,以便管理员更容易看到员工已完成哪些部分,以及员工尚未完成哪些部分。
我已经制作了一个表,它由员工的基本信息组成,比如ID、姓名和这些复选框。但是,我需要创建一个系统,用于在选中所有复选框时进行管理。
我需要它,因此,一旦所有的复选框为员工已选中,该员工的信息将被自动从表中删除。同时,我需要一些内容自动插入到另一个表。
例如,有两个表:Development和CSA_Lisence。Development是包含复选框的表,CSA_Lisence是在完全选中Development上的复选框时自动更新的表。我不知道如何做到这一点,如何在我的VBA编码。
发布于 2015-05-20 20:46:08
该事件将调用您需要创建函数,该函数将检查是否已选中所有复选框。
该函数看起来与约翰提到的非常接近,但是您需要对其进行扩展以选中所有10个框,如果全部选中,则对您的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然后,在每个checkbox的更新事件中都会有如下内容:
Private Sub chk1_AfterUpdate()
Call UpdateEmployee()
End Sub但是您还需要知道,在Stack Overflow中,您并不是一个可以让人们为您编写代码的地方,所以我只提供了一个框架结构。因此,你需要做一些研究,研究如何实现这一点,并亲自尝试。但是如果你被卡住了,这就是我们在这里的目的:-)
发布于 2015-05-20 19:43:30
如果我说错了,请原谅,但从您的描述来看,您似乎应该重新考虑您的表结构。到目前为止,您将自己限制为每个员工只能选中这10个复选框。如果公司改变了他们的培训,或者增加了更多的培训怎么办?查看表的规范化。也许可以添加一个由employeeID、TrainingID和复选框组成的表,以确定是否完成。它们可以在创建用户或添加或删除新训练时填充,但如果训练编号或方法发生变化,您可以根据需要添加尽可能多的记录。我还建议您最好不要从您的表中删除这样的记录。取而代之的是使用某种类型的标识符表示活动或非活动。这样,当您从另一个表中删除记录时,就不再需要将记录插入到另一个表中。这种类型的过程通常是不必要的,并且使本应将简单布尔值从true更改为false的操作复杂化。
发布于 2015-05-20 19:50:32
目前,您可以通过连接复选框的值来生成一个字符串,并检查该值是否符合您的条件(为了得到1而不是-1,请使用值)。
checkCompletion = chk1 & chk2 & chk3 '(1 & 1 & 1 = "111")
If checkCompletion = "111" Then
'Do Something
End Ifhttps://stackoverflow.com/questions/30348245
复制相似问题