Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
1

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

18.07.2014, 11:21. Просмотров 3547. Ответов 21
Метки нет (Все метки)

Добрый день уважаемые форумчане!

Разрабатывается база по учету трудозатрат.

1.В таблицу [Исполнители] заносится поле должностей и поле со ставкой руб/час.
2.Есть вторая таблица [ВыборИсполнителей] в которой планируется заносить данные из формы то есть ВыбранногоИсполнителя и ВыбСтавку.

Хочется:
В форме которая будет заносить данные в таблицу [ВыборИсполнителей] так сделать, чтобы используя данные таблицы [исполнители] выбирать из поля со списком [исполнителя] (директор, технолог, инженер..) а ему автоматически присваивалась ставка, которая есть в таблице.

Не получается:
Если в форме сделать поле со списком [ВыбИсполнителя] и для поля [ВыбСтавка] в строке данные указать Выражение =[ВыбИсп].[column](1)., только в таблице куда должны переносится в поле [ВыбИсп] заносится ставка, а в поле [ставка] пусто...

Может вообще по-другому надо делать?

База данных1.zip
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2014, 11:21
Ответы с готовыми решениями:

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

Данные из поля со списком в отчет Как сделать?
Здравствуйте! Снова вынужден обратиться за помощью. Есть поле со списком. Марка угля ( см....

Можно ли как нибудь добавить данные из 1 поля 1 таблицы в pickllist другого поля другой таблицы?
Добавить данные в picklist полю ФИО, чтоб получился выпадающий список Бред конечно, ноо... Может...

Как взять данные из поля со списком в поле
Господа, подскажите начинающему как с помощью макроса перенести данные из поля со списком в поле? И...

21
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
18.07.2014, 11:36 2
Немного по другому.
1
Вложения
Тип файла: 7z База данных1 (8).7z (19.0 Кб, 110 просмотров)
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
18.07.2014, 11:46  [ТС] 3
Спасибо, все работает.
Опишите пожалуйста поподробнее, что вы поменяли, а то мне непонятно. Буду очень признателен
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
18.07.2014, 11:59 4
Немного изменен запрос для поля со списком ВыбИсп, а поле ВыбСтавка из свободного (Вы же хотели не только видеть ставку, но и записывать ее в таблицу) сделано связанным с полем ВыбСтавка таблицы. А в процедуре После обновления поля ВыбИсп делается присваивание ему значения ставки исполнителя.
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
18.07.2014, 12:55  [ТС] 5
Прощу прощения, я не работал с VBA.
И задам наверное очень простой вопрос а как и куда вставлять код который вы внесли, чтобы в дальнейшем сам мог с этим работать.

Private Sub ВыбИсп_AfterUpdate()
Me.ВыбСтавка = Me.ВыбИсп.Column(1)
End Sub
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
18.07.2014, 13:22 6
Лучший ответ Сообщение было отмечено leif66 как решение

Решение

Открываете форму в режиме конструктора - окно свойств - вкладка события - выбираете событие (в данном случае - После обновления) - в поле слева стрелочкой выбирает Процедура ... , построить (нажимаете "треточие"). Откроется модуль формы с заготовкой процедуры. Но лучше бы сначала почитать о событиях и их процедурах обработки (хотя бы хелп).
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
27.08.2014, 14:57  [ТС] 7
Добрый день!

С вопросом вначале темы полностью разобрался.

Появился другой?
У меня есть форма `Исполнители`через которую заносятся данные по ставкам должностей, которые уже используются во второй форме `ВыбИсп` где при выборе Исполнителя автоматически заносится его ставка в форме и таблице. А вопрос вот в чем при изменении ставки должности через форму `Исполнители` директора допустим с 700 до 1000 руб. во второй форме цифра 700 на 1000 не меняется. Как можно сделать такое изменение?

Бд.7z
0
1387 / 322 / 45
Регистрация: 16.04.2013
Сообщений: 764
Записей в блоге: 2
28.08.2014, 03:18 8
leif66,
А, что не три одинаковых таблиц?
------------------------------------
Таблицу ВыборИсполнителей удали.

В форме ВыборИсполнителей поставь данные
Исполнители и Ставка соответственно.
0
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 09:31  [ТС] 9
Здесь представлен простой вариант конструкции.

Первая форма: занесение должностей и ставок.

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

Допустим все работы заполнены и отображаются напротив работ специалисты со ставками. Решили в первой форме поменять ставку Директора с 700 до 1000 при этом во второй форме цифра не изменилась( и меняется только когда повторно выбираю специалиста из списка). Можно ли каким-то образом задать обновление, чтобы при изменение ставки в первой форме менялись значения в заполненной второй.
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
28.08.2014, 09:57 10
Цитата Сообщение от leif66 Посмотреть сообщение
Допустим все работы заполнены и отображаются напротив работ специалисты со ставками. Решили в первой форме поменять ставку Директора с 700 до 1000 при этом во второй форме цифра не изменилась( и меняется только когда повторно выбираю специалиста из списка). Можно ли каким-то образом задать обновление, чтобы при изменение ставки в первой форме менялись значения в заполненной второй.
Во всех работах? И уже выполненных? А то, что "поплывут" все старые расчеты Вас не пугает? Зачем тогда вообще хранить ставку в работах? Выбирайте ставку из Специалистов запросом.
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 11:06  [ТС] 11
В этой БД считаются трудозатраты. И совершенно верно поплывут расчеты привязанные к старым ставкам.

Вот как выглядят формы:

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

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


А из данных формы 2 дальше считаются запросы учитывающих ставок.

Сделал такие расчеты по тем знания что сейчас есть. Возможно по другому стоит, как через запросы ставку задавать пока не понимаю (ставка через выбор специалиста меняется)?
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
28.08.2014, 11:17 12
Автоматически пересчитывать стоимость всех работ при изменении цены часа неправильно. Нужно написать специальную процедуру (м.б. хватит запроса), которая будет пересчитывать конкретную выбранную работу по текущим ценам часа.
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 11:21  [ТС] 13
Спасибо, буду думать как сделать.
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
28.08.2014, 11:29 14
Предположительно (исходя из картинок) на Форме2 добавляете кнопку Пересчитать. На нее вешаете выполнение запроса на обновление ставок (только записей этой работы) разрабатывающего и проверяющего специалистов. Текущие их ставки вытаскиваете из таблицы функцией DLookUp по коду специалиста.
1
Эксперт MS Access
26449 / 14220 / 3143
Регистрация: 28.04.2012
Сообщений: 15,614
28.08.2014, 11:38 15
Если ставки меняются во времени, для сохранения истории необходимо иметь даты изменения ставок и даты совершения работ и их этапов (если этапы есть). А их, дат, нигде видно на картинках. Ни в ставках, ни в работах.
Я бы убрал ставки из т.Исполнители и создал новую таблицу СтавкиИсполнителей с полями КодИсполнителя, Дата, Ставка. А также добавил бы поле даты в таблицу работ. Тогда запросом всегда можно узнать ставку исполнителя на конкретную дату и в зависимости от его должности.
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 16:32  [ТС] 16
Понимаю возможно много чего лишнего наворотил, выкладываю версию базы.
БД1.7z

И прошу Вас на конкретном примере уже посоветовать, какие изменения внести. Сейчас немного в тупике нахожусь. Особенно не понимаю как делать обновляемые запросы.
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
28.08.2014, 17:07 17
Посмотрите запрос Разработка разделы_D_Ставки*. Обновляет в подчиненной формы Стадия D_Разделы ставки только 3D-Конструктор200. Для остальных ставок сделайте по аналогии. Если годится - то запускайте исполнение этого запроса по нажатию кнопки в форме. Возможно придется делать сложнее, анализирую, какие ставки нужно обновлять (часть исполнителей пусты).
1
Вложения
Тип файла: 7z БД (12).7z (85.1 Кб, 13 просмотров)
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 17:39  [ТС] 18
Запрос выдает табличное поле для заполнения это нормально? Как сделать чтобы он обновлял?
Форма: как сделать используя данные таблицы из поля со списком, данные второго поля заносятся автоматически



Где пустые исполнители можно любых ставить.
0
Эксперт MS Access
15912 / 6639 / 1430
Регистрация: 21.06.2012
Сообщений: 12,235
28.08.2014, 17:51 19
Цитата Сообщение от leif66 Посмотреть сообщение
Запрос выдает табличное поле для заполнения это нормально? Как сделать чтобы он обновлял?
Запрос на обновление нужно не открывать, а выполнять. Форма Стадия D_Разделы, естественно, должна быть открыта, иначе запрос не выполниться (нет кода, по которому запрос выбирает записи для обновления).

Добавлено через 5 минут
И, если это рабочая база, подумайте об изменении структур данных. Обычно всех исполнителей не помещают в одну запись, а делают подчиненную таблицу для этапов. В которой указывают исполнителя, часы, стоимость часа, ... . А потом в запросах суммируют по этапу, работе, ... .
0
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 15
28.08.2014, 17:56  [ТС] 20
Если делаю на форме кнопку и привязываю запрос, то пишет ошибку.
Форма: как сделать используя данные таблицы из поля со списком, данные второго поля заносятся автоматически


Поясните пожалуйста вы создали запрос. А как мне сделать чтобы он обновлял поле ставки?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2014, 17:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как в поле вставить данные с поля со списком?
To vpanasenko. Помогите пож. Поле с датой получилось, если получится и поле со списком, то...

в MySQL заносятся данные только когда заполняются все поля
в MySQL заносятся данные только когда заполнены все поля. а как сделать, чтобы можно было заполнять...

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

Данные из одного поля должны влиять на то, из какой таблицы будет выбираться значение другого поля
Допустим, что у меня есть форма. на ней 2 поля: дисциплина и тема занятия. я выбрал значение поля...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.