Страница 1 из 1

Присвоение значения полю TextBox

Добавлено: 09 мар 2005, 10:04
overmind
Просьба сильно не пинать, Access изучаю недавно :)

Собссно вопрос - дано:
таблица "Сотрудники/Employee" (типа справочник)
таблица "Табель/DailyUpdateSub" (сюда ежедневно заносится инфо об отработанных часах)

Надо - в таблице "Сотрудники" в реквизите указать общее количество отработанных часов данного сотрудника ...

Как это сделать?

повесить на TextBox типа такое выражение не получилось ...

=SELECT DISTINCTROW Employee.ID, Sum(DailyUpdateSub.Hours) AS [SumOfHours]
FROM Employees INNER JOIN DailyUpdateSub ON Employee.ID = DailyUpdateSub.Employee
GROUP BY Employee.ID, HAVING (((Employee.ID)=ID));

Заранее спасибо за ответы :)

Re: Присвоение значения полю TextBox

Добавлено: 09 мар 2005, 21:29
Naeel Maqsudov
Надо это выражение вычислить в том самом запросе, на который опирается форма (если форма опирается не на запрос, а прямо на таблицу, то вместо раблицы использовать запрос).

Поле будет достаточно просто ассоциировать с вычисляемым полем запроса.

Пусть форма опирается на запрос

Код: Выделить всё

select Employees.* ,
  ( select Sum(Hours) from DailyUpdateSub where Employee = Employees.ID)
from Employees
Ассоциировать поля с запросами категорически неправильно, так как запрос возвращает recordset а у нас просто поле.

В ряде случаев для выполнения подобных расчетов в полях можно использовать функции DSum, DCount и пр. (см справку). В частности, в Вашем случаем вместо этого запроса можно использовать

=DSum("Hours","DailyUpdateSub","Employee=" & [Employees.ID])

Но это работает медленее чем приведенный выше способ, при котором суммы по каждой строке будут вычислятся как бы заранее, а не каждый раз при навигации на текущую запись в форме.