|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Доброго дня! Снова прошу помощи, никак мне не победить эту штуку.. Смысл в том, что юзеры повадились вводить новые товары с пробелами в начале. Я ставлю Trim в процедуре NotInList. Если после Trim оказывается, что товар уже есть, то нужно его выбрать в комбобоксе. Если нет - то оттриммить и добавить через форму acDialog. Через тернии я вроде поняла примерно, как должен работать код, но теперь новая проблема. У меня стоит проверка комбобокса BeforeUpdate. Если эту проверку товар не проходит, то NotInList стопорится с ошибкой, причём ошибки выдаёт разные... Мне надо, чтобы вновь созданный товар нельзя было выбрать в комбо, если не пройдена проверка. Не знаю, понятно ли объясняю (( Может, меня вообще не в ту степь занесло? Если использовать ctl = NewData вместо ctl.Text = NewData, то BeforeUpdate не возникает. Если использовать acDataErrAdded, то ошибка вылезает, что отсутствует в списке. Код ниже, пример в приложении. Проблема при добавлении товара типа ' Пельмени 5' или ' Пельмени 19' с пробелом в начале. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2016, 17:18 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraK, Как вариант - разбейте выбор и добавление на 2 окна. В комбобоксе оставьте только поиск и выбор. Добавление в справочник - по кнопке, расположенной рядом. Поиск внутри комбобокса я делаю так: Код: vbnet 1. 2. 3. 4. 5.
Для добавления открывается отдельное окно справочника, которое при закрытии рефрешит комбобокс, и проставляет в него только что добавленное значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2016, 19:29 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraK, как вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2016, 19:41 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Piple0, вариант, хотя и не очень удобный, форма табличная и кнопку сбоку городить не очень удобно. Но, возможно, придётся так сделать, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2016, 23:25 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
sdku, в вашем примере у меня тоже не получается добавить товар с пробелом в начале, который потом убирается - та же ошибка об отсутствии в списке ( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2016, 23:27 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Можно без кнопки открывать форму ввода. У комбобокса стандартное свойство есть - форма, открываемая для добавления данных, если значения нет в списке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 00:16 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Piple0Можно без кнопки открывать форму ввода. У комбобокса стандартное свойство есть - форма, открываемая для добавления данных, если значения нет в списке.Не на всех версиях. Появилось недавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 04:05 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Бред то какой. К чему фсе эти сложносочиненности? Удаляйте пробелы в событии контрола Изменение. И не трахайте мозг. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 07:34 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraK, немного кривовато, но Ваша "хотелка" выполнится после добавления этого; Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 09:25 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
вернее так Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 09:29 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
sdku - любитель месаг? ---------------------------------------- на событие чанге добавь. Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 20:55 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraKСмысл в том, что юзеры повадились вводить новые товары с пробелами в начале. Я ставлю Trim в процедуре NotInList.Делайте по-другому. Просто не позволяйте вводить лидирующие пробелы. Следующим образом: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Процедуры ВидПельменей_AfterUpdate и ВидПельменей_BeforeUpdate вообще уберите. Процедуру ВидПельменей_NotInList особо не рассматривала, что-то она мне не очень нравится. Но пока в задуманном Вами виде она работать будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 01:21 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Или покороче, без проверки на модификаторы: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 01:27 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Piple0, да, есть такая возможность, попробовала. Форма открывается на первой записи, а не на новой, это не очень подходит.. aleks2, sdku, Александр Маркин, __Michelle, при печати с клавиатуры проблема решилась, спасибо. Теперь при вставке товара с пробелом через Ctrl+V не получается (( Если обрабатывать его по KeyUp, то событие NotInList не возникает, как, впрочем, и остальные.. Код: vbnet 1. 2. 3.
Если ставить Me![поле1] .Text = LTrim(Me![поле1].Text) - то все события возникают, но рано, пользователь после Ctrl+V ещё впишет, может, что-нить. P.S. Процедуру BeforeUpdate убрать не могу, там проводится проверка на ввод недопустимого товара (нельзя выбрать два товара одной категории в заказе). Отдельная песня.. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 03:26 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
Понапихала в итоге обработчики ошибок, вроде работает, надо погонять, не полезут ли другие коды ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 03:56 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraK....Смысл в том, что юзеры повадились вводить новые товары с пробелами в начале..... Вы хотите предусмотреть ВСЕ "косяки" юзеров-до сих пор это не удавалось (защитившись от одного "косяка" юзеры придумают три новых-процсс защиты от невнимательности и безответственности пользователей стремится к бесконечности..-проще "поотрубать" им руки) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 13:02 |
|
Обработка BeforeUpdate во время NotInList
|
|||
---|---|---|---|
#18+
VeraK...Теперь при вставке товара с пробелом через Ctrl+V не получается (( Если обрабатывать его по KeyUp, то событие NotInList не возникает, как, впрочем, и остальные..Ну-ну... А если пользователи станут делать вставку не через Ctrl+V, а путем выбора пункта Вставить из контекстного меню? Чем будете вылавливать лидирующие пробелы? Будете анализировать содержимое буфера обмена API-функциями? Делайте проще. Вот так. С учетом порядка наступления событий для поля со списком KeyDown —> KeyPress —> Dirty —> Change —> KeyUp —> NotInList —> Error Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
И процедура NotInList значительно сокращается: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2016, 17:58 |
|
|
start [/forum/topic.php?fid=45&msg=39365378&tid=1612882]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 349ms |
total: | 484ms |
0 / 0 |