Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.02.2018, 13:57
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Ситуация такая. Пользователь заполняет форму и попадает на группу переключателей. Требование заказчика: оператор обязательно должен включить один из переключателей. Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет. Реальная ситуация. Пользователь вводит в данные и хочет отменить ввод нажав на кнопку "Отмена" на форме. Но он находится в группе переключателей с обязательным включением одного из них. Программа требует нажатия переключателя, а пользователь хочет отменить ввод. Он злится. Как быть? ------------------------------------------------------------- А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:02
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
JossКак быть? ctrl+alt+del :) а по сути - объяснить заказчику бредовость этого пункта ТЗ, либо пусть расскажет в ТЗ , каков должен быть сценарий при "ошибочном " входе в контрол. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:08
|
|||
---|---|---|---|
|
|||
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Joss, А что будет если пользователь решит завершить ввод на форме так и не зайдя в группу? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:16
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Joss, Это почти нормальная ситуация, можно разрешить так: - Первое или последнее значение Группы это "Значение не выбрано"... - Оно же идет и по умолчанию при открытии формы... - Дальше думаю и коню понятно... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:20
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
vmag, Если предыдущий вариант пугает, можно упростить... Значения в группе обычно при выборе 1,2,3,4... При открытии формы значение группы делать = 0 Далее анализировать ноль или не ноль... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:35
|
|||
---|---|---|---|
|
|||
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Я бы выполнял проверку на BeforeUpdate формы. Не заполнено - перенести фокус на элемент и напомнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:36
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
GVOVJoss, А что будет если пользователь решит завершить ввод на форме так и не зайдя в группу? 1. Форма ориентирована на ввод с клавиатуры. Это не значит, что мышкой нельзя скакать по элементам. Пользователи вводят данные с анкет. Набирают значение, нажимают Enter и маркер перескакивает на следующее поле для набора. (Сидел в своё время, вылизывал все эти переходы). Так что проскочить при нормальном вводе невозможно. 2. Для уникумов, которые любят выделяться, при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы. На этом этапе и вылавливаются такие пропущенные группы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:39
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы а чем не нравится? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 14:53
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
bubucha при нажатии кнопки "Сохранить" производится контроль по правильности заполнения формы а чем не нравится? Не хотят делать лишних телодвижений. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 15:29
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
и ведь помнил, что что-то подобное когда-то давно делал. И нашел и сделал таки. Может не очень красиво, но работает. Объясняю как. 1. Создал в модуле формы переменную уровня Private Код: vbnet 1.
2. Затем создал 4 события Код: vbnet 1. 2. 3.
Код: vbnet 1. 2. 3.
Код: vbnet 1. 2. 3.
Код: vbnet 1. 2. 3.
а событие КодХарактСтр_Exit(Cancel As Integer) доработал следующим образом. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Вроде пока возражений и замечаний нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 15:32
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
JossТребование заказчика: оператор обязательно должен включить один из переключателей. Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет.Форма что, привязана к таблице как источнику данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 15:38
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
AkinaФорма что, привязана к таблице как источнику данных? Нет. Форма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 16:30
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
JossТребование заказчика: оператор обязательно должен включить один из переключателей. Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет. Глупое решение. Неужели заказчик свое требование именно так и сформулировал? Или ему нужно было, чтобы при вводе данных был выбран переключатель? Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 17:25
|
|||
---|---|---|---|
|
|||
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Alibek B.JossТребование заказчика: оператор обязательно должен включить один из переключателей. Ставлю проверку на включение. И пока оператор не включить один из переключателей, он группу не покинет. Глупое решение. Неужели заказчик свое требование именно так и сформулировал? Или ему нужно было, чтобы при вводе данных был выбран переключатель? Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных. Поддерживаю это утверждение потому что "оператор обязательно должен включить один из переключателей" противоречит логике. Согласно этому выражению кнопки "отмена" не должно быть вообще или она должна быть в группе переключателей, как писал vmag, иначе требование заказчика не выполнить. Логично утверждение должно звучать как "оператор обязательно должен включить один из переключателей, или отменить ввод данных", в таком случае проверку надо делать при сохранении. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 20:52
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Alibek B.Глупое решение. Неужели заказчик свое требование именно так и сформулировал? Или ему нужно было, чтобы при вводе данных был выбран переключатель? Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных. Программе живёт уже более 12 лет. Сменилось 3 начальника отдела, уволился первый программист и первый постановщик задачи. Менялись формы анкет, менялось видение работы программы. Уже сложилась определённая методика работы с программой. И все улучшения и доработки надо проводить задевая по минимуму логику работы программы. Когда-то такое решение показалось кому-то хорошим. Вот оно и осталось. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 21:31
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
GVOVAlibek B.Глупое решение. Неужели заказчик свое требование именно так и сформулировал? Или ему нужно было, чтобы при вводе данных был выбран переключатель? Если последнее, то проверку нужно делать не на OnExit, а на нажатии кнопки OK или сохранении данных. Поддерживаю это утверждение потому что "оператор обязательно должен включить один из переключателей" противоречит логике. Согласно этому выражению кнопки "отмена" не должно быть вообще или она должна быть в группе переключателей, как писал vmag, иначе требование заказчика не выполнить. Логично утверждение должно звучать как "оператор обязательно должен включить один из переключателей, или отменить ввод данных", в таком случае проверку надо делать при сохранении. Раньше на этой задаче сидело 8 операторов, два программиста и аналитик. Сейчас осталось 4 оператора и программист. За 3 недели отчётного периода надо ввести порядка 8-10 тыс анкет. Там пальцем лишний раз пошевелить в лом. Куча контролей при вводе и потом общий контроль при сохранении записи. Эта задача нас кормит (раньше были ещё и другие задачи, сейчас осталась одна). Не справимся - заберут задача и ищите новую работу. По-этому, если операторы хотят так работать, программист должен это сделать. И я сделал. Может это и кажется кривовато, но это работает. Я понимаю и знаю, что иногда хотелки некоторых отдельных личностей сильно зашкаливают. И я с этим борюсь. Но если есть возможность сделать так, как он просят, то делаю. Не получается, тогда это отдельный разговор. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 21:31
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
JossФорма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц.Вот когда юзер жмёт "сохранить" - тогда и нужно проверять ВСЕ хотелки. А пока он НЕ сохраняет - пусть делает чё хочет... выбирает всё, половину, одно или вообще ничего не выбирает... JossТребование заказчика: оператор обязательно должен включить один из переключателей.Дополнительное требование линейности заполнения формы имеется? нет? тогда не придумывай лишних ограничений... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 21:33
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
JossТам пальцем лишний раз пошевелить в лом. Куча контролей при вводе и потом общий контроль при сохранении записи.Контроль на вводе замедляет намного больше, чем контроль на сохранении. И чем больше формализован ввод, тем заметнее разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 21:35
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Jossесли есть возможность сделать так, как он просят, то делаюТак в чём проблема? надо отмениться? выбирай любой вариант - и потом отменяйся. JossПрограмма требует нажатия переключателя, а пользователь хочет отменить ввод. Он злится.Злиться не о чем, кроме как на свою тупость... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 22:00
|
|||
---|---|---|---|
|
|||
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Joss Я понимаю и знаю, что иногда хотелки некоторых отдельных личностей сильно зашкаливают. И я с этим борюсь. Но если есть возможность сделать так, как он просят, то делаю. Не получается, тогда это отдельный разговор. Я просто хочу сказать что постановка задачи в том виде что была процитирована выше имеет логический недостаток в самой формулировке. И поэтому чтобы решить эту задачу надо попросить начальство уточнить задачу. Ведь если выполнить требование "оператор обязательно должен включить один из переключателей" то получается что перед тем как нажать отмену надо всё равно включить один из переключателей, как требуется в ТЗ. Поэтому ваш первый вариант решения единственно верный. Если же позволить оператору отменить ввод данных на любом этапе (пример которой вы как раз приводите в первом посте как реальная ситуация) то это же противоречит требованию: оператор не хочет "обязательно включить один из переключателей" а хочет выполнить другое действие поэтому программа и должна в соответствии с требованием заказчика потребовать включения переключателя. Поэтому я считаю что просто надо у казать заказчику на это несоответствие и попросить уточнить ТЗ чтобы оператор не злился. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.02.2018, 23:41
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
AkinaJossФорма отвязанная. По кнопке "Сохранить"" данные записываются в базу. Разносятся в несколько таблиц.Вот когда юзер жмёт "сохранить" - тогда и нужно проверять ВСЕ хотелки. А пока он НЕ сохраняет - пусть делает чё хочет... выбирает всё, половину, одно или вообще ничего не выбирает... Время, время, время... Да, в конце делается окончательный контроль, Но и во время ввода много текущего контроля. Там параметр не должен превышать определённого значения, Там несколько параметров находятся во взаимодействии и т.д. Лучше ловить все эти нестыковки на лету, а не лазить по отчёту потом. Программа работает довольно давно и все основные требования уже отработаны. Есть мелкие нюансы. Вот как сейчас Все старые работники уже знают все подводные камни программы, ла и я тут на месте. Но вот решили передать урезанный вариант программы в другие организации, для ввода анкет так сказать на местах. Вот и посыпались вопросы и замечания. У нас инструкцию читают в самую последнюю очередь.Да и то, если нет под рукой телефона. AkinaJossТребование заказчика: оператор обязательно должен включить один из переключателей.Дополнительное требование линейности заполнения формы имеется? нет? тогда не придумывай лишних ограничений... Явных требований нет,но это подразумевается. Как и направление письма. Слева на право, как принято у нас, а не наоборот, как у некоторых. Ну никто не будет метаться взглядом по анкете, а потом по экрану, выискивая нужные пункты. Уже было такое, что маркер перескакивал не туда, не в том порядке пробегался по полям. Меня вызывали, тыкали носом и требовали немедленно исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2018, 08:08
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Joss, свои пару копеек. Сначала обращусь ко всем тем, кто заявляет, что де подобное условие (оператор обязательно должен включить один из переключателей) напрочь не логично и т.д. Есть немало ситуаций, где такое требование необходимо. Пример: оптовая фирма, 8 вариантов отпускных цен. Работник, открыв новую расходку, должен выбрать клиента из списка и затем выбрать вариант цены. Тогда программа "подключит" нужный столбец цен из номенклатуры товаров. То есть "обязаловка" вполне имеет место в жизни ) Далее. Первый вариант решения подобной задачи был, как и вас, Joss - тупо "не выпущать" пользователя, пока не выберет значение. Понятное дело, что это неудобно, довольно непонятно, ограничивает пользователя (например - он просто решил закрыть документ, оставив на потом - а вот фиг) и потому бесит. Второй вариант - при открытии окна (формы) блокировались остальные кнопочки/поля (через Enabled=False), и только после выбора цены блокировка снималась. Уже лучше, но тоже неудобно: всегда найдётся работник (например, из новопринятых), который не читал инструкции, "не внимал старшим товарищам", и потому тупо не понимающий, почему это он тыкает на кнопочки/поля - а программа "висит" и ничего не происходит. А на заблокированные поля/кнопки никакие проверки толком не повесишь. Потому появился третий вариант. Между прочим, логика варианта практически такая же, как отписался чуть выше vmag (судя по комментам - его никто не услышал, а зря), только у меня чуть по другому реализовано. По сути vmag предложил при открытии формы присваивать группам переключателей некое "нерабочее" значение, а именно "0". А все остальные кнопочки/поля формы перед "срабатыванием" - предварительно проверяют значение той или иной группы переключателей. Если "ноль" - выдаётся сообщение "старушка - туда не ходи, сюда ходи", с указанием типа "Не выбрано значение переключателя". Если "не ноль", то есть значение переключателя выбрано пользователем - даётся допуск на остальные действия пользователя. Преимущество такого варианта в том, что пользователя никто в группе переключателей насильно не держит, но и поставленная задача по недопуску - решена. Даже - с поясняющими сообщениями для упорно непонятливых. Как говорил, я чуть по другому сделал подобное. На форме сделал свободное скрытое поле, скажем, "Ключ". При открытии формы этому полю задаётся значение "0". После нажатия любой из кнопочек выбора цены - этому полю "Ключ" присваивается значение "1". Если клиенту надо сделать "откат" выбора - жмёт на кнопочку "Корректировка", при этом значение "Ключ" становится "0". Ну а дальше - уже согласно выше сказанного: на каждом нужном поле ставится предварительная проверка значения "Ключ": если "1" - добро пожаловать, если "0" - "иди лесом". При закрытии формы проводится аналогичная проверка: "Не все поля заполнены, вы точно хотите закрыть форму?" Да - закрывается форма, Нет - отмена закрытия, продолжаем работу. Подытожу. Как показывает опыт - рассчитывать работу любого (!!!) приложения надо исходя из того, что пользователь - ленивое малограмотное и очень "куда то" спешащее создание. Можно написать кучу подробных инструкций, сделать обучающие видеоЮ лично (!) обучать очередного пользователя - но пользователь все равно порой такое отчебучит... Почему таких уникумов берут на работу - остаётся на совести руководителей. Однако, если такой уникум накосячит (что закономерно и логично), то крайним будет программист, инфа 100% :). Потому - не просто "молча насильно держим", а ласково отталкиваем от неразрешённых действий, коротко объясняя причину. Ну примерно как санитар в дурдоме :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2018, 11:02
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
а мне как то приглянулись .tag -позволяют отслеживать состояние контрола при различных конфигурациях формы (динамические изменения в зависимости от контекста), и соответственно в зависимости от этого и предпринимать соответствующие действия. в группе кстати можно сделать переключатель какой нить типа "вернуться" - если так жестко привязались в группе. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2018, 13:27
|
|||
---|---|---|---|
|
|||
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Поскольку мы посылаем пользователю сообщение, было бы правильным в нем же и спросить его, пользователя, что он намеревается делать дальше. Насколько я понимаю, вариантов ответа всего два: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.02.2018, 13:33
|
|||
---|---|---|---|
Как найти выход из безвыходной ситуации... (это вопрос, если что) |
|||
#18+
Predeclared, а почему вы считаете, что методов всего два? Типа - или выбрать, или закрыть форму? Как минимум - должен быть ещё вариант "выбрать другое значение", вообще ничего не выбирать и посидеть подумать, ну и так далее. А то у вас прям как в магазинах: мужчина, будете что то брать? Нет - до свидания, на выход ) Соответственно - и логика обработки будет другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&mobile=1&tid=1611707]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 408ms |
0 / 0 |