Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 31
1

Подскажите как правильно написать вычисляемое поле в таблице на основе формулы Эксель

13.03.2019, 08:18. Показов 1886. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
При переводе БД в Access из Экселя сталкиваюсь с с трудностями ввиду того, что не знаю как переносить поля, которые у меня вычислялись по формулам.
Вот такой вот пример -
протянутая вниз формула =СЧЁТЕСЛИМН($O$2:O2;[@Столбец6]) присваивает порядковый номер повторяющимся значениям.
То есть, например:
qqq 1
qqq 2
qqq 3
www 1
www 2
e 1
rrr 1
rrr 2

Как это реализовать через вычисляемое поле/запрос?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2019, 08:18
Ответы с готовыми решениями:

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

Как сделать вычисляемое поле в таблице?
Ребят в первый раз работаю на Access Нужно сделать вычисляемое поле в таблице. Чтобы в строке...

Вычисляемое поле на основе полей 2 таблиц
Поле в 1 таблице: . Поле во 2 таблице: . Можно ли как-нибудь поставить автоматическое вычисление...

Вычисляемое поле но на основе предыдущих полей
есть таблица: id nam s1 s2 s3 1 л1 1 2 2 2 л2 1 1 1 3 л1 2 3 4 4 л1 5 3 4 задача, для...

9
Эксперт MS Access
17535 / 7287 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
13.03.2019, 08:45 2
Если в таблице есть ключевое поле - Код, то запрос
SQL
1
2
3
4
SELECT Таблица1.Поле1, Таблица1.Код, COUNT(Таблица1_1.Код) AS Номер
FROM Таблица1 INNER JOIN Таблица1 AS Таблица1_1 ON (Таблица1.Код >= Таблица1_1.Код) AND (Таблица1.Поле1 = Таблица1_1.Поле1)
GROUP BY Таблица1.Поле1, Таблица1.Код
ORDER BY Таблица1.Поле1, Таблица1.Код;
Даст нужный результат
Поле1Номер
e1
qqq1
qqq2
qqq3
rrr1
rrr2
www1
www2
0
ᴁ®
Эксперт MS Access
3874 / 2203 / 462
Регистрация: 13.12.2016
Сообщений: 7,583
Записей в блоге: 5
13.03.2019, 09:32 3
Можно перед переносом преобразовать формулы в значения.
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 31
21.03.2019, 14:15  [ТС] 4
Когда создаю 2 таблицы (Таблица1 и Таблица1_1)
Забиваю в первой некоторые данные, вставляю ваш SQL запрос - все отлично работает.
Меняю Таблицу1 на свою, со своими полями - Пишет введите значение параметра "Таблица1_1.Код" и "Таблица1_1.Поле"
Типы полей одинаковы.
Подскажите пожалуйста, в чем причина?

SQL
1
2
3
4
5
6
7
8
SELECT a_график.Столбец6, a_график.ID_график, COUNT(Таблица1_1.Код) AS Номер
 
FROM a_график
 INNER JOIN a_график AS Таблица1_1
 ON (a_график.Столбец6 = Таблица1_1.Поле1)
 AND (a_график.ID_график >= Таблица1_1.Код)
GROUP BY a_график.Столбец6, a_график.ID_график
ORDER BY a_график.Столбец6, a_график.ID_график;
0
Эксперт MS Access
17535 / 7287 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
21.03.2019, 15:17 5
Цитата Сообщение от vovanvv Посмотреть сообщение
Когда создаю 2 таблицы (Таблица1 и Таблица1_1)
Нет там двух таблиц.
Таблица1_1 - это алиас Таблица1. Поэтому и имена полей Таблица1_1 должны быть те же, что в Вашей исходной таблице a_график.
SQL
1
2
SELECT a_график.Столбец6, a_график.ID_график, COUNT(Таблица1_1.ID_график) AS Номер
FROM a_график INNER JOIN a_график AS Таблица1_1 ON (a_график.Столбец6 = Таблица1_1.Столбец6) AND (a_график.ID_график >= Таблица1_1.ID_график)
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 31
26.03.2019, 09:36  [ТС] 6
Спасибо понятно.
А как теперь этот запрос использовать в исходной таблице a_график?
Создаю поле "номер", если мастером подстановок, то он ругается, что запрос сделан на исходной таблице.
Если просто подставляю текст SQL, оставив в селекте только нужный столбец с count и в GROUP BY и в ORDER BY оставляю a_график.ID_график (сам запрос показывает результат как раз нужный). Но в итоге выходит в таблице пустой столбец.

