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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2006, 13:50   #1  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Проблема с диалоговой формой
На диалоговой форме есть поле, выбираю в нем значение и подставляю его в select, запрос ничего не возвращает, в чем может быть проблема? вот вырезки из кода:

Код:
    ItemGroupId             GroupId;
...
    dlgGroupId = dialog.addField(typeid(ItemGroupId), "Ном. группа");
    GroupId = dlgGroupId.value();
...
    while select ItemGroupId, Name from _IIG
    where _IIG.ItemGroupId==GroupId
Старый 06.07.2006, 14:02   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Проблема, скорей всего в том, что значение из DialogField нужно считывать не сразу, а в методе getFromDialog - или, если проще, после закрытия диалога с нажатием OK (dialog.closedOK())

Потому что после создания поля в нем еще нет значения.
Старый 06.07.2006, 14:09   #3  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Чета не подумал
Большое спасибо!
Старый 06.07.2006, 14:23   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Кстати, для динамического получения/изменения параметров пишутся parm -методы:
X++:
myType parmMyValue(myType _value = value)
{
    value = _value;
    return value;
}
Где value-это глобальная переменная. А с помощью этого метода можно в любой момент получить или установить переменную.

В диалоге, конструируемого из RunBase, обычно заполняется объект вызывающего класса - наследника RunBase, так что ссылка на класс уже есть. Т.о, можно вызвать и метод класса.

Но это так, размышления. Правильней все дела, как Иван написал. И как в tutorial_RunBase сделано

С Уважением,
Георгий
Старый 06.07.2006, 15:37   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Thumbs up
Цитата:
Сообщение от Protey
Чета не подумал
Большое спасибо!
Спасибо много, а вот клик по зеленому квадратику - как раз!
За это сообщение автора поблагодарили: Protey (1).
Старый 07.07.2006, 09:27   #6  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Еще такой вопрос, при получении значения из поля, вставляю его в условие where, столкнулся с такой проблемой, если ничего не выбрать то запрос ничего не выбирает, потому что в переменной храниться пустота, как это решить без if?
Старый 07.07.2006, 09:39   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Так пойдет?
X++:
select * from myTable
            where (!value || myTable.MyField  == value);
Старый 07.07.2006, 10:14   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Protey
Еще такой вопрос, при получении значения из поля, вставляю его в условие where, столкнулся с такой проблемой, если ничего не выбрать то запрос ничего не выбирает, потому что в переменной храниться пустота, как это решить без if?
А если пользоваться классами QueryBuild, то в QueryBuildRange просто передать значение. и если оно пустое (''), то фильтрации по этому полю не будет.
Старый 07.07.2006, 10:18   #9  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Цитата:
Сообщение от oip
X++:
select * from myTable
            where (!value || myTable.MyField  == value);
Неа, не помогает, ничего не возвращает
Старый 07.07.2006, 10:19   #10  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от kashperuk
А если пользоваться классами QueryBuild, то в QueryBuildRange просто передать значение. и если оно пустое (''), то фильтрации по этому полю не будет.
Тоже верно. Но я, например, не люблю ради обычного селекта кваери использовать. Громоздко очень получается.

Цитата:
Сообщение от Protey
Неа, не помогает, ничего не возвращает
Что значит ничего не позвращает? Если Value пусто, то условие where всегда равно true и берется простой селект без ренджа, а если value не пусто, то срабатывает рендж на MyField.

Последний раз редактировалось oip; 07.07.2006 в 10:22.
Старый 07.07.2006, 10:29   #11  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
X++:
static void Job26(Args _args)
{
    CustTable custTable;
    Name      name1 = '';
    Name      name2 = 'альфа'

;
    // выводит весь список клиентов
    while select * from custTable
        where (!name1 || custTable.Name == name1)
    {
       info (custTable.Name);
    }

    // выводит только клиента 'альфа'
    while select * from custTable
        where (!name2 || custTable.Name == name2)
    {
       info (custTable.Name);
    }
}
Старый 07.07.2006, 10:46   #12  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Извиняюсь, мой косяк, данные немного неправильно с формы забирал Все ок, спасибо!!!
Старый 07.07.2006, 10:47   #13  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Спасибо много, а вот клик по зеленому квадратику - как раз! (c)
За это сообщение автора поблагодарили: kashperuk (1), Protey (1).
Старый 07.07.2006, 10:48   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от oip
Спасибо много, а вот клик по зеленому квадратику - как раз! (c)
Старый 07.07.2006, 13:52   #15  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
Может опять что-то всем известное спрошу, как сделать свой небольшой выпадающий справочник из нескольких значений?
Старый 07.07.2006, 14:11   #16  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Создать свой BaseEnum И написать:
X++:
dialog.addField(typeId(BaseEnum1)
Старый 07.07.2006, 14:17   #17  
Protey is offline
Protey
Участник
 
143 / 15 (1) ++
Регистрация: 22.09.2005
Адрес: Сургут
)) Благодарю
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с формой строк журнала спец. ZVV DAX: Программирование 7 24.03.2008 17:13
Проблема с lookup-формой gefr DAX: Программирование 8 28.03.2007 17:52
Проблема с Web-формой в Axapta 3.0 KingPeas DAX: Программирование 0 09.01.2007 06:26
Проблема с формой Закупки (PurchTable) - неправильно отображается аналитика Партия AndK DAX: Функционал 7 11.04.2005 17:17
Проблема с формой - "Insufficient rights..." kr0m DAX: Функционал 2 22.08.2003 01:33

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

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

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