Показать сообщение отдельно
Старый 07.04.2010, 12:52   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,444 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Raduga Посмотреть сообщение
Такой вариант подошел бы, если в этом поле всегда был только один критерий, но в плохом случае там можно указать сложный критерий: Код1,Код5* и т.п.
и это можно сделать, только чуть сложнее. Как я уже писал пришлось бы добавлять ещё одну таблицу, для хранения критериев не "через запятую" а какждый в своей строчке.

Цитата:
Сообщение от Raduga Посмотреть сообщение
И еще я все-таки хочу получить этот запрос через query, а не через select.
Всё что можно сделать через select - можно сделать и через query.

Цитата:
Сообщение от Raduga Посмотреть сообщение
А насчет вложенных запросов можно поподробней, как их можно сделать через query, ни разу их не писала.
Я имел в виду что возможно не стоит пытаться обойти все строки LedgerJournalTrans за один раз, а пройтись по каждому выбранному BankAccountTable и отрабатывать каждый конкретный критерий по отдельности.
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).