Добавлено через 2 часа 17 минут
SQL
1
SELECT COUNT(a_график1.ID_график) AS Номер2 FROM a_график INNER JOIN a_график AS a_график1 ON (a_график.ID_график >= a_график1.ID_график) AND (a_график.площ_instr = a_график1.площ_instr) GROUP BY a_график.ID_график ORDER BY a_график.ID_график;
0
Эксперт MS Access
7442 / 4576 / 301
Регистрация: 12.08.2011
Сообщений: 14,241
27.03.2019, 07:59 7
Лучший ответ Сообщение было отмечено Eugene-LS как решение

Решение

Цитата Сообщение от vovanvv Посмотреть сообщение
А как теперь этот запрос использовать в исходной таблице a_график?
Запрос не используется в таблице, он и есть сущность. Его можно просто открывать, можно сделать на его основе отчёт, можно экспортировать в Эксель. И запомните: никто здесь напрямую в таблицах никакие вычисления не делает.
0
10745 / 5585 / 1411
Регистрация: 05.10.2016
Сообщений: 15,796
27.03.2019, 08:27 8
Цитата Сообщение от alvk Посмотреть сообщение
И запомните: никто здесь напрямую в таблицах никакие вычисления не делает.
Согласен! - на 1000%
Жаль что ув. alvk, не пояснил подробностей.
Просто поверьте: Вычисляемые поля в таблицах = ПЛОХО!

Добавлено через 8 минут
...
И поля с подстановкой = плохо.
В таблицах должны быть оптимизированные и нормализованные по максимуму данные, и больше ничего.
Простенько и надёжно.
Остальное в формах!
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 31
27.03.2019, 13:59  [ТС] 9
Тогда подскажите, как же быть?
Есть таблица с приборами. То есть заводские номера, марки и годы выпуска. (условно "реестр")
Есть таблицы с объектами и отдельно таблица, с привязкой конкретных приборов к объектам (условно "привязка").
Еще таблица с полным перечнем оборудования, которое ДОЛЖНО быть на объектах. (условно "график").
Там так же как и в "привязке", привязываются объекты к приборам, но не конкретным (с зав№), а к маркам.
То есть на таком-то объекте должны стоять уровнемер такой-то марки и счетчик такой-то.
Кроме того там может быть указано оборудование, которое априори в "реестр" не попадет - например,кнопка или реле.

Как у меня было в Экселе - добавив в таблицу порядковый номер прибора на объекте я смог условно соединить "график" с "привязкой".
В итоге в том же Access (слинкованным с Excel) мог вывести запрос, где мог видеть "график" и по тем позициям, где была привязка, видеть конкретный привязаный прибор (его заводской номер и прочее).
Понятно, что добавлять вычисляемое поле в запрос - не комильфо, но я хотел таким образом сделать "динамическую привязку". В принципе, наверное, для этой цели можно написать небольшой запрос по выводу привязки и вставлять его результат в "большие" запросы.
0
Эксперт MS Access
7442 / 4576 / 301
Регистрация: 12.08.2011
Сообщений: 14,241
28.03.2019, 02:21 10
Цитата Сообщение от vovanvv Посмотреть сообщение
Понятно, что добавлять вычисляемое поле в запрос - не комильфо
Это ещё с чего вы взяли??
Цитата Сообщение от vovanvv Посмотреть сообщение
Есть таблица с приборами.
Где она есть? Правила Раздела почитайте.
0
28.03.2019, 02:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2019, 02:21
Помогаю со студенческими работами здесь

Вычисляемое поле в таблице
Добрый день. Прошу помощи, так как я только начинаю изучать SQL Server, возникла не простая (для...

Вычисляемое поле в таблице
как заполнить поле в таблице, если оно равно сумме некоторых полей

Вычисляемое поле в проекте а не в таблице БД
Ребят не могу понять в чем ошибка. Сделал вычисляемое поле и при запуске программы вылетает ошибка....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru