2014-02-17 4 views
0

У нас есть база данных Access для отслеживания рабочих запросов. У нас есть форма, в которую мы вводим информацию для запросов. Мы хотим ограничить отделы, которые можно ввести в список, который мы ввели в таблицу под названием «Департаменты».MS-Access Form Combo box не может ограничить вставленные записи

Управление отделами в нашей форме запроса на работу - это поле со списком, основанное на таблице отделов. Это работает для ограничения отделов, введенных вручную; однако задания часто вводятся путем копирования и вставки старой информации в виде целой записи и изменения любой информации по мере необходимости. Когда это происходит, управление отделом не ограничено полем со списком.

Мне нужен способ подтверждения данных, введенных в элементе управления в форме напротив записей в поле «Департамент», прежде чем запись будет сохранена в таблице. Если отдел из вложенной записи не соответствует ни одной из записей в таблице отделов, я бы хотел, чтобы она вывела окно сообщения.

Я попытался использовать процедуру события BeforeUpdate, но не могу понять, как оценить текущую запись отдела в моей форме в отношении записей в моей таблице отделов. Кто-нибудь может предложить, как создать эту проверку?

ответ

0

Что-то вроде:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
Dim strSQL As String 
Dim RS As DAO.Recordset 
strSQL = "select * from Table1 where (Flda) = '" & Me.txtFldA & "';" 
Set RS = CurrentDb.OpenRecordset(strSQL) 
If RS.EOF Then 
    MsgBox "Not a valid Department", vbOKOnly, "Incorrect Department Entered" 
End If 
RS.Close 
Set RS = Nothing 
End Sub 
0

Поскольку вы работаете Access 2010 можно применять проверку на уровне таблицы с помощью макроса Before Change данных, как это:

BeforeChange.png

Для получения более подробной информации , см.

Create a data macro

+0

@SMartin Вы можете загрузить рабочий пример [здесь] (http://wikisend.com/download/120420/Validation.zip). –

+0

Нашел другой способ обработки на уровне формы с помощью DLookup, но пока не ответил на ответ; это полезно, хотя, я собираюсь проверить это в будущем. Спасибо за вашу помощь. –

0

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