![]() |
|
Модераторы: Akina |
![]()
|
|
| Dr1Pepper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Привет. У меня такой вопрос: Существует таблица в ней поля "Срочность", "ВО", "ДНД", "Цена" и "Итого"
Так вот мне нужно чтобы в поле "Итого" получалось выражение: "Итого"= ("Срочность" + "ВО" + "ДНД" + 1) * "Цена" Но есть условие, что "Срочность", "ВО", "ДНД" - это логический тип данных. И любое из этих полей может быть включено (стоять галочка), а может и выключено. "Срочность", "ВО", "ДНД" - этим полям соответствуют неизменные значения. Например: "Срочность" = 0,2; "ВО" = 0,1; "ДНД" = 0,3. В итоге должно считать так: 1600 = (0,2 + 0,1 + 0,3 + 1) * 1000 Заранее благодарен. Присоединённый файл ( Кол-во скачиваний: 3 )
BD.rar 8,85 Kb |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Неизменные значения в программировании называются константами, и нет необходимости вносить их в поля баз данных.
Если существует условие в запросе, то кури функцию IIF
Добавлено через 14 минут и 27 секунд Сории конечно - в поля ТАБЛИЦ баз данных, ну или в таблицы баз данных. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Dr1Pepper, лучше создайте функцию, и там все посчитайте.
|
|||
|
||||
| Dr1Pepper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Да, но как быть если мне нужно, что бы результат этого выражения сохранялся и в последующей работе мне прийдётся обращаться именно к результату? Да и запроса у меня нет. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
||||
|
||||
| Dr1Pepper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
В таблицу, в поле "Итого" |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Хранение в таблицах вычисляемых данных называется "переопределённые данные" и является потенциальным источником ошибок. Не советую. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Dr1Pepper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Ну, а если всё же нужно так сделать, не смотря на "потенциальный источник ошибок". Есть предложения? |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Dr1Pepper, молодой человек, если Вы не слушаете советов, которые Вам дают на Ваши вопросы, смысл задавать вопросы?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Дайте серьёзное обоснование такой надобности, перевешивающее потенциальное рассогласование данных - тогда будет разговор.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Dr1Pepper |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
А помоему Вы заблуждаетесь, говоря о том, что я не слушаю. Просто удовлетворительного ответа я пока не увидел, хотя то что было написано выше весьма информативно. Вот попробую объяснить систуацию по другому: К примеру, другая БД будет использовать поле "Итого" (из нашей БД) - скажем для отчётности. Другими словами - обязательно нужно, чтобы выполнялся просчет. Выше было написано, что:
Но при этом ни кто не говорит, что это невозможно. Я допускаю, что могут вылезти какие-нибуть ошибки (обратите внимание я слушаю что говорят другие), но тем не менее ни кто не дал ответа на поставленный вопрос. Поэтому смысл задовать вопросы всёже есть... Добавлено через 6 минут и 7 секунд
|
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Если одна БД может посчитать итоги на основе исходных данных, то и вторая может сделать то же самое на основе данных из первой БД. Обойдётся без готовеннького, пусть работает. Или, если нужны срезы на определённое время, заведите для данных и итогов, потребляемых второй БД, отдельные таблицы именно во второй БД, и заполняйте их из первой БД. Или заведите для этого третью. Но ни в коем случае не смешивайте всё в одну кучу. Но вообще эти ваши "хочу" и "так надо" - это всё, извините за грубость, детский сад. Пора бы уже вырасти... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Dr1Pepper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Спасибо за советы. Наверно действительно детский сад. Вообщем, вот что я сделал.
Только и тут у меня вопрос: Если в форме я ставлю к примеру две галочки, число в итоге увеличивается правильно. А если после этого я убираю одну - то число сбрасывается. И оно понятно почему b = 200 s = Итог.Value - Цена.Value Итог.Value = IIf(ВО.Value, Цена.Value + b + s, Цена.Value) из-за Цена.Value в конце, там нужно что-то дописать. Только вот что именно? Есть предложения? Присоединённый файл ( Кол-во скачиваний: 3 )
BD.rar 14,15 Kb |
|||
|
||||
| bopoha |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Dr1Pepper, ваша реализация несет опасность. Переделайте лучше так:
Эту функцию можно разместить отдельно от формы в модуле. В результате функцию использвоать удобно где угодно, в запросе на форме и еще где. Чтобы расчитать поле Итого в таблице, достаточно использовать запрос на обновление:
По поводу хранение результатов вычислений. От любого правила можно отойти, если на то есть основания. Программа потребитель не должна знать о том, как расчитываются эти данные. Так будет проще сопровождать. Идея насчет отдельной таблицы с подготовленными данными для другой программы, хорошая идея. Тоже улучшает сопровождаемость. Я постоянно пользуюсь хранением расчитанных данных, это мне жизнь облегчает. Естественно расчитываются эти данные только в одном месте. Это правило! |
||||
|
|||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |