Показать сообщение отдельно
Старый 20.04.2006, 14:13   #1  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
? Сложный Query: непонятки с Enum-ами
Цель, создать вот такой вот Query
Код:
while select ledgerJournalTrans
        where ledgerJournalTrans.TransDate == todayDate
           && ledgerJournalTrans.AccountType == LedgerJournalACType::Cust
    exists join ledgerJournalTransLink
        where (ledgerJournalTransLink.Voucher     == ledgerJournalTrans.Voucher
               && ledgerJournalTransLink.TransDate   == ledgerJournalTrans.TransDate
              )&& 
               (ledgerJournalTransLink.AccountType == LedgerJournalACType::Bank ||
               (ledgerJournalTransLink.AccountType == LedgerJournalACType::Cust
                && ledgerJournalTransLink.OffsetAccountType == LedgerJournalACType::Bank))
{...}
Делаю:
Код:
value = strfmt('((%1 == "%2") || ((%3 == "%4") && (%5 == "%6")))',
                    fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, AccountType)),
                    queryValue(LedgerJournalACType::Bank),
                    fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, AccountType)),
                    queryValue(LedgerJournalACType::Cust),
                    fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, OffsetAccountType)),
                    queryValue(LedgerJournalACType::Bank));

    linkedQbds.addRange(fieldNum(LedgerJournalTrans, DataAreaId)).value(value);
С точки зрения синтаксиса, на сервер запрос отправляется, как раз такой, какой нужен, но вот беда. Индексы Enum-ов какие то бредовые
Код:
...
((B.ACCOUNTTYPE=193) OR ((B.ACCOUNTTYPE=202) AND (B.OFFSETACCOUNTTYPE=193))))
...
Что делать не ясно, мысли кончились. Если вместо queryValue(LedgerJournalACType::Bank) написать queryValue(6) на сервер уходит запрос с другими индексами Enum-ов, но не менее бредовыми. Может кто сталкивался и составлял "хитрые запросы" с участием Enum- полей? А то уже не ясно, что делать дальше