|
![]() |
#1 |
Участник
|
В поле BudgetDim могут указываться значения с учетом символов «,», «*», «..», «!».
Но даже если в нем будет указано не очень сложное условие фильтрации, например !Код6 или Код7*, то я, честно говоря, не представляю, как можно и на SQL составить запрос, где на LedgerJournalTrans.BudgetDimId будет наложено такое условие. |
|
![]() |
#2 |
Участник
|
Цитата:
X++: select LedgerJournalTrans exists join BankAccountTable where BankAccountTable.AccountId == LedgerJournalTrans.OffsetAccount && ( (BankAccountTable.rangeType == rangeType::Great && LedgerJournalTrans.BudgetDimId > BankAccountTable.rangeValue) || (BankAccountTable.rangeType == rangeType::Less && LedgerJournalTrans.BudgetDimId < BankAccountTable.rangeValue) || (BankAccountTable.rangeType == rangeType::Equal && LedgerJournalTrans.BudgetDimId == BankAccountTable.rangeValue) || ... ) |
|
![]() |
#3 |
Участник
|
Такой вариант подошел бы, если в этом поле всегда был только один критерий, но в плохом случае там можно указать сложный критерий: Код1,Код5* и т.п.
И еще я все-таки хочу получить этот запрос через query, а не через select. В форме диалога я по кнопке "Выбрать" выбираю банковские счета, и потом к полученному query добавляю LedgerJournalTrans. А насчет вложенных запросов можно поподробней, как их можно сделать через query, ни разу их не писала. |
|
![]() |
#4 |
Участник
|
Цитата:
Цитата:
Цитата:
X++: query = new Query(); qbds = query.addDataSource(tablenum(BankAccountTable)); queryLedgerJournalTrans = new Query(); qbds = LedgerJournalTrans.addDataSource(tablenum(LedgerJournalTrans)); qbrOffsetAccoun = qbds.addRange(fieldNum(LedgerJournalTrans, OffsetAccount)); qbrBudgetDim = qbds.addRange(fieldNum(LedgerJournalTrans, BudgetDim)); queryRun = new queryRun(query); while (queryRun.next()) { BankAccountTable = queryRun.get(tablenum(BankAccountTable)); qbrOffsetAccoun.value(queryvalue(BankAccountTable.AccountId)); qbrBudgetDim.value(BankAccountTable.BudgetDimId); queryRunLedgerJournalTrans = new queryRun(queryLedgerJournalTrans); while (queryRunLedgerJournalTrans.next()) { LedgerJournalTrans = queryRun.get(tablenum(LedgerJournalTrans)); ... } } Последний раз редактировалось S.Kuskov; 07.04.2010 в 12:55. |
|
|
За это сообщение автора поблагодарили: Raduga (1). |
![]() |
#5 |
Участник
|
Такой вариант работает, конечно, помедленнее, но зато съедает даже сложные критерии. Спасибо, так все получилось.
|
|
Теги |
query, range |
|
![]() |
||||
Тема | Ответов | |||
Проблема с SQL запросом | 15 | |||
Проблема с запросом | 2 | |||
Проблема с запросом | 7 | |||
Проблема с созданием объекта | 33 | |||
Проблема: русские шрифты в отчетах, формируемых на сервере. | 3 |
|