Если я использую UNION для набора записей подчиненной формы в Access, запрещается делать этот набор записей обновляемым.
Проблема в том, что мне нужно иметь возможность обновить набор записей.
У меня есть дватаблицы - один из них - список сотрудников (сотрудников).Другой - это запись количества билетов, которые каждый сотрудник закрыл за день.В результате эта таблица (INCTech) использует EmployeeID и Date в качестве объединенного первичного ключа, поскольку каждый сотрудник может иметь только одну запись для данной даты.
Я не могу использовать LEFT OUTER JOIN для полученияполный список сотрудников, потому что он исключит любого сотрудника, у которого есть запись в INCTech за дату, отличную от указанной даты.Это не работает:
SELECT INCTech.EmployeeID, INCTech.Assigned, INCTech.Closed, INCTech.Submitted,
INCTech.StillOpen, INCTech.TheDate, Employees.FirstName, Employees.LastName
FROM Employees LEFT JOIN INCTech ON Employees.EmployeeID = INCTech.EmployeeID
WHERE Employees.GroupID = 8 AND (INCTech.TheDate = #4/15/2011# OR
INCTech.TheDate IS NULL)
Потому что, если у сотрудника есть запись для даты, отличной от 15.04.2011, он не соответствует ни одному из двух критериев даты - Дата не равна NULLбольше, но это также не указанная дата.
Мой запрос, который работает:
SELECT Employees.EmployeeID, Employees.FirstName, Employees.LastName,
Employees.FirstName & " " & Employees.LastName AS FullName, INCTech.TheDate,
INCTech.Assigned, INCTech.Closed, INCTech.Submitted, INCTech.StillOpen,
Employees.GroupID
FROM Employees
LEFT OUTER JOIN INCTech ON
Employees.EmployeeID=INCTech.EmployeeID
WHERE (INCTech.TheDate)=Calendar.Value AND Employees.GroupID = ddlGroup.Value
UNION
SELECT Employees.EmployeeID, Employees.FirstName, Employees.LastName,
Employees.FirstName & " " & Employees.LastName AS FullName, NULL AS TheDate,
NULL AS Assigned, NULL AS Closed, NULL As Submitted, NULL As StillOpen,
Employees.GroupID
FROM Employees
LEFT OUTER JOIN INCTech ON Employees.EmployeeID=INCTech.EmployeeID
WHERE Employees.EmployeeID NOT IN
(SELECT INCTech.EmployeeID FROM INCTech WHERE INCTech.TheDate=Calendar.Value)
AND Employees.GroupID = ddlGroup.Value
Но так как я должен использовать UNION для этого, результирующий набор записей читается кактолько.Это не сработает - мне нужно иметь возможность изменять или добавлять данные для ежедневной записи каждого сотрудника.
Помощь!