Могу ли я создать несколько новых записей на основе значения в другой таблице в MS Access 2013?
Я буду квалифицировать это с предварительным допущением, что я не профессиональный программист или разработчик базы данных. Мне нужно было решить конкретную проблему - необходимость управлять большим количеством информации о запросах на выплату вознаграждений работникам - и ограниченные ресурсы, и создать базу данных для замены таблицы Excel, которую я унаследовал. Я учусь по ходу дела, и я бы хотел узнать, может ли Access сделать то, что я представляю, или мне нужно изменить свою цель?
Основные таблицы, в которые входит моя база данных: СОТРУДНИКИ, ЗАПРОСЫ, ЗАДАЧИ и ДЕЯТЕЛЬНОСТЬ (плюс некоторые вспомогательные таблицы, используемые для раскрывающихся полей и т. Д.). У каждого сотрудника может быть несколько запросов, и для каждого запроса я использовал ЗАДАЧИ, чтобы отслеживать все, что нужно сделать, кем и когда, чтобы проследить запрос от начала до конца (я единственный пользователь Сам файл dbase, но я публикую список задач в виде отчета для всех участников). ACTIVITY, как и следовало ожидать, - это функция журналирования, где я отслеживаю, что было сделано, разговоры и т. Д.
Сейчас я хочу ускорить процесс ввода задач, поскольку для запросов MOST поток задач очень похож. Я уже создал таблицы для "TASK OWNER" и "TASK CATEGORIES" - обе они связаны с моей основной таблицей TASKS - поэтому я мог стандартизировать ввод данных для этих полей в дополнение к фильтрации по ним ("покажи мне все, что принадлежит сотруднику"), TASKS имеет поле "NOTES", поэтому я могу индивидуализировать запись, не меняя раскрывающиеся списки. Это прогресс, но я все еще трачу слишком много времени на добавление одних и тех же множества задач к каждому новому запросу.
То, с чем я играл в своей голове, - это определение задач с помощью своего рода кода, который связывает их с типом запроса - то есть запрос сотрудника на оплату обучения идентифицируется как "тип запроса 001", и все задачи, которые обычно выполняются с возмещением за обучение есть поле поиска, соединяющее их обратно с "001" - так что, когда я отмечаю флажок или выбираю "001 - Возмещение за обучение" из раскрывающегося списка в моей форме, автоматически выпадают 6 или 8 "стандартных" задач в подчиненной форме ЗАДАЧИ, НО это НОВЫЕ записи, а не просто "шаблонные задачи", которые я запрашиваю из моих КАТЕГОРИЙ ЗАДАЧ. Я хочу иметь возможность настраивать, редактировать, обновлять и даже удалять их, не затрагивая другие запросы.
Я обнаружил много информации о добавлении новых записей с помощью запросов APPEND, но кажется, что она ограничена генерацией ОДНОЙ записи для каждой "транзакции", если это имеет смысл - каждый раз, когда запрос находит свое значение и выполняет действие, одна запись генерироваться. Как получить Access для распознавания одного значения - типа запроса - и создания каждой задачи, связанной с этим типом запроса, в качестве новой записи в ЗАДАЧАХ?
1 ответ
Пользователь выбирает категорию запроса, например, "Возмещение за обучение", из многоколоночного списка. Скрытый столбец в поле со списком имеет код категории, и это связанный столбец, так что это значение поля со списком. Тогда код для сохранения нескольких записей будет выглядеть так:
CurrentDb.Execute "INSERT INTO Tasks(RequestID, TaskDesc) SELECT " & _
Me.tbxReqID & " AS RID, TaskDesc FROM TasksCategories WHERE TaskCat = " & Me.cbxCategory
Настоящий трюк - выяснить, в какое событие поместить этот код. Должно ли оно быть автоматическим после ввода какого-либо элемента данных или нажатием кнопки? Тогда необходимо предотвратить повторяющиеся записи - что если пользователь случайно нажмет эту кнопку еще раз? (Это может быть обработано при помощи составного индекса в таблице.) Кроме того, новая основная запись, созданная в форме запросов, должна быть зафиксирована в таблице в первую очередь. Запись фиксируется при закрытии таблицы / запроса / формы, перемещении к другой записи или выполнении команды сохранения.
Как показано, ваши требования, безусловно, возможны, просто имейте в виду, что "чем удобнее пользователь, тем больше кода".
Теперь, когда вы разрабатываете код с конкретной проблемой, опубликуйте его для анализа.