MS Access Math - PullRequest
       21

MS Access Math

0 голосов
/ 18 ноября 2008

У меня есть таблица в MS Access 2007 с 4 полями.

  • Стоимость рабочей силы
  • Рабочие часы
  • НДС
  • Total

Как умножить «Рабочие часы» на «Затраты на оплату труда», добавить «НДС» и отобразить ответ в «Всего» * ​​1013 *

Куда бы я поместил какие-нибудь формулы ?, в форму, запрос или таблицу?

Большое спасибо за любую помощь

Scott

Ответы [ 7 ]

2 голосов
/ 18 ноября 2008

Существует также манекен (то есть не SQL) способ сделать это: Сначала удалите ваш общий столбец из таблицы, и для этого упражнения представьте, что имя вашей таблицы - "Труд".

Теперь создайте новый запрос и просмотрите его в режиме конструктора, добавьте все поля из своей таблицы Labour (чтобы можно было убедиться, что все работает), выберите пустое поле, щелкните правой кнопкой мыши и выберите «Build» из выпадающего списка. список. Теперь у вас должно быть окно Expression Builder.

Введите имя для вычисляемого поля, например, labourTotal, следуйте за ним с двоеточием ":", а затем выберите имена полей, которые вы хотите добавить из таблиц в левом нижнем углу окна построителя выражений, и дважды щелкните каждое из них. Каждое поле появится в построителе выражений после «Всего:». Теперь замените каждый «Expr» на «+». Вы должны увидеть это в конструкторе выражений: «labourTotal: [Труд]! [Стоимость труда] + [Труд]! [Рабочие часы] + [Труд]! [НДС]». Нажмите OK и выполните запрос - если все хорошо, итоговый столбец будет отображать результаты.

2 голосов
/ 18 ноября 2008

Вам не нужен столбец «Всего» по всей вероятности.

Ваши запросы или отчеты, вероятно, будут выглядеть примерно так:

SELECT [Total] = [Labour Cost] * [Labour Hours] + [VAT]

Вы можете использовать такую ​​же формулу в элементах управления на ваших формах или отчетах.

1 голос
/ 19 ноября 2008
  1. Ваш% НДС, я надеюсь, что я не утверждаю очевидное, но вы должны ввести десятичную дробь, например. 0,175 составляет 17,5%

  2. Вы не можете просто добавить процент, его нужно умножить на что-то. И вы должны включить 100% от первоначальной суммы. Так что, если вы хотите добавить 17,5%, вам нужно умножить на 1,175. Таким образом, предполагая, что: i) вы хотите, чтобы 100% были включены автоматически (т.е. вам нужно будет только ввести 0,175), и что ii) НДС должен быть добавлен ко всей сумме, и что iii) «указать», вы имеете в виду, что вы хотите получать запрос НДС каждый раз при выполнении запроса; Тогда ваша формула должна быть:

Итого: ([Общие расходы]! [Расходы на оплату труда] * [Общие расходы]! [Часы работы] + [Стоимость материалов]) * (1+ [введите НДС в виде десятичной суммы?])

1 голос
/ 18 ноября 2008

Если вам действительно нужно обновить данные в столбце Итого:

UPDATE YourTableName SET [Total] = [Labour Hours] * [Labour Cost] + [VAT]


A MUCH лучший подход, однако, будет полностью удалить столбец Total из вашей таблицы и создать запрос:

SELECT [Labour Cost], 
       [Labour Hours], 
       [VAT], 
       [Labour Hours] * [Labour Cost] + [VAT] AS [Total]
FROM YourTableName

Причина, по которой этот подход предпочтителен, заключается в том, что он предотвращает случайное размещение неверной информации в столбце Итого. В общем, данные могут очень легко испортиться, если вы не будете осторожны, и это может быть реальной болью (если не невозможной), чтобы исправить. Я бы посоветовал вам Google "Нормализация баз данных" и немного почитать об этом - это вам очень поможет.

0 голосов
/ 21 ноября 2008

Скотт сказал:

в основном просто хочу сделать расчеты, чтобы я мог отобразить Всего на экране и в отчете.

Как и предполагали некоторые, вы можете выполнить вычисление в сохраненном запросе и использовать его в качестве источника записей как для своего отчета, так и для формы.

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

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

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

0 голосов
/ 18 ноября 2008

Создать новый запрос.

добавь свой стол

добавьте три не полных поля в запрос

в новом поле типа:

total: [VAT] + [Labour Hours] * [Labour Cost]

выполнить запрос

0 голосов
/ 18 ноября 2008

Вы можете указать его как вычисляемое поле, в запросе или в форме. Везде, где имеет смысл, просто и имеет правильный уровень повторного использования. Если для расчета используется конкретная форма или представление данных, сделайте это там или в запросе.

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

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

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

Итак, в целом, где это уместно для этого расчета.

...