AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2012, 12:12   #1  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
значение из realControl
Здравствуйте.

В гриде есть realcontrol у которого вызывается loopup - форма которая использует значение из realcontrol. Если пользователь ввел некое значение в realcontrol и нажал lookup, значение realcontrol восстанавливается по значению таблицы.
1) Как получить текущее значение в realcontrol
2) Как до перехода в соседнее поле синхронизировать значение в realcontrol со значением в таблице

С уважением, Дмитрий.
Старый 21.02.2012, 12:38   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DmitryK Посмотреть сообщение
Если пользователь ввел некое значение в realcontrol и нажал lookup, значение realcontrol восстанавливается по значению таблицы.
Бр... Ничего не понял. Что значит "восстанавливается по значению таблицы"? Лукап форма стандартная или самописная?

1) Получить где? В лукап форме? После закрытия лукап формы? И самое главное для чего?
2) Синхронизировать - это значит в таблицу записать из контрола или наоборот из контрола в таблицу?

У вас контрол связан с источником данных?
ds.write() запишит курсор в БД.
ds.reread() наоборот перечитает курсор из БД и значения в курсоре источника данных обновяться.
ds.refresh() - обновит значения связанных с источником данных контролов.
Старый 21.02.2012, 13:13   #3  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Извините, Сергей, попробую подробней.
1) Форма самописная, должна сделать варианты пересчета значения в realControl
2) Контрол связан с источником данных
3) Пользователь вводит/меняет значение в realcontrol.
4) Вызывается lookup, значение введенное пользователем заменяется значением из datasource

Если пользователь после ввода значения переходит на следующее поле (происходит запись в datasource) и после возвращается и вызывает lookup, то соответственно - все хорошо.
Попробывал под отладчиком. В источнике данных 5.5, в realcontrol изменяю на 10, спрашиваю как текст control.ValueStr возвращает 5.5 Соответственно 2 подхода, как мне кажется...
1) Есть ли возможность получить значение В ДАННЫЙ момент введенное в control и еще не синхронизированное с datasourse?
2) Перед вызовом lookup принудительно синхронизировать ТЕКУЩЕЕ значение контрола с datasource?

Мне кажется, что первый вариант лучше, если он возможен...

C уважением, Дмитрий.
Старый 21.02.2012, 13:27   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от DmitryK Посмотреть сообщение
Извините, Сергей, попробую подробней.
1) Форма самописная, должна сделать варианты пересчета значения в realControl
2) Контрол связан с источником данных
3) Пользователь вводит/меняет значение в realcontrol.
4) Вызывается lookup, значение введенное пользователем заменяется значением из datasource

Если пользователь после ввода значения переходит на следующее поле (происходит запись в datasource) и после возвращается и вызывает lookup, то соответственно - все хорошо.
Попробывал под отладчиком. В источнике данных 5.5, в realcontrol изменяю на 10, спрашиваю как текст control.ValueStr возвращает 5.5 Соответственно 2 подхода, как мне кажется...
1) Есть ли возможность получить значение В ДАННЫЙ момент введенное в control и еще не синхронизированное с datasourse?
2) Перед вызовом lookup принудительно синхронизировать ТЕКУЩЕЕ значение контрола с datasource?

Мне кажется, что первый вариант лучше, если он возможен...

C уважением, Дмитрий.
конечно данные введенные в поле при открытии lookUp заменяются тем значением что есть в базе, ведь новое введенное значение ещё не сохранено в системе!

если нужно что бы при открытии lookUp введенное значение сохранялось, тогда можете в методе lookUp до вызова super() (ну или до вызова построения и вывода Вашего lookUp) написать ds.write() (только надо учесть, что сохранятся все измененные поля), т.е. принудительно сохранить введенные значения в курсоре.

Единственно мне не очень понятно, зачем открывать lookUp на поле, когда туда введено не сохраненное значение. Какая собственно стоит задача? Может она решается как то по другому?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.02.2012, 13:56   #5  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Артем, lookup надо открывать так, так как это удобно пользователю, т.е. открытие lookup есть элемент изменения значения, специфического пересчета цен. Ввел, подправил, сохранил. А так получается ввел, сохранил, подправил, опять сохранил.
Ваше предложение по решению понятно, попробую его использовать.
Но так, для себя, было бы интересно получить напрямую значение из realcontrol, ведь в сущности это такой же editcontrol, так почему же нельзя?

С уважением, Дмитрий.
Старый 21.02.2012, 14:09   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DmitryK Посмотреть сообщение
Попробывал под отладчиком. В источнике данных 5.5, в realcontrol изменяю на 10, спрашиваю как текст control.ValueStr возвращает 5.5
Какая у вас версия системы? Не тройка? Помню была там какая-то проблема с valueStr. Проверьте что в данном случае вернёт control.realValue()?

Баг стандартного механизма перекрытия лукапа
Старый 21.02.2012, 14:24   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от DmitryK Посмотреть сообщение
Артем, lookup надо открывать так, так как это удобно пользователю, т.е. открытие lookup есть элемент изменения значения, специфического пересчета цен. Ввел, подправил, сохранил. А так получается ввел, сохранил, подправил, опять сохранил.
Ваше предложение по решению понятно, попробую его использовать.
Но так, для себя, было бы интересно получить напрямую значение из realcontrol, ведь в сущности это такой же editcontrol, так почему же нельзя?

С уважением, Дмитрий.
Я как раз к тому и клонил, что бы человек просто, открыл лукап, выполнил расчет, сохранил полученную цифру в строке.
Т.е. можно придти к вводу цифры сразу, без уточнений и прочего. Я бы настоятельно рекомендовал пользователю вместо алгоритма:
  1. Ввел значение в поле
  2. Открыл лукап, выполнил более точный расчет
  3. Сохранил полученное точное значение

следовать алгоритму:
  1. Открыл лукап, расчитал сразу точную цифру
  2. Сохранил полученное точное значение
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 21.02.2012, 14:32   #8  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Сергей, у меня версия 2009, и действительно, Вы правы, realValue возвращает значение текущее в контроле, а valueStr из datasoursce. Забавно... Неисповедимы пути господни...

Большое спасибо! )
C уваженем, Дмитрий.
Старый 21.02.2012, 14:43   #9  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Артем, конечно, в общем, Вы правы.

Но есть единый механизм, где по правам, один вид пользователей просто вводит число, а другой, имеет право проделать с ним магические преобразования с помощью lookup.

Артем, попробывал перед вызовом lookup, в методе lookup контрола, сделать element.dataSource().write();
В результате lookup сразу закрывается.
Не посоветуете где можно сделать запись?

C уважением, Дмитрий.

Последний раз редактировалось DmitryK; 21.02.2012 в 15:12.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить значение qbr .. propeller DAX: Программирование 2 07.11.2009 00:19
Ошибка XML в "Таблица" Причина: Ошибочное значение Poleax DAX: Программирование 7 08.10.2009 16:45
теряется значение переменной laxel DAX: Программирование 3 05.02.2009 10:07
Не берется значение контрола Sada DAX: Программирование 11 21.06.2006 10:24
Как при вводе новой записи установить значение поля по умолчанию Zman DAX: Программирование 3 17.01.2005 10:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:05.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.