17.05.2011, 11:19 | #1 |
newborn in DAX
|
if exists (select... where ...)
Можно ли сделать методе run что-то подобное
if exists (select... where ...) {... } else {... } если есть данные - одни действия если вернулся null то другие. как узнать что это null или дата. Спасибо |
|
17.05.2011, 11:31 | #2 |
MCTS
|
Можно так, например:
X++: static void Job(Args _args) { ; if ((select firstonly InventTable where InventTable.ItemId == 'itemId').RecId) { info('yes'); } else { info('no') } } |
|
17.05.2011, 11:32 | #3 |
Участник
|
Нужно что так:
select InventTable where .... ; if ( InventTable ) { } else { }
__________________
В подводной охоте главное вдох ... |
|
17.05.2011, 11:33 | #4 |
Участник
|
опередил
__________________
В подводной охоте главное вдох ... |
|
17.05.2011, 11:33 | #5 |
Участник
|
Можно. Только синтаксис немного иной.
select в аксапте ничего не возвращает. Вместо этого он инициализирует соответствующий табличный курсор. Т.е. делать нужно так X++: select MyTable where ... ; if (MyTable != NULL) { ... } else { ... } Способ, предложенный IvanOFF, основывается на сокращённой форме оператора select. Не все запросы можно привести к такому виду. Но когда это возможно, то получается вполне лаконично. Последний раз редактировалось S.Kuskov; 17.05.2011 в 11:53. |
|
|
За это сообщение автора поблагодарили: timaluhs (1). |
17.05.2011, 12:32 | #6 |
Читатель
|
типа так?
X++: if ((select firstonly RecId from SalesTable where SalesTable.SalesId == "З00001").RecId) { } else { } Последний раз редактировалось b_nosoff; 17.05.2011 в 12:36. |
|
17.05.2011, 12:33 | #7 |
Участник
|
select firstonly table.recId where ...
if (table.RecId != 0) {... } else {... } |
|
17.05.2011, 14:22 | #8 |
Ищущий знания...
|
ээ, вообщето по Best Practices на таблице должно быть два метода это Find() и Exist(), которые как правило выполняют выборку по уникальному индексу.
и для Вашего случая код должен выглядеть так: X++: if (MyTable::Exist(codeId))
{
}
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: pitersky (2), timaluhs (1). |
17.05.2011, 14:39 | #9 |
Участник
|
А счего вы взяли, что у автора топика условие where соответствует методу exist? Нет, если всё укладывается в банальный поиск по ключевому полю, то использования метода exist будет самым верным решением. Но вообще говоря, запрос может быть сколь угодно сложным, поэтому не стоит вводить автора в заблуждение
|
|
|
За это сообщение автора поблагодарили: driller (2). |
17.05.2011, 15:35 | #10 |
Ищущий знания...
|
Цитата:
Сообщение от S.Kuskov
А счего вы взяли, что у автора топика условие where соответствует методу exist? Нет, если всё укладывается в банальный поиск по ключевому полю, то использования метода exist будет самым верным решением. Но вообще говоря, запрос может быть сколь угодно сложным, поэтому не стоит вводить автора в заблуждение
судя по коду который был приведен, я додумался что скорее всего автору нужно именно это если вдруг это какой то специфически накрученный запрос, то конечно будет писаться запрос, и выполняться проверка на то, что значение RecId не равно нулю
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: driller (0). |
18.05.2011, 15:06 | #11 |
северный Будда
|
Цитата:
Сообщение от S.Kuskov
А счего вы взяли, что у автора топика условие where соответствует методу exist? Нет, если всё укладывается в банальный поиск по ключевому полю, то использования метода exist будет самым верным решением. Но вообще говоря, запрос может быть сколь угодно сложным, поэтому не стоит вводить автора в заблуждение
Т.е. предложенная автором тему конструкция рабочая, но малочитабельная и негибкая. Я бы так писать точно не стал
__________________
С уважением, Вячеслав |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), kpoxa (0). |