powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как найти выход из безвыходной ситуации... (это вопрос, если что)
25 сообщений из 30, страница 1 из 2
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599675
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация такая.
Пользователь заполняет форму и попадает на группу переключателей. Требование заказчика: оператор обязательно должен включить один из переключателей.
Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет.
Реальная ситуация.
Пользователь вводит в данные и хочет отменить ввод нажав на кнопку "Отмена" на форме. Но он находится в группе переключателей с обязательным включением одного из них. Программа требует нажатия переключателя, а пользователь хочет отменить ввод. Он злится. Как быть?


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599679
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossКак быть?
ctrl+alt+del :)

а по сути - объяснить заказчику бредовость этого пункта ТЗ, либо пусть расскажет в ТЗ , каков должен быть сценарий при "ошибочном " входе в контрол.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599682
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss,

А что будет если пользователь решит завершить ввод на форме так и не зайдя в группу?
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599688
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

Это почти нормальная ситуация, можно разрешить так:

- Первое или последнее значение Группы это "Значение не выбрано"...
- Оно же идет и по умолчанию при открытии формы...
- Дальше думаю и коню понятно...
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599691
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Если предыдущий вариант пугает, можно упростить...
Значения в группе обычно при выборе 1,2,3,4...
При открытии формы значение группы делать = 0
Далее анализировать ноль или не ноль...
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599699
Я бы выполнял проверку на BeforeUpdate формы. Не заполнено - перенести фокус на элемент и напомнить.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599700
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVJoss,

А что будет если пользователь решит завершить ввод на форме так и не зайдя в группу?
1. Форма ориентирована на ввод с клавиатуры. Это не значит, что мышкой нельзя скакать по элементам. Пользователи вводят данные с анкет. Набирают значение, нажимают Enter и маркер перескакивает на следующее поле для набора. (Сидел в своё время, вылизывал все эти переходы). Так что проскочить при нормальном вводе невозможно.
2. Для уникумов, которые любят выделяться, при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы. На этом этапе и вылавливаются такие пропущенные группы.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599701
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы
а чем не нравится?
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599715
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubucha при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы
а чем не нравится? Не хотят делать лишних телодвижений.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599745
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ведь помнил, что что-то подобное когда-то давно делал. И нашел и сделал таки. Может не очень красиво, но работает.
Объясняю как.
1. Создал в модуле формы переменную уровня Private
Код: vbnet
1.
Private blnMoveCancel As Boolean

2. Затем создал 4 события
Код: vbnet
1.
2.
3.
Private Sub ЗаголовокФормы_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    blnMoveCancel = False
End Sub

Код: vbnet
1.
2.
3.
Private Sub ОбластьДанных_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    blnMoveCancel = False
End Sub

Код: vbnet
1.
2.
3.
Private Sub ПримечаниеФормы_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    blnMoveCancel = False
End Sub

Код: vbnet
1.
2.
3.
Private Sub btnCancel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    blnMoveCancel = True
End Sub

а событие КодХарактСтр_Exit(Cancel As Integer) доработал следующим образом.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub КодХарактСтр_Exit(Cancel As Integer)
If Nz(Me.КодХарактСтр) = 0 Then
    If blnMoveCancel Then
        Call MsgBox("Для отмены режима ввода повторно нажмите на кнопку ""Отменить""", _
            vbInformation, "Отмена ввода")
        Me.btnCancel.SetFocus
        Exit Sub
    End If
    MsgBox "Характеристика строительства объекта должно быть заполнено!", , _
        "Классификация характеристики строительства объектов"
    Cancel = True
End If
End Sub

Вроде пока возражений и замечаний нет.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599751
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossТребование заказчика: оператор обязательно должен включить один из переключателей.
Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет.Форма что, привязана к таблице как источнику данных?
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599758
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaФорма что, привязана к таблице как источнику данных? Нет. Форма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599806
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossТребование заказчика: оператор обязательно должен включить один из переключателей.
Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет.
Глупое решение. Неужели заказчик свое требование именно так и сформулировал?
Или ему нужно было, чтобы при вводе данных был выбран переключатель?
Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599833
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.JossТребование заказчика: оператор обязательно должен включить один из переключателей.
Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет.
Глупое решение. Неужели заказчик свое требование именно так и сформулировал?
Или ему нужно было, чтобы при вводе данных был выбран переключатель?
Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных.

