#ms-access
#ms-access
Вопрос:
Я должен создать форму аудитории, в которой будут отображаться все учащиеся в списке, а вы просматриваете форму и меняете статус учащегося на отсутствующий, присутствующий и т. Д. Мне нужно создать экран, на котором будут указаны имена, дата, идентификатор и статус. Форма не должна редактировать существующие данные, но предполагается, что в форме уже есть имена учащихся. и когда я сохраняю форму, она должна заполнить страницу посещаемости 28 новыми записями данных на эту дату. Большая часть данных (насколько я понимаю) присутствует в форме, и я бы просто использовал поле выбора, чтобы выбрать статус учащегося. У меня установлена дата, чтобы просто перейти к сегодняшней дате, поскольку это все, что будет использовать учитель.
Я пробовал все, что мог, но я недостаточно знаю о Access, чтобы сделать что-то близкое. Я создал форму, в которой отображаются имена, но я могу выполнять только одну запись за раз. Любая помощь будет оценена, изображения приведены ниже. У меня также есть другие таблицы в базе данных, но ни одна из них не связана с этим сообщением
Комментарии:
1. Все имена выдуманы, кроме моего
2. Существует несколько способов выполнения этой задачи, и, вероятно, потребуется некоторое кодирование для создания удобной формы по вашему желанию. В нынешнем виде этот запрос слишком широк и поэтому не относится к теме Stackoverflow. Рассмотрите возможность сужения вашего запроса и описания желаемого поведения более подробно, чтобы вопрос не был близким. Конечно, для учета посещаемости отдельных лиц, вероятно, потребуется пометить их по одному. Что подразумевается под «выполнением» записи? Вам нужно четко объяснить желаемое поведение.
3. Один намек на правильную нормализацию таблицы. Похоже, у вас уже есть
Student
таблица, которая, как я полагаю, содержит столбцыStudent_ID
и name . Вы не должны хранить имена в таблице посещаемости, только один столбец с внешним ключомStudent_ID
, который ссылается на другую таблицу. (Идея нормализации заключается в том, чтобы избежать дублирования данных, которые могут тратить время на хранение, создавать противоречивые изменения и усложнять обслуживание.)
Ответ №1:
Итак, ваш вопрос касается того, как пакетно создавать записи учащихся в таблице посещаемости на определенную дату. Это часто достигается с помощью SQL-действия INSERT SELECT.
CurrentDb.Execute "INSERT INTO Attendance([Day], Student_ID) SELECT Date(), Student_ID FROM Students"
При необходимости подзапрос SELECT может включать предложение WHERE.
Установите поля Day и Student_ID в качестве уникального составного индекса в таблице, чтобы предотвратить дублирование пар.
Примените фильтр к форме, чтобы отображать только записи о текущих датах и / или поле посещаемости равно нулю.
Настоящая хитрость заключается в том, чтобы выяснить, в какое событие поместить код — скорее всего, нажатие кнопки на форме.
Day — это зарезервированное слово (это функция), и оно не должно использовать зарезервированные слова в качестве имен для чего-либо.