Показать сообщение отдельно
Старый 05.10.2004, 15:54   #1  
simply2double is offline
simply2double
Участник
Аватар для simply2double
 
556 / 19 (2) ++
Регистрация: 08.09.2004
Адрес: alfa cen
? ох уж этот QueryRun
Помогите разобраться... может свежим взглядом все покажеться простым ...

PHP код:
QueryRun  query;

    ;

//  Выбираю проводки журнала проводок 
//  Создаю QueryRun на базе готового представления
    
query = new QueryRun(querystr(InventJournalTrans));
//  подвязываю таблицу InventTrans
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(InventTrans)).joinMode(JOINMODE::InnerJoin);
    
query.query().dataSourceTable(tableNum(InventTrans)).addLink(fieldNum(InventJournalTransInventTransId), fieldNum(InventTransInventTransId));
//  Ставлю фильтр по коду журнала MyJournalId
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).rangeField(fieldNum(InventJournalTransJournalId)).value(queryValue(MyJournalId));
//  Возможно это лишнее
    
query.query().dataSourceTable(tableNum(InventTrans)).rangeField(fieldNum(InventTransStatusIssue)).value(queryValue(enum2str(statusIssue::None)));
    
query.query().dataSourceTable(tableNum(InventTrans)).addRange(fieldNum(InventTransStatusReceipt)).value(queryValue(enum2str(statusReceipt::Purchased)));
//  Прилинковываю третью таблицу, с помощью полей TranstableId и TransRecId
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(MyTable)).joinMode(JOINMODE::InnerJoin);
    
query.query().dataSourceTable(tableNum(MyTable)).addLink(fieldNum(InventJournalTransTableId), fieldNum(MyTable TransTableId));
    
query.query().dataSourceTable(tableNum(MyTable )).addLink(fieldNum(InventJournalTransRecId), fieldNum(MyTableTransRecId));
//  Ставлю фильтр по двум полям этой таблицы
     
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTable,MyTransRecId)).value(queryValue(MyValue1));
     
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTableSelected)).value(queryValue(NoYes::Yes))

    return 
query
В результате хотелось иметь записи InventJournalTrans отфильтрованные по номеру журнала и двум полям третьей таблицы. В сикуэл это выглядит довольно просто:

PHP код:
SELECT     INVENTJOURNALTRANS.JOURNALIDINVENTJOURNALTRANS.RECIDMYTABLE.SELECTEDINVENTTRANS.QTYINVENTTRANS.ITEMID
FROM         INVENTTRANS 
INNER JOIN   INVENTJOURNALTRANS ON INVENTTRANS
.DATAAREAID INVENTJOURNALTRANS.DATAAREAID AND 
                                   
INVENTTRANS.INVENTTRANSID INVENTJOURNALTRANS.INVENTTRANSID 
INNER JOIN   MYTABLE  ON INVENTTRANS
.DATAAREAID MYTABLE .DATAAREAID AND 
                                         
INVENTJOURNALTRANS.RECID MYTABLE .TRANSRECID
WHERE     
(INVENTJOURNALTRANS.JOURNALID 'IV03000034') AND 
          (
INVENTTRANS.STATUSISSUE 0) AND 
          (
INVENTTRANS.STATUSRECEIPT 1) AND 
          (
MYTABLE .SELECTED 1) AND
          (
MYTABLE .MYTRANSRECID MyValue1
но у меня вываливаются все сочетания... где я неправ ???