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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.08.2011, 16:41   #1  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Множественное значение
Здраствуйте! Подскажите какой control надо на форму кинуть, чтобы обрабатывать значения типа: 2*, 3* или !2, 3* (чтобы можно запятыми разделять было) - сейчас кинул IntEdit, он не дает этого сделать. Может надо дописать метод какой?И как такие числа в памяти отображаются, я так понимаю 2* значит 2000-2999??? Спасибо!
Старый 18.08.2011, 16:47   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
сейчас кинул IntEdit, он не дает этого сделать.
Попробуйте StringEdit
Старый 18.08.2011, 17:06   #3  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Какой вопрос - такой ответ

Как вы хотите использовать это поле?
__________________
Ivanhoe as is..
Старый 18.08.2011, 17:14   #4  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
В это поле будет вводиться статья затрат, затем значение control'a будет использованно в while select. Я кинул StringEdit и из него получаю значение, то что нужно! Спасибо S.Kuskov ))) Мне интересно каким образом оно в памяти представлено? Введя 2* под отладчиком увидел в значении - 2. Спасибо за помошь!
Старый 18.08.2011, 17:26   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Забавно, а селект то правильно работает? Можете привести код селекта?
__________________
Ivanhoe as is..
Старый 18.08.2011, 19:23   #6  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Сейчас не на работе)) Поэтому примерно так выглядит
vendDim = str2int(StrEdit.valueStr());
X++:
while select _vendTrans 
where _vendTrans.Dimension[2] == vendDim
&& _vendTrans.TransDate >= toDate && _vendTrans.TransDate <= fromDate
{
<-     . VendTable        
}
Select достаточно прост как видите)))

Последний раз редактировалось JuniorAx; 18.08.2011 в 19:26.
Старый 18.08.2011, 19:48   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А можно вопрос? Почему вы вообще решили что вам нужно целочисленное, а не строковое значение?

Поле _vendTrans.Dimension[2] хранит текстовое, а не числовое значение. Поэтому переменная vendDim из вашего примера тоже должна быть объявлена как строка. Соответственно при инициализации этой переменной не нужно использовать функцию преобразования из строки в число str2int.
X++:
// Вместо
// vendDim = str2int(StrEdit.valueStr());
vendDim = StrEdit.valueStr();

Последний раз редактировалось S.Kuskov; 18.08.2011 в 20:02.
Старый 18.08.2011, 20:00   #8  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Невнимательность и поспешность! :-) Спасибо!
Старый 18.08.2011, 20:22   #9  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Я что-то не понимаю? Вы, похоже, хотите написать в поле "2*" и получить в выборке все значения аналитики, начинающиеся с двойки? Это не будет работать.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: JuniorAx (1).
Старый 18.08.2011, 20:32   #10  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Да. Именно так и хочу, сделать, причем еще, чтобы была возможность, делать это сразу по нескольким статьям расходов. т.е. можно писать "2*, 3*, 4*". В чем моя ошибка не подскажете???
Старый 18.08.2011, 20:38   #11  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Можно использовать в условии вместо равенства like. Но он работае только для маски, несколько условий через запятую передать нельзя
Для этого переделайте на использование Query - в Range можно задавать сложные условия, в том числе и множественные
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 18.08.2011 в 20:50.
Старый 18.08.2011, 21:01   #12  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
qbds.addRange(value(vendDim)) - я так понимаю??? Сейчас Axapt'ы под рукой нет, не могу поэксперементировать.
Старый 19.08.2011, 08:00   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
qbds.addRange(value(vendDim)) - я так понимаю???
Ага. Только без value, а точнее без queryValue. Эта функция предназначена как раз для того чтобы экранировать спец.символы. Т.е., грубо говоря, при её спользовании вы получите вместо Like просто равенство.
Старый 19.08.2011, 08:01   #14  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Если имелось в виду SysQuery::Value(), то нет. Этот метод экранирует переданные метасимволы.

Можно передавать условие так SysQuery::FindOrCreateRange(qbds, fieldId2Ext( fieldNum(VendTrans, Dimension), 2)).value(vendDim), либо так qbds.addRange(fieldId2Ext(fieldNum(VendTrans, Dimension), 2)).value(vendDim).
Во втором случае, при каждом вызове addRange() будет добавляться новое условие.
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: JuniorAx (1).
Старый 19.08.2011, 08:10   #15  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от AndyD Посмотреть сообщение
Во втором случае, при каждом вызове addRange() будет добавляться новое условие.
Просто уточню, что каждое новое условие будет присоединяться к предыдущим через логическую операцию OR, т.е. ИЛИ
За это сообщение автора поблагодарили: JuniorAx (1).
Старый 19.08.2011, 09:02   #16  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Спасибо большое!!!
Старый 19.08.2011, 09:32   #17  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Использовать в селектах ограничение по значению финаналитики ИМХО - очень нездоровое решение. Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040. Я бы сделал по-другому
1) добавил в custTrans новое поле NewCheckBox
2) Заполнял его в момент разноски накладной, если она удовлетворяет нужным критериям (например, по значению финаналитики)
3) В селектах по custTrans отбирал бы строки со значением NewCheckBox == true.
__________________
С уважением,
Вячеслав
Старый 19.08.2011, 09:52   #18  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pitersky Посмотреть сообщение
Использовать в селектах ограничение по значению финаналитики ИМХО - очень нездоровое решение. Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040. Я бы сделал по-другому
1) добавил в custTrans новое поле NewCheckBox
2) Заполнял его в момент разноски накладной, если она удовлетворяет нужным критериям (например, по значению финаналитики)
3) В селектах по custTrans отбирал бы строки со значением NewCheckBox == true.
Спорное решение. Причины должны быть очень вескими, чтобы решиться пойти на этот шаг. Ради каждого отчёта плодить новое поле в таблице проводок - это не панацея.
Старый 19.08.2011, 10:09   #19  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Моя задача написать отчет по статьям затрат, поэтому и плясать от неё я и хочу. Нужно выводить статью затрат и все проводки поставщиков по ней с указанием кода, имени поставщика, суммы, даты и тексьта проводки! Все это, за исключением имени есть в VendTrans! И мне уже сейчас надо, реализовать
Цитата:
Сегодня вам нужно отобрать 2*, а завтра понадобится 2*, 31??, !4040.
:-) Собственно поэтому я и спрашивал как обрабатываются такие значения в коде!
Старый 19.08.2011, 10:50   #20  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ради каждого отчёта плодить новое поле в таблице проводок - это не панацея.
Наверное, надо было сразу написать, что это только для периодических обработок таблиц. Например, если нужно посчитать сумму проводок по набору статей для формирования бонуса менеджеру по продажам.
Ну и вообще финаналитика в моём понимании - это не источник данных для обработки, а инструмент управленческого анализа
__________________
С уважением,
Вячеслав
 

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:30.