|
28.04.2012, 11:00 | #1 |
Участник
|
Фильтр по полю стирает данные в этом поле
Здравствуйте, прошу совета.
При фильтрации данных в таблице Складские проводки (InventTrans) по полям "Статус прихода" и "Статус расхода" очищаются данные в этих полях, если в фильтре был указан "спецсимвол" (; ' , и др.) Это происходит не в результате локальных модификаций, проверил на "чистой Аксапте", там то же самое. Что же это может быть? Может кто сталкивался с подобной проблемой. Спасибо. Версия DAX 2009 |
|
28.04.2012, 11:04 | #2 |
Участник
|
Вы уверены, что именно стирает, а не фильтрует? какого эффекта хотели добиться ставя символ ";"? значения в фильтре разделяются символом ","
|
|
28.04.2012, 11:16 | #3 |
Участник
|
Цитата:
Да и свмо по себе поле, после сброса фильтра остаётся пустым. Фильтр должен корректно фильтровать вне зависимости от введённых данных в строку фильтра. |
|
28.04.2012, 11:24 | #4 |
Участник
|
У нас в свое время обнаружился глюк с просмотром паспорта записи на форме InventTrans.
подробностей не помню, но что-то вроде "если стать на одном из полей statusIssue или statusReceipt и вызвать паспорт записи, то поле обнулялось". Мне кажется у вашей проблемы ноги оттуда же растут. Не помню уже, как нашли решение. Кажется, где-то на форуме было что-то подобное. Какие-то проблемы с обработкой энумов на форме. Помогло проставление метки для значений statusIssue::None и statusReceipt::None - т.е. нужно непустое значение (например "N\A").
__________________
If it ain't broke, take it apart and find out why (с) |
|
28.04.2012, 11:31 | #5 |
Участник
|
|
|
28.04.2012, 11:40 | #6 |
Участник
|
|
|
28.04.2012, 12:08 | #7 |
Участник
|
А если нужно сохранить пустое значение, то есть не вносить метку в lable этих EnumItem'ов, что скажете?
|
|
28.04.2012, 12:27 | #8 |
Участник
|
Я может чего не понимаю, но аксапта никогда не давала фильтровать поля типа enum по маске. Можно использовать только полное наименование элемента перечисления. Дело в том, что тип enum(перечисление) в аксапте реализуется через integer. Т.е. реально в таблице БД хранятся не названия элементов перечисления а их номера. Перед фильтрацией по такому полю, система делает простую подстановку. В введёном условии все наименования элементов заменяются соответствующими номерами. Использование масок в этом алгоритме подстановки просто не предусмотрено. Почему - это отдельный вопрос (лично я не вижу особых сложностей в их реализации).
Исходя из всего выщеизложенного, вопрос. Может быть вы что-то не то делаете? Какую задачу вы решаете? |
|
28.04.2012, 12:35 | #9 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Я может чего не понимаю, но аксапта никогда не давала фильтровать поля типа enum по маске. Можно использовать только полное наименование элемента перечисления. Дело в том, что тип enum(перечисление) в аксапте реализуется через integer. Т.е. реально в таблице БД хранятся не названия элементов перечисления а их номера. Перед фильтрацией по такому полю, система делает простую подстановку. В введёном условии все наименования элементов заменяются соответствующими номерами. Использование масок в этом алгоритме подстановки просто не предусмотрено. Почему - это отдельный вопрос (лично я не вижу особых сложностей в их реализации).
Исходя из всего выщеизложенного, вопрос. Может быть вы что-то не то делаете? Какую задачу вы решаете? Задача такая: При фильтрации данных в таблице Складские проводки (InventTrans) по полям "Статус прихода" и "Статус расхода" очищаются данные в данных полях, если в фильтре был указан "спецсимвол" (; ' , и др.) Если очищаются данные поля, то изменяется количество остатков на складе, данные проводки не учитываются в пересчете и закрытии склада. Нужно разобраться почему стирается значение при использовании в фильтре для данных полей спецсимволов. |
|
28.04.2012, 13:00 | #10 |
Участник
|
Я не смог воспроизвести проблему. В каких строках у вас очищаются поля? Я задаю в значении фильтра ;(точку с запятой) - сестема скрывает все строки, т.к. действительно ни одна строка такому условию не соответствует. Убираю фильтр - все строки возвращаются и значения у них остаются неизменными.
|
|
28.04.2012, 14:08 | #11 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Я не смог воспроизвести проблему. В каких строках у вас очищаются поля? Я задаю в значении фильтра ;(точку с запятой) - сестема скрывает все строки, т.к. действительно ни одна строка такому условию не соответствует. Убираю фильтр - все строки возвращаются и значения у них остаются неизменными.
Последний раз редактировалось Cardagant; 28.04.2012 в 14:12. |
|
28.04.2012, 14:44 | #12 |
Участник
|
У нас пользователи очень часто при фильтрации данных не вызывали окно настройки фильтра, а так прямо напрямую в поле таблице и писали фильтр. Разумеется, раз произошла прямая правка данных, значение изменяется. Поскольку у Вас вводится не существующее значение (со спец.символами), то значение "затирается" пустым значением.
У меня вопрос: почему у Вас в форме проводок вообще можно редактировать напрямую эти самые проводки? Почему Вы не заблокируете DataSource у этой формы? В смысле, выставить запрет редактирования InventTrans.AllowEdit = No
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
28.04.2012, 14:49 | #13 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
У нас пользователи очень часто при фильтрации данных не вызывали окно настройки фильтра, а так прямо напрямую в поле таблице и писали фильтр. Разумеется, раз произошла прямая правка данных, значение изменяется. Поскольку у Вас вводится не существующее значение (со спец.символами), то значение "затирается" пустым значением.
У меня вопрос: почему у Вас в форме проводок вообще можно редактировать напрямую эти самые проводки? Почему Вы не заблокируете DataSource у этой формы? В смысле, выставить запрет редактирования InventTrans.AllowEdit = No |
|
28.04.2012, 15:14 | #14 |
Участник
|
А как вы делаете фильтрацию? Через фильтр по сетке или "фильтр по полю" из контекстного меню?
Я думаю что из контекстного - тогда точно ошибка такая же. Воспроизводится элементарно - открываем форму InventTrans, не передвигая курсор и не клацая ЛКМ нажимаем ПКМ на любой записи в поле StatusIssue или StatusReceipt, вызывая контекстное меню (на непустом значении). Делаем фильтр по полю - получаем багу. Вызываем паспорт записи - получаем багу. Лечится так, как я уже писал - присвоением непустой метки значению None
__________________
If it ain't broke, take it apart and find out why (с) Последний раз редактировалось Alexanderis.ua; 28.04.2012 в 15:48. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (3). |
28.04.2012, 16:16 | #15 |
Участник
|
Цитата:
Сообщение от Alexanderis.ua
А как вы делаете фильтрацию? Через фильтр по сетке или "фильтр по полю" из контекстного меню?
Я думаю что из контекстного - тогда точно ошибка такая же. Воспроизводится элементарно - открываем форму InventTrans, не передвигая курсор и не клацая ЛКМ нажимаем ПКМ на любой записи в поле StatusIssue или StatusReceipt, вызывая контекстное меню (на непустом значении). Делаем фильтр по полю - получаем багу. Вызываем паспорт записи - получаем багу. Лечится так, как я уже писал - присвоением непустой метки значению None Спасибо за советы всем. |
|