Поддерживаю это утверждение потому что "оператор обязательно должен включить один из переключателей" противоречит логике. Согласно этому выражению кнопки "отмена" не должно быть вообще или она должна быть в группе переключателей, как писал vmag, иначе требование заказчика не выполнить. Логично утверждение должно звучать как "оператор обязательно должен включить один из переключателей, или отменить ввод данных", в таком случае проверку надо делать при сохранении.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599880
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Глупое решение. Неужели заказчик свое требование именно так и сформулировал?
Или ему нужно было, чтобы при вводе данных был выбран переключатель?
Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных. Программе живёт уже более 12 лет. Сменилось 3 начальника отдела, уволился первый программист и первый постановщик задачи. Менялись формы анкет, менялось видение работы программы. Уже сложилась определённая методика работы с программой. И все улучшения и доработки надо проводить задевая по минимуму логику работы программы. Когда-то такое решение показалось кому-то хорошим. Вот оно и осталось.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599890
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVAlibek B.Глупое решение. Неужели заказчик свое требование именно так и сформулировал?
Или ему нужно было, чтобы при вводе данных был выбран переключатель?
Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных.
Поддерживаю это утверждение потому что "оператор обязательно должен включить один из переключателей" противоречит логике. Согласно этому выражению кнопки "отмена" не должно быть вообще или она должна быть в группе переключателей, как писал vmag, иначе требование заказчика не выполнить. Логично утверждение должно звучать как "оператор обязательно должен включить один из переключателей, или отменить ввод данных", в таком случае проверку надо делать при сохранении. Раньше на этой задаче сидело 8 операторов, два программиста и аналитик. Сейчас осталось 4 оператора и программист. За 3 недели отчётного периода надо ввести порядка 8-10 тыс анкет. Там пальцем лишний раз пошевелить в лом. Куча контролей при вводе и потом общий контроль при сохранении записи. Эта задача нас кормит (раньше были ещё и другие задачи, сейчас осталась одна). Не справимся - заберут задача и ищите новую работу. По-этому, если операторы хотят так работать, программист должен это сделать. И я сделал. Может это и кажется кривовато, но это работает.

Я понимаю и знаю, что иногда хотелки некоторых отдельных личностей сильно зашкаливают. И я с этим борюсь. Но если есть возможность сделать так, как он просят, то делаю. Не получается, тогда это отдельный разговор.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599891
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossФорма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц.Вот когда юзер жмёт "сохранить" - тогда и нужно проверять ВСЕ хотелки. А пока он НЕ сохраняет - пусть делает чё хочет... выбирает всё, половину, одно или вообще ничего не выбирает...
JossТребование заказчика: оператор обязательно должен включить один из переключателей.Дополнительное требование линейности заполнения формы имеется? нет? тогда не придумывай лишних ограничений...
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599892
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossТам пальцем лишний раз пошевелить в лом. Куча контролей при вводе и потом общий контроль при сохранении записи.Контроль на вводе замедляет намного больше, чем контроль на сохранении. И чем больше формализован ввод, тем заметнее разница.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599893
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jossесли есть возможность сделать так, как он просят, то делаюТак в чём проблема? надо отмениться? выбирай любой вариант - и потом отменяйся. JossПрограмма требует нажатия переключателя, а пользователь хочет отменить ввод. Он злится.Злиться не о чем, кроме как на свою тупость...
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599899
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss
Я понимаю и знаю, что иногда хотелки некоторых отдельных личностей сильно зашкаливают. И я с этим борюсь. Но если есть возможность сделать так, как он просят, то делаю. Не получается, тогда это отдельный разговор.

