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