18.06.2015, 09:56 | #1 |
Участник
|
Оператор IN
Через AddRange все понятно, он сам берет и проверяет на вхождение в диапазон разбивая его на OR.
А через Select как? Оператора IN нет, а чем заменить? like даже не подойдет, т.к. может быть и значение "520" и "5201", и 520 не должен определиться,если выбран 5201. |
|
18.06.2015, 10:05 | #2 |
Участник
|
select a
where a.field1 == "5201"
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
18.06.2015, 10:14 | #3 |
Участник
|
|
|
18.06.2015, 10:52 | #4 |
Участник
|
Например, вот так:
X++: select a where (a.field1 == "5201" || a.field1 == "54" || a.field1 == "52") |
|
18.06.2015, 10:58 | #5 |
Гость
|
|
|
18.06.2015, 11:04 | #6 |
Участник
|
|
|
18.06.2015, 11:14 | #7 |
Участник
|
можно еще почитать тут: select в X++ и список значений в условии where
|
|
|
За это сообщение автора поблагодарили: trudel (1). |
18.06.2015, 11:37 | #8 |
Участник
|
Цитата:
Сообщение от _AV_
можно еще почитать тут: select в X++ и список значений в условии where
|
|
18.06.2015, 11:45 | #9 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: IvanS (1). |
18.06.2015, 12:59 | #10 |
Участник
|
|
|
18.06.2015, 13:03 | #11 |
Участник
|
Помниться разгребал чейто код (наверное MS) в славном модуле PSA в ах2009. Все было настолько запущено, что мало того что форма минуты грузилась так еще и при определенных обстоятельствах SQL запрос выезжал за рамки максимального буфера (был по умолчанию 24Кб).
К чему это я? На той форме как раз ктото напрограмировал динамичиские range.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
19.06.2015, 09:33 | #12 |
Участник
|
|
|
23.06.2015, 06:35 | #13 |
Участник
|
Если ТС хочет использовать SELECT, что мешает ему написать как уже советовали:
__________________
// no comments |
|
23.06.2015, 08:16 | #14 |
Участник
|
|
|
23.06.2015, 08:53 | #15 |
NavAx
|
Да собственно самое страшное в нем то, что его путают с sql select.
И поэтому вариант в цикле перебрать значения, которые вы хотите запихать в IN и вызвать select a where a.field1 == value соответствующее число раз противоречит всем инстинктам человека более-менее знающего sql. Даже у опытных аксапщиков такой подход вызывает интуитивное неприятие. А между тем, при правильной настройке кэширования AOS отрабатывает зацикленные запросы не сильно хуже одного, монструозного. А читать, писать и дебажить циклы несравнимо легче чем sql. Похожесть конструкции на sql настолько взрывает мозг, что даже в официальные best practice внесли идиотское требование в x++ select указывать список выбираемых полей. Это вопервых приводит к трудноуловимым runtime багам, вовторых отрубает кэширование, из-за чего резко падает производительность системы (хотя скорость исполнения конкретного запроса действительно может вырости). На самом деле x++ select это не запрос, а factory метод. Но синтаксис сбивает с толку.
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 23.06.2015 в 08:59. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |