![]() |
#1 |
Участник
|
Проблема с диалоговой формой
На диалоговой форме есть поле, выбираю в нем значение и подставляю его в select, запрос ничего не возвращает, в чем может быть проблема? вот вырезки из кода:
Код: ItemGroupId GroupId; ... dlgGroupId = dialog.addField(typeid(ItemGroupId), "Ном. группа"); GroupId = dlgGroupId.value(); ... while select ItemGroupId, Name from _IIG where _IIG.ItemGroupId==GroupId |
|
![]() |
#2 |
Участник
|
Проблема, скорей всего в том, что значение из DialogField нужно считывать не сразу, а в методе getFromDialog - или, если проще, после закрытия диалога с нажатием OK (dialog.closedOK())
Потому что после создания поля в нем еще нет значения. |
|
![]() |
#3 |
Участник
|
Чета не подумал
![]() Большое спасибо! |
|
![]() |
#4 |
Модератор
|
Кстати, для динамического получения/изменения параметров пишутся parm -методы:
X++: myType parmMyValue(myType _value = value)
{
value = _value;
return value;
} В диалоге, конструируемого из RunBase, обычно заполняется объект вызывающего класса - наследника RunBase, так что ссылка на класс уже есть. Т.о, можно вызвать и метод класса. Но это так, размышления. Правильней все дела, как Иван написал. И как в tutorial_RunBase сделано ![]() С Уважением, Георгий |
|
![]() |
#5 |
Участник
|
![]() Цитата:
Сообщение от Protey
Чета не подумал
![]() Большое спасибо! ![]() |
|
|
За это сообщение автора поблагодарили: Protey (1). |
![]() |
#6 |
Участник
|
Еще такой вопрос, при получении значения из поля, вставляю его в условие where, столкнулся с такой проблемой, если ничего не выбрать то запрос ничего не выбирает, потому что в переменной храниться пустота, как это решить без if?
|
|
![]() |
#7 |
Axapta
|
Так пойдет?
X++: select * from myTable where (!value || myTable.MyField == value); |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от Protey
Еще такой вопрос, при получении значения из поля, вставляю его в условие where, столкнулся с такой проблемой, если ничего не выбрать то запрос ничего не выбирает, потому что в переменной храниться пустота, как это решить без if?
|
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от oip
X++: select * from myTable where (!value || myTable.MyField == value); |
|
![]() |
#10 |
Axapta
|
Цитата:
Сообщение от kashperuk
А если пользоваться классами QueryBuild, то в QueryBuildRange просто передать значение. и если оно пустое (''), то фильтрации по этому полю не будет.
![]() Цитата:
Сообщение от Protey
Неа, не помогает, ничего не возвращает
Последний раз редактировалось oip; 07.07.2006 в 10:22. |
|
![]() |
#11 |
Axapta
|
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); } } |
|
![]() |
#12 |
Участник
|
Извиняюсь, мой косяк, данные немного неправильно с формы забирал
![]() |
|
![]() |
#13 |
Axapta
|
Спасибо много, а вот клик по зеленому квадратику - как раз! (c)
![]() |
|
|
За это сообщение автора поблагодарили: kashperuk (1), Protey (1). |
![]() |
#14 |
Участник
|
Цитата:
Сообщение от oip
Спасибо много, а вот клик по зеленому квадратику - как раз! (c)
![]() ![]() |
|
![]() |
#15 |
Участник
|
Может опять что-то всем известное спрошу, как сделать свой небольшой выпадающий справочник из нескольких значений?
|
|
![]() |
#16 |
Axapta
|
Создать свой BaseEnum И написать:
X++: dialog.addField(typeId(BaseEnum1) |
|
![]() |
#17 |
Участник
|
![]() |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|