Показать сообщение отдельно
Старый 14.05.2004, 14:38   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Копирование Range по имени (2.5)
Понадобилось мне скопировать набор range из одной таблицы в другую по одноименным полям.
Код, который воспроизводит данный процесс на тестовой формочке:
PHP код:
    Query                   qqn = new Query();
    
QueryBuildDataSource    qbDSqbDSn;
    
DictTable               dictTableSourdictTableDest;
    
FieldId                 fieldId_DestfieldId_Sour;

    
str 100     qv;
    
int         i;
    ;

    
super();

    if(
InventTable_ds.queryRun())
        
InventTable_ds.queryRun().query();
    else
        
InventTable_ds.query();

    
qbDS  q.dataSourceNo(1);
    
qbDSn qn.addDataSource(qbDS.table());

    
dictTableSour = new DictTable(qbDS.table());
    
dictTableDest = new DictTable(qbDSn.table());

    for(
1<= qbDs.rangeCount(); i++)
    {
        
fieldId_Sour qbDS.range(i).field();
        
fieldId_Dest dictTableDest.fieldName2Id(dictTableSour.fieldName(fieldId_Sour));
//        fieldId_Dest = fieldId_Sour;

        
qv qbDS.range(i).value();
        if(
fieldId_Sour && fieldId_Dest)
            
qbDSn.addRange(fieldId_Dest).value(qv);
    }

    
info(qbDS.toString());
    
info(qbDSn.toString()); 
И все работало, пока не попался "хитрый" запрос с несколькими range по одному полю. В результирующем запросе получился OR между этими ограничениями вместо AND из исходного.

Создал тестовый пример - форма с одним DS (InventTable) в init устанавливается фильтр на поле ItemId. При установке пользовательского фильтра на этоже поле и копировании ограничений получаем:
[FIG1]

Кто-то может объяснить такой феномен?
Вложения
Тип файла: xpo xinventtable.xpo (19.4 Кб, 182 просмотров)