Моя таблица поиска в базе данных не имеет записи "Нет". В результате запись «Нет» не была разрешена. Ограничение внешнего ключа предотвратило запись «Нет» в дочерней таблице, содержащей идентификатор, соответствующий таблице поиска.
Мое решение состояло в том, чтобы вручную добавить строку, содержащую «Нет», в загрузку формы (после того, как TableAdapter уже заполнил таблицу реальными строками из базы данных).
//' Add a 'None' row to allow the user to un-select a lookup item
//' The insert and update stored procedure translates a 'None' entry to NULL.
Dim newRow As MyLookupDataset.MyTableRow = Me.MyLookupDataset.MyTable.NewMyTableRow
newRow.MyID = "None"
newRow.MyDesc = "None"
Me.MyLookupDataset.MyTable.Rows.InsertAt(newRow, 0)
Я использовал хранимые процедуры для операторов вставки и обновления TableAdapter. В хранимых процедурах я проглатываю запись «None» - это означает, что если в качестве параметра процедуры принимается «None», я заменяю ее на NULL. Это позволяет пользователю выбрать «Нет», но после сохранения запись возвращается к NULL.