Я просто хочу сказать что постановка задачи в том виде что была процитирована выше имеет логический недостаток в самой формулировке. И поэтому чтобы решить эту задачу надо попросить начальство уточнить задачу.

Ведь если выполнить требование "оператор обязательно должен включить один из переключателей" то получается что перед тем как нажать отмену надо всё равно включить один из переключателей, как требуется в ТЗ. Поэтому ваш первый вариант решения единственно верный. Если же позволить оператору отменить ввод данных на любом этапе (пример которой вы как раз приводите в первом посте как реальная ситуация) то это же противоречит требованию: оператор не хочет "обязательно включить один из переключателей" а хочет выполнить другое действие поэтому программа и должна в соответствии с требованием заказчика потребовать включения переключателя.

Поэтому я считаю что просто надо у казать заказчику на это несоответствие и попросить уточнить ТЗ чтобы оператор не злился.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599909
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaJossФорма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц.Вот когда юзер жмёт "сохранить" - тогда и нужно проверять ВСЕ хотелки. А пока он НЕ сохраняет - пусть делает чё хочет... выбирает всё, половину, одно или вообще ничего не выбирает... Время, время, время... Да, в конце делается окончательный контроль, Но и во время ввода много текущего контроля. Там параметр не должен превышать определённого значения, Там несколько параметров находятся во взаимодействии и т.д. Лучше ловить все эти нестыковки на лету, а не лазить по отчёту потом. Программа работает довольно давно и все основные требования уже отработаны. Есть мелкие нюансы. Вот как сейчас Все старые работники уже знают все подводные камни программы, ла и я тут на месте. Но вот решили передать урезанный вариант программы в другие организации, для ввода анкет так сказать на местах. Вот и посыпались вопросы и замечания. У нас инструкцию читают в самую последнюю очередь.Да и то, если нет под рукой телефона.

