2008-11-18 4 views
0

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

  • труда Стоимость
  • рабочих часов
  • Vat
  • Всего

Как я умножать 'Трудовые часы' на 'затрат на рабочую силу' добавить 'НДС' и отображать ответ в 'Итого'

Где бы я поместил формулы? В форме или запросе или таблице?

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

Скотт

+0

В названиях полей или элементов управления не всегда есть пробелы. Что касается расчетов, вы можете прочитать http://r937.com/relational.html. – Fionnuala 2008-11-18 12:00:15

ответ

2

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

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

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

2

Вам не нужно в колонке «Total», по всей вероятности.

Ваши запросы и отчеты, вероятно, похожи на это:

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

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

+1

Возможно, вы захотите исправить «+ [НДС]» на «* [НДС]». НДС обычно представляет собой процент, а не фиксированную стоимость. ;-) – Tomalak 2008-11-18 07:53:27

+0

Справедливая точка. Я принимал этот вопрос очень буквально. – 2008-11-18 07:54:53

1

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

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


НАМНОГО лучший подход, однако, было бы полностью удалить Total столбец из таблицы и создать запрос:

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

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

-1

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

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

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

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

Итак, в общем, везде, где это необходимо для этого расчета.

0

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

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

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

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

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

запустить запрос

1
  1. повторно вашего НДС %, Я надеюсь, что я не говорю о очевидном, но вы должны вводить десятичное число, например .175 составляет 17,5%

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

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

0

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

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

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^