|
|
|
| Дано: Ключ;КодЧеловека;ДатаУбытияВОтпуск;ДатаПрибытияИзОтпуска
Требуется: при повторном вводе КодЧеловека выполнить проверку (ДатаУбытияВОтпуск<новая>-ДатаПрибытияИзОтпуска<предыдущая>)<=N, при True запретить ввод новой записи и вывести сообщение "Иди работай"
Как наложить такое ограничение на значение поля? | |
|
| |
|
|
|
| К сожалению в Access нет триггеров
http://hiprog.com/index.php?option=com_content&task=view&id=35&Itemid=35
Возможный вариант решения
1. создать форму
2. сделать обработку перед сохранением записи в таблице
пример обработки вешаешь на кнопку
Dim MaxDate As Date
Dim SQL, BeginDate, EndDate, PeopleCode As String
Dim N As Long
N = 20 ' требуемая разница в днях
PeopleCode = CStr(Me![КодЧеловека])
BeginDate = CStr(Me![ДатаПрибытияИзОтпуска])
EndDate = CStr(Me![ДатаУбытияВОтпуск])
' получение даты выхода из отпуска для введенного человека
MaxDate = DMax("[ДатаПрибытияИзОтпуска]", "tblTable", "[КодЧеловека] =" & PeopleCode)
If Me![ДатаУбытияВОтпуск] - MaxDate < N Then
' условие при недостаточной разницы в датах
MsgBox "Иди работай"
Else
' добавление новой записи в таблицу
SQL = "INSERT INTO tblTable ( КодЧеловека, ДатаУбытияВОтпуск, ДатаПрибытияИзОтпуска ) VALUES ( " & PeopleCode & ", '" & BeginDate & "', '" & EndDate & "' );"
DoCmd.RunSQL SQL
MsgBox "Запись добавлена"
End If
|
| |
|
| |
|
|
34 Кб. |
|
| Глянь на пример | |
|
| |
|
|
|
| Спасибо. | |
|
| |