|
10.11.2013, 01:48 | #1 |
Участник
|
Query одно условие по разным полям
Добрый день! Помогите новичку разобраться.
Есть таблица, назовем ее просто Table, среди полей которой есть несколько полей типа Дата. назовем их Date1, Date2, Date3 Мне надо построить Query который отберет из нее записи указанного диапазона дат, при том что дата начала или дата конца может быть и не указана. В общем что-то типа этого: if (fromDate || toDate) qbds.addRange(fieldnum(Table, Date1)).value(SysQuery::range(fromDate, toDate)); Но чуть позже мне потребовалось строить хитрое условие, при котором я должен выбирать запись, если значение Date1(если оно там есть) попадает в указанный диапазон (fromDate, toDate), а если там(в Date1) значения нет, то проверить входит ли в указанный диапазон Date2, если оно заполнено. То есть, если заполнено Date1 проверить на вхождение его в диапазон, а если там значения нет, проверить на то же самое поле Date2. Последний раз редактировалось Andy-k; 10.11.2013 в 02:13. |
|
10.11.2013, 08:07 | #2 |
Участник
|
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: Andy-k (1). |
11.11.2013, 08:11 | #3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Andy-k (1). |
11.11.2013, 13:01 | #4 |
Участник
|
|
|
11.11.2013, 19:28 | #5 |
Участник
|
Ребят, спасибо! После прочтения я понял, как мне этого не хватало до этого
|
|
28.01.2014, 17:50 | #6 |
Участник
|
вопрос по запросу
Подскажите, пожалуйста, такой синтаксис работает на MS DAX 4.0 ?
queryBuildRange.value(strFmt('((ItemType == %1) || (ItemId == "%2"))', any2int(ItemType::Service), queryValue("Item1"))); У меня ошибку выдает: Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 24. Может я что-то делаю не так? Цель запроса: отобрать основной договор и все подчиненные. X++: static void Job7(Args _args) { Query query = new Query(); QueryBuildDatasource qbds = query.addDataSource(tableNum(RContractTable)); QueryBuildRange qbr; QueryRun qr; RContractTable contractTable; ; qbr = qbds.addRange(fieldnum(RContractTable, RContractAccount)); qbr = qbds.addRange(fieldnum(RContractTable, ML_RContractParentAccount)); qbr.value(strFmt('((RContractAccount == %1) || (ML_RContractParentAccount == "%2"))', "Дог0001", "Дог0001")); qr = new QueryRun(query); while (qr.next()) { contractTable = qr.get(tableNum(RContractTable)); } } |
|
28.01.2014, 17:59 | #7 |
Участник
|
а вот так
X++: qbr.value(strFmt('((RContractAccount == "%1") || (ML_RContractParentAccount == "%2"))', "Дог0001", "Дог0001")); |
|
28.01.2014, 18:47 | #8 |
Участник
|
Цитата:
Возможно, проблема скрыта в этих строчках: qbr = qbds.addRange(fieldnum(RContractTable, RContractAccount)); qbr = qbds.addRange(fieldnum(RContractTable, ML_RContractParentAccount)); Но не пойму как по другому связать QueryBuildRange и QueryBuildDatasource. Последний раз редактировалось DAX13; 28.01.2014 в 18:56. |
|
28.01.2014, 18:51 | #9 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: DAX13 (1). |