Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 18:48   #11
Agapov_stas
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 54
По умолчанию

К чему NZ, если ничего не прописываете вместо пустого значения?
И ставьте Cancel=True до вывода сообщения.
Попробуйте так:
Код:
Private Sub ДатаОдин_BeforeUpdate(Cancel As Integer)
  If Nz(Me.[ДатаОдин],Date) > Date) Then
    Cancel = True
    MsgBox "Дата не может быть больше текущей"    
  End If
End Sub
Agapov_stas вне форума Ответить с цитированием
Старый 22.10.2013, 11:40   #12
И-ван-Ыч
Пользователь
 
Регистрация: 08.08.2013
Сообщений: 19
По умолчанию

Woodlin, Agapov_stas
Проблему с первым полем решил ещё во втором сообщении. Но всё-равно спасибо.
На данный момент решил проблему с обоими полями так:

Код:
Option Compare Database
Option Explicit

Private Sub ДатаДва_Exit(Cancel As Integer)

   If IsNull(ДатаДва) Then
       Cancel = -1
          If IsNull(ДатаДва) Then Me.ДатаДва.SetFocus
       MsgBox "Дата не может быть нулевой"
       
       Else
         If [ДатаДва] < [ДатаОдин] Then
            Cancel = True
              If [ДатаДва] < [ДатаОдин] Then Me.ДатаДва.SetFocus
            MsgBox "Дата не может быть меньше первой"
       
         Else
           DoCmd.OpenQuery "зУдалениеГрафика", acViewNormal, acEdit
                   
       End If
  End If
End Sub


Private Sub ДатаОдин_Exit(Cancel As Integer)
  If IsNull(ДатаОдин) Then
       Cancel = -1
          If IsNull(ДатаОдин) Then Me.ДатаОдин.SetFocus
       MsgBox "Дата не может быть нулевой"
         
  Else
       If [ДатаОдин] > Date Then
          Cancel = True
         If MsgBox("Дата не может быть больше текущей", vbOKCancel, "") = vbOKCancel Then Exit Sub
       DoCmd.Close
   
       End If
  End If
  
End Sub
Работает, курсор остаётся на полях, как и хотелось изначально.

Правда, если вообще ничего не вводить в форму и попытаться её закрыть или вызвать конструктор, выдаётся сообщение "Дата не может быть нулевой".

Всем спасибо за помощь в этой теме!

Попробую дальше как-нибудь решить проблему, если ничего не вводить, чтобы не выскакивало сообщение.
И-ван-Ыч вне форума Ответить с цитированием
Старый 23.10.2013, 12:42   #13
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

Тогда попробуйте добавить внешнее условие:

Код:
If .Dirty Then
  If IsNull(ДатаОдин) Then
    ...
  Else
    ...
  End If
End If
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Hook, как убедиться в том, что это нужное мне окно crazygoldbullet Win Api 2 25.08.2013 03:10
Как отключиь том VladimirVB Операционные системы общие вопросы 3 07.07.2010 15:44
Как проверить нажата ли любая клавиша (в том числе и на мыши)? Вадим Буренков Общие вопросы Delphi 11 07.07.2009 16:30
Проектирование электронных устройств (о том, как создаются новые продукты) Askofen Обсуждение статей 0 12.04.2009 18:21