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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
overmind
Сообщения: 3
Зарегистрирован: 01 ноя 2004, 04:23
Откуда: Южно-Сахалинск
Контактная информация:

Просьба сильно не пинать, 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));

Заранее спасибо за ответы :)
Per Anus Ad Astra
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

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

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

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

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

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

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

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

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