I have a problem where it is possible to make the mistake of having employees in two places at the same time on the same date. I have followed various instuctions and came up with this expression. It recovers all of the inputed data but will not display only the ones who are double booked. What am I missing SELECT EmployeeSite.EmployeeID, Site.SiteID, EmployeeSite.EmployeeID, EmployeeSite.DateFrom, EmployeeSite.DateTo, EmployeeSite.EmployeeID, Nz(([tbEmployeeSite_1].[DateFrom]>=[tblEmploeeSite].[DateTo]) Or ([tblEmployeeSite_1].[DateTo]<=[tblEmployeeSite].[DateFrom]) Or ([tblEmployee].[SiteId]<>[tblEmployeeSite_1].[SiteId]) Or ([tblEmployeeSite].[SiteId]=[tblEmployeeId_1].[EmployeeId]),False) AS Expr1, Employee.SurName, Employee.FirstName, Site.SiteName
FROM Employee INNER JOIN (Site INNER JOIN EmployeeSite ON Site.SiteID = EmployeeSite.SiteID) ON Employee.EmployeeID = EmployeeSite.EmployeeID
WHERE (((Nz(([tbEmployeeSite_1].[DateFrom]>=[tblEmploeeSite].[DateTo]) Or ([tblEmployeeSite_1].[DateTo]<=[tblEmployeeSite].[DateFrom]) Or ([tblEmployee].[SiteId]<>[tblEmployeeSite_1].[SiteId]) Or ([tblEmployeeSite].[SiteId]=[tblEmployeeId_1].[EmployeeId]),False))=False));