根据多个相关记录中的条件检查记录

时间:2015-08-11 22:21:53

标签: vba ms-access access-vba

让我先从结构开始。

我的Class有很多Experiences

Class只有在清除了所有Experiences后才能清除。

ClassExperience分享Experence_ID此ID不是Experience唯一的。

例如,如果我从' Class'中运行'DoCmd.OpenForm "Experences", , , "[Experence ID] = '" & Me.Experence_ID'我可以获得不止一条记录。

我可以使用哪个脚本来检查每个Experence_Cleared记录中Experience是否已选中(它是一个复选框字段),与Experence_ID具有相同的Class

3 个答案:

答案 0 :(得分:1)

后来我发现我需要从每条记录中获取更多数据。我使用以下代码来获取它。

Dim db As Database
Dim rs As Recordset

Dim i As Integer

Dim Hours As Integer

Set db = CurrentDb
Set rs = db.OpenRecordset("Experiences")

For i = 0 To rs.RecordCount - 1
    If rs.Fields("Experience ID") = Experience_ID And rs.Fields("Primary") <> 0 And rs.Fields("Experience Clear") Then
        Hours = Hours + rs.Fields("Hours")
    End If
    rs.MoveNext
Next i

rs.Close
Set rs = Nothing
db.Close

然后我可以使用hours来确定我的班级是否已准备好注册。

答案 1 :(得分:0)

如果我理解正确,您需要检查表中的位/布尔字段对于字段Experence_ID与输入值匹配的每个记录是否为真。

在这种情况下,您可以使用:

If DCount("*","tblYourTableNameHere","[Experence Cleared]=0 AND [Experence ID]=" & Me.Experence_ID) > 0 Then
    Msgbox "There are some Experiences that have not been cleared for this Class"
Else
    Msgbox "All Experiences have been cleared for this Class!"
End If

上面的代码使用DCount()函数来计算与final参数中的限定符匹配的记录数量。因此,它只会计算表中[Experence Cleared]字段为FALSE的行,因为[Experence ID]字段等于表单上Me.Experence_ID字段的值。如果它返回的计数大于零,那么并非所有的经历&#39;已被清除&#39;。

我不得不对控件和字段名称做一些假设,请务必修改此代码以适应,或者向我提供更多信息,我会帮助您。

答案 2 :(得分:0)

要从Class获取已清除所有Experiences的记录,您可以使用subquery

SELECT *
FROM [Class]
WHERE NOT EXISTS (
    SELECT ExperienceID
    FROM Experiences
    WHERE [Class].ExperienceID = Experiences.ExperienceID
        AND NOT Experience_Cleared
)

或者,您可以使用LEFT JOINDISTINCTROW来阻止ClassExperiences中的每个对应记录重复SELECT DISTINCTROW [Class].* FROM [Class] LEFT JOIN ( SELECT ExperienceID FROM Experiences WHERE NOT Experience_Cleared ) AS t1 ON Class.ExperienceID = t1.ExperienceID WHERE t1.ExperienceID IS NULL 中的行:

WHERE

在任何一种情况下,您都可以使用额外的 AND ClassID = [Replace with ClassID expression] 谓词检查这些记录中是否存在特定类:

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.6.RELEASE</version>
  </dependency>