|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.10.2013, 06:33 | #1 |
Пользователь
Регистрация: 08.08.2013
Сообщений: 19
|
Как остаться в том же поле
Доброго времени суток всем!
.. Есть простая форма с двумя свободными полями. Как при проверке значений в поле при невыполнении условия остаться в том же поле? Пробовал разные варианты: Код:
Код:
Код:
Код:
Спасибо всем за уделённое данной теме время. |
02.10.2013, 11:33 | #2 |
Пользователь
Регистрация: 08.08.2013
Сообщений: 19
|
Для первого поля нашел в и-нете похожее решение:
Код:
Тут надо при [ДатаДва] < [ДатаОдин] вывести сообщение и остаться на этом же поле, а в противном случае запустить запрос и закрыть эту текущую форму. Вот без сравнения условия и запрос запускается и форма закрывается, а с условием - различные ошибки в зависимости от вариантов написанного кода. |
02.10.2013, 13:36 | #3 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
Понимаете ли, событие "Выход" (Exit) имеет переменную Cancel для отмены события. Но вот событие "После обновления" (AfterUpdate) - нет. А Вы в первых 4 вариантах пытались работать с Cancel... Теперь понимаете, почему у Вас ничего не получалось?
Теперь покажите, что именно Вы делаете с 2 датами. А событие ли "Выход" (Exit) Вы используете?
Окупант, руки прочь от Украины!!! Слава Героям!
|
03.10.2013, 06:29 | #4 | |
Пользователь
Регистрация: 08.08.2013
Сообщений: 19
|
Цитата:
Есть такая формочка [фУдалениеГрафиков] (вызывается из главной формы по клику на кнопку): 420x218(12.49 kB) Вводятся две даты, затем запускается запрос на удаление и все записи, которые попадают между этими датами включительно, удаляются (в запросе ссылка на поля формы с операцией Between) и форма закрывается. Если для первого поля все уже работает по коду Код:
Пример моих попыток (часть попыток закомментена апострофами дабы не перебивать много раз): Код:
Уже думаю опять просто оставить параметрический запрос, без вызова формы [фУдалениеГрафиков] или в форме не проверять условия, тогда всё работало. Myhaylo - спасибо (рейтинг поднять пока не могу), поэтому здесь. Последний раз редактировалось И-ван-Ыч; 04.10.2013 в 06:12. |
|
04.10.2013, 04:32 | #5 |
Пользователь
Регистрация: 17.08.2011
Сообщений: 39
|
И-ван-Ыч,
Я бы это повесил бы на кнопку, или на закрытие формы. --------------------------------- Чтобы не было ошибок при выполнении запроса, то нужно проверять все условия. А их может быть несколько. ---------------------------------- 1. If IsNull(Me![Дата1]) And IsNull(Me![Дата2]) Then If (7 = MsgBox("Необходимо ввести начальную и конечную даты.", 48, "Удаление графиков")) Then End If Me![Дата1].SetFocus Exit Sub End If 2. If IsNull(Me![Дата1]) Then If (7 = MsgBox("Необходимо ввести начальную дату.", 48, "Удаление графиков")) Then End If Me![Дата1].SetFocus Exit Sub End If 3. If IsNull(Me![Дата2]) Then If (7 = MsgBox("Необходимо ввести конечную дату.", 48, "Удаление графиков")) Then End If Me![Дата2].SetFocus Exit Sub End If 4. If Me![Дата1] > Me![Дата2] Then If Me![Дата1] > Date Then If (7 = MsgBox("Начальная дата не должна превосходить " & Date & ".", 16, "Удаление графиков")) Then End If Me![Дата1].SetFocus End If If Me![Дата1] <= Date Then If (7 = MsgBox("Конечная дата должна превосходить начальную дату," & vbNewLine & "либо быть ей равной.", 16, "Удаление графиков")) Then End If Me![Дата2].SetFocus End If Exit Sub End If 5. If Me![Дата1] = Me![Дата2] Then If Me![Дата1] > Date Then If (7 = MsgBox("Начальная дата не должна превосходить " & Date & ".", 16, "Удаление графиков")) Then End If Me![Дата1].SetFocus Exit Sub End If End If 6. If Me![Дата2] > Date Then If (7 = MsgBox("Конечная дата не должна превосходить " & Date & ".", 16, "Удаление графиков")) Then End If Me![Дата2].SetFocus Exit Sub End If --------------------------------------------- Если даты введены правильно, то выполняем запрос. И закрываем форму.
-----------------------------
307 МОНЕТ ВОЛШЕБНИКА |
04.10.2013, 06:09 | #6 | |
Пользователь
Регистрация: 08.08.2013
Сообщений: 19
|
Цитата:
Только не хотелось бы вешать ни на кнопку, ни на закрытие формы, хотелось бы чтобы сразу во второе поле вбил дату, и сразу либо сообщение (если не выполнены условия), либо запуск запроса, чтобы меньше действий было (пользователи и я ленивые, лишний раз давить - лень). Последний раз редактировалось И-ван-Ыч; 04.10.2013 в 06:13. |
|
04.10.2013, 10:43 | #7 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
Убийственное предложение: отключить переход по {ENTER} в меню MS Access ("Сервис"/"Параметры"/Клавиатура" -> "Поведение по Enter"="Нет"). Тогда достаточно будет обрабатівать только событие "После обновления" (AfterUpdate)...
Окупант, руки прочь от Украины!!! Слава Героям!
|
08.10.2013, 11:44 | #8 | |
Пользователь
Регистрация: 07.10.2013
Сообщений: 10
|
например, так:
Цитата:
|
|
14.10.2013, 07:05 | #9 |
Форумчанин
Регистрация: 30.03.2010
Сообщений: 153
|
Если тема ещё актуальна можно использовать событие До обновления (BeforeUpdate).
Код:
|
15.10.2013, 18:04 | #10 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
Но к сожалению, курсор переходит в следующее поле и этот MsgBox никого ни к чему не обязывает...
Окупант, руки прочь от Украины!!! Слава Героям!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |