Как добавить данные из формы MS Access Data Entry при сохранении целостности табличных отношений - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть столы для студентов и курсов.

Student
  ID - Primary Key - AutoNumber
  CID - Number
  FirstName - Text
  LastName - Text

Course
  ID - Number
  CourseTitle - Text

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

Пример

Предположим, что перед сохранением записи состояние данных:

Course
-------

ID     | CourseTitle
-------|-------------
1      | Maths

Student
-------

ID      | CID    | FirstName    | LastName
--------|--------|--------------|----------
1       | 1      | Mike         | Someone

Теперь, когда я сохраняю данные из формы ввода данных:

Course Name = Maths
First Name = Junior
Last Name = Someone Else

Состояние данных становится

Course
-------

ID     | CourseTitle
-------|-------------
1      | Maths
2      | Maths

Student
-------

ID      | CID    | FirstName    | LastName
--------|--------|--------------|----------
1       | 1      | Mike         | Someone
2       | 2      | Mike         | Someone

Вопрос Однако я хочу, чтобы данные выглядели следующим образом:

Как я могу это сделать??

Course
-------

ID     | CourseTitle
-------|-------------
1      | Maths

Student
-------

ID      | CID    | FirstName    | LastName
--------|--------|--------------|----------
1       | 1      | Mike         | Someone
2       | 1      | Mike         | Someone

1 Ответ

0 голосов
/ 05 декабря 2011

Вам определенно будет лучше, если вы примите предложение Джеффа О. и реализуете его как отношение «многие ко многим».

Что касается формы ввода данных, то контроль ввода курса долженбыть списком или списком.Источник элемента управления связывает элемент управления с полем идентификатора курса в таблице «многие ко многим» (или, в нашем примере, с полем CID в таблице студентов).Источник строки элемента управления связан либо с таблицей курсов, либо с запросом, полученным из таблицы.«Связанный столбец» должен указывать столбец идентификатора таблицы курса.

Это немного сбивает с толку, потому что вы связываете две вещи.Первая привязка соединяет значение элемента управления со столбцом в RecordSource формы.Вторая привязка соединяет столбец в RowSource элемента управления со значением элемента управления.Комбинация двух привязок позволяет пользователю редактировать отношение внешнего ключа для данной записи, изменяя значение элемента управления.

Чтобы избежать отображения идентификатора в элементе управления, вы должны установить ширину связанного столбца на0. Например, используя приведенный выше пример, вы должны ввести эти параметры в лист свойств:

RowSource = Course
BoundColumn = 1
ColumnWidths = 0"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...