AkinaJossТребование заказчика: оператор обязательно должен включить один из переключателей.Дополнительное требование линейности заполнения формы имеется? нет? тогда не придумывай лишних ограничений... Явных требований нет,но это подразумевается. Как и направление письма. Слева на право, как принято у нас, а не наоборот, как у некоторых. Ну никто не будет метаться взглядом по анкете, а потом по экрану, выискивая нужные пункты. Уже было такое, что маркер перескакивал не туда, не в том порядке пробегался по полям. Меня вызывали, тыкали носом и требовали немедленно исправить.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599932
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, свои пару копеек.
Сначала обращусь ко всем тем, кто заявляет, что де подобное условие (оператор обязательно должен включить один из переключателей) напрочь не логично и т.д. Есть немало ситуаций, где такое требование необходимо. Пример: оптовая фирма, 8 вариантов отпускных цен. Работник, открыв новую расходку, должен выбрать клиента из списка и затем выбрать вариант цены. Тогда программа "подключит" нужный столбец цен из номенклатуры товаров.
То есть "обязаловка" вполне имеет место в жизни )
Далее. Первый вариант решения подобной задачи был, как и вас, Joss - тупо "не выпущать" пользователя, пока не выберет значение. Понятное дело, что это неудобно, довольно непонятно, ограничивает пользователя (например - он просто решил закрыть документ, оставив на потом - а вот фиг) и потому бесит. Второй вариант - при открытии окна (формы) блокировались остальные кнопочки/поля (через Enabled=False), и только после выбора цены блокировка снималась. Уже лучше, но тоже неудобно: всегда найдётся работник (например, из новопринятых), который не читал инструкции, "не внимал старшим товарищам", и потому тупо не понимающий, почему это он тыкает на кнопочки/поля - а программа "висит" и ничего не происходит. А на заблокированные поля/кнопки никакие проверки толком не повесишь.
Потому появился третий вариант. Между прочим, логика варианта практически такая же, как отписался чуть выше vmag (судя по комментам - его никто не услышал, а зря), только у меня чуть по другому реализовано. По сути vmag предложил при открытии формы присваивать группам переключателей некое "нерабочее" значение, а именно "0". А все остальные кнопочки/поля формы перед "срабатыванием" - предварительно проверяют значение той или иной группы переключателей. Если "ноль" - выдаётся сообщение "старушка - туда не ходи, сюда ходи", с указанием типа "Не выбрано значение переключателя". Если "не ноль", то есть значение переключателя выбрано пользователем - даётся допуск на остальные действия пользователя. Преимущество такого варианта в том, что пользователя никто в группе переключателей насильно не держит, но и поставленная задача по недопуску - решена. Даже - с поясняющими сообщениями для упорно непонятливых.
Как говорил, я чуть по другому сделал подобное. На форме сделал свободное скрытое поле, скажем, "Ключ". При открытии формы этому полю задаётся значение "0". После нажатия любой из кнопочек выбора цены - этому полю "Ключ" присваивается значение "1". Если клиенту надо сделать "откат" выбора - жмёт на кнопочку "Корректировка", при этом значение "Ключ" становится "0". Ну а дальше - уже согласно выше сказанного: на каждом нужном поле ставится предварительная проверка значения "Ключ": если "1" - добро пожаловать, если "0" - "иди лесом". При закрытии формы проводится аналогичная проверка: "Не все поля заполнены, вы точно хотите закрыть форму?" Да - закрывается форма, Нет - отмена закрытия, продолжаем работу.
Подытожу. Как показывает опыт - рассчитывать работу любого (!!!) приложения надо исходя из того, что пользователь - ленивое малограмотное и очень "куда то" спешащее создание. Можно написать кучу подробных инструкций, сделать обучающие видеоЮ лично (!) обучать очередного пользователя - но пользователь все равно порой такое отчебучит... Почему таких уникумов берут на работу - остаётся на совести руководителей. Однако, если такой уникум накосячит (что закономерно и логично), то крайним будет программист, инфа 100% :).
Потому - не просто "молча насильно держим", а ласково отталкиваем от неразрешённых действий, коротко объясняя причину. Ну примерно как санитар в дурдоме :)
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599940
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а мне как то приглянулись .tag -позволяют отслеживать состояние контрола при различных конфигурациях формы (динамические изменения в зависимости от контекста), и соответственно в зависимости от этого и предпринимать соответствующие действия.
в группе кстати можно сделать переключатель какой нить типа "вернуться" - если так жестко привязались в группе.
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599966
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку мы посылаем пользователю сообщение, было бы правильным в нем же и спросить его, пользователя,
что он намеревается делать дальше.

Насколько я понимаю, вариантов ответа всего два:
1. Продолжить ввод, выбрав значение переключателя
2. Отказаться от ввода и завалить форму.

С первым вариантом уже разобрались с помощью аргумента Cancel.
Со вторым вариантом на копейку сложнее:
В процедуре обработки события Exit контрола метод Close объекта DoCmd работать отказывается.
Да и фиг то с ним.
Поднимем форму нестандартным экземпляром с поддержкой ссылки методом Мюнхгаузена,
и уроним экземпляр, в нужном нам месте, разорвав ссылку.

Как-то так, например. Бэк модуль формы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private frm As Form

Private Sub cmdCancel_Click()
    Set frm = Nothing
End Sub

Private Sub Form_Open(Cancel As Integer)
    Set frm = Me.Form
End Sub

Private Sub grp1_Exit(Cancel As Integer)
    If IsNull(Me.grp1) Then
        If MsgBox("Не выбрано значение переключателя. Продолжить ввод?", vbOKCancel) = vbOK Then
            Cancel = True
        Else
            Set frm = Nothing
        End If
    End If
End Sub
...
Рейтинг: 0 / 0
Как найти выход из безвыходной ситуации... (это вопрос, если что)
    #39599967
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared,
а почему вы считаете, что методов всего два? Типа - или выбрать, или закрыть форму? Как минимум - должен быть ещё вариант "выбрать другое значение", вообще ничего не выбирать и посидеть подумать, ну и так далее. А то у вас прям как в магазинах: мужчина, будете что то брать? Нет - до свидания, на выход )
Соответственно - и логика обработки будет другая.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как найти выход из безвыходной ситуации... (это вопрос, если что)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]