Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
1

Комбинация: обязательное поле в конструкторе таблиц и команда закрыть форму, не работает

08.08.2016, 18:47. Показов 1250. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет..)
Так и должно быть, что команда DoCmd.Close acForm, закрывает форму без разговоров, минуя обязательные поля заданные в конструкторе таблиц? Разве данная команда не равнозначна - нажатию на крестик формы?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2016, 18:47
Ответы с готовыми решениями:

Обязательное поле!
Добрый день! Битрикс24 коробка. Подскажите пожалуйста,необходимо в "контакт" сделать поле...

Обязательное поле
Здраствуйте , вот третий день копаюсь в интернете не могу найти как создаю телефонный справочник...

Это обязательное поле
Здравствуйте, в нижеприведённом коде при не вводе пользователем данных в поле из какого ларца...

Условно-обязательное поле в форме
Коллеги, вполне возможно, что просто уже хочется спать, но... не могу сообразить и нагуглить тоже....

11
39 / 39 / 11
Регистрация: 24.07.2016
Сообщений: 87
09.08.2016, 00:20 2
Хм...
см. порядок событий формы MS Access где то в этой ... даже не знаю ...
MSDN за последние годы стала бесполезной помойкой ...

Добавлено через 12 минут
Цитата Сообщение от sana555 Посмотреть сообщение
минуя обязательные поля заданные в конструкторе таблиц?
К форме они отношения не имеют ... При закрытии форма оглядывается на эти правила, но они второстепенны - она тупо выдаёт сабж о невозможности сохранения (в лучшем случае) - и дальше выполняет команду пользователя (т.е. закрывается).
Можно сделать специальную Функцию проверки "какчества" данных формы -и повесить её на все попытки пользователя "улизнуть" (их несколько).
Если функция вернула False = Стоп!!! Назад!!! или Undo или Delate ...
Надеюсь был понятен.
Успехов!
1
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
09.08.2016, 00:34  [ТС] 3
Как сделать проверку заполнения полей средствами вба, я знаю, спасибо. Интересует больше то, что если форму закрывать штатным крестиком, то сообщения о не заполнении полей выскакивают, а если закрыть своей кнопкой с кодом DoCmd.Close acForm - никаких сообщений, форма просто закрывается...
0
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.08.2016, 00:43 4
Цитата Сообщение от sana555 Посмотреть сообщение
Интересует больше то, что если форму закрывать штатным крестиком, то сообщения о не заполнении полей выскакивают, а если закрыть своей кнопкой с кодом DoCmd.Close acForm - никаких сообщений, форма просто закрывается...
В ранних версиях последний параметр Close по умолчанию был acSavePrompt. А в 2010 я вижу, что параметр по умолчанию стал acSaveNo, т.е. закрытие без подтверждения. И если хотите чтобы при закрытии кнопкой в случае незаполненных полей было сообщение, то третий параметр должен быть acSavePrompt:
Visual Basic
1
DoCmd.Close acForm, Me.Name, acSavePrompt
1
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
09.08.2016, 00:52  [ТС] 5
Цитата Сообщение от mobile Посмотреть сообщение
то третий параметр должен быть acSavePrompt
Все равно закрывает, без сообщений...
0
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.08.2016, 01:05 6
Так попробуйте (код на кнопке)
Visual Basic
1
2
3
4
5
6
7
8
9
    On Error Resume Next
    Me.Dirty = False
    If Err <> 0 Then
        If MsgBox("Не заполнены обязательные поля" & vbCrLf  & vbCrLf _
        & "ОК - Закрыть форму без сохранения", vbOKCancel) = vbOK Then
            DoCmd.Close acForm, Me.Name
        End If
        Err.Clear
    End If
1
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
09.08.2016, 01:11  [ТС] 7
Да так работает, спасибо. Но выводится обобщающее сообщение, без привязки к полю...
Я вот не пойму почему у меня ваш предыдущий вариант не работает:
Visual Basic
1
DoCmd.Close acForm, Me.Name, acSavePrompt
Хотя из описания вроде должен:
acSaveNo (выход без сохранения)
acSavePrompt (подтверждение, значение по умолчанию)
acSaveYes (сохранение без подтверждения)
0
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.08.2016, 01:34 8
Цитата Сообщение от sana555 Посмотреть сообщение
Я вот не пойму почему у меня ваш предыдущий вариант не работает:
«Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам» © Шекспир
1
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
09.08.2016, 02:33  [ТС] 9
Понятно, мне это не дано и не только мне...

Добавлено через 37 минут
0
39 / 39 / 11
Регистрация: 24.07.2016
Сообщений: 87
09.08.2016, 03:35 10
Я пишу так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Function CheckFormData () As Bollean
 
If IsNull (Me!PersonNane) = True Then
MsgBox ....
Me!PersonNane.SetFocus
GoTo CheckFormData_Bye
End If
' и так далее
 
 
' И только в конце :
  CheckFormData = True 'После всех проверок
 
End Function
Дальше :

На всех попытках выйти из формы:
Visual Basic
1
If CheckFormData = False Then ...
Надеюсь был понятен.
0
Мы один, давай на "ты"
3600 / 1328 / 324
Регистрация: 16.06.2016
Сообщений: 3,146
09.08.2016, 04:58 11
Цитата Сообщение от sana555 Посмотреть сообщение
Как сделать проверку заполнения полей средствами вба, я знаю
sana555, на событие выгрузки формы (Form_Unload(Cancel as Integer)) проверяй заполнены ли поля, если нет, то отмени выгрузку (Cancel=-1), форма не закроется.

ЗЫ. И по "крестику" тоже...
1
430 / 38 / 1
Регистрация: 02.03.2016
Сообщений: 436
09.08.2016, 13:36  [ТС] 12
Спасибо, но как я уже упомянул ранее, я знаю как сделать проверку, собаку съел на этих обяз. полях..)). Вопрос ведь в другом: обязательные поля, отмеченные в таблице в сочетании с штатным крестиком - работают изумительно(сообщения выводятся перед закрытием формы), а тоже самое, только в сочетании с своей кнопкой закрытия(DoCmd.Close acForm, Me.Name, acSavePrompt) - не работает( форма закрывается без вывода сообщения)
Вот что есть любое действие? - выполнение какой либо команды, я так думаю. Тык вот, получается нажатие на крестик - ни есть команда DoCmd.Close acForm, Me.Name, acSavePrompt, иначе бы работало так же.
Ну да ладно, раз уж мудрецам не снилось какая команда скрывается за "крестиком", так уж что взять с нас обычных смертных...
0
09.08.2016, 13:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2016, 13:36
Помогаю со студенческими работами здесь

Как убрать обязательное поле?
Как быть, если мне вообще не нужно поле сообщения, а форма всё равно требует его ввести? //...

Обязательное поле для заполнения
Здравствуйте! Помогите реализовать следующий функционал: Есть форма, где нужно, чтобы после...

Необязательное и обязательное поле для заполнения
Нужно сделать такую штуку. Есть 4 поля для заполнения (логин, имеил, пароль и ещё одно). Перед...

Указать текстовое поле не обязательное для заполнения
Можно ли сделать так, чтобы в каком либо текстовом поле был виден текст что данное поле не...

Как создать обязательное поле на странице checkuot?
В файле confirm.tpl создал тестовое поле &lt;p&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;input id=&quot;rules&quot;...

Закрыть 2 форму при этом не закрыть весь проект
Нужна помощь!!! как сделать так что бы в 1 форме выходила 2 а после,2 форма закрывалась при нажатии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru