AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2004, 11:42   #1  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
? Опять проблема с фильтрами!!!!!!!
Проблема в следующем..
в Управлении запасами есть журнал переноса..
так вот при создании строк создать списания открывается форма со списком номенклат. которая фильтруется по аналитике... вроде все хорошо но при наложении доп фильтра по ctrl+F а потом удалении фильтра происходит полный сброс фильтра и того что наложили по ctrl+F и программно..
Что делать ПОМОГИТЕ!!!!!!!
Старый 20.12.2004, 12:15   #2  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Приведите код, который написали Ваши программисты для наложения фильтра программно.
Старый 20.12.2004, 12:44   #3  
Hamster is offline
Hamster
Участник
 
687 / 13 (2) ++
Регистрация: 15.05.2003
Сохраните фильтр под именем, потом вызывайте когда нужно.
Старый 20.12.2004, 12:54   #4  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Там сложно так написано черт ногу сломает....:-)
А вообще есть ли примеры реализации таких фильтров?
Старый 20.12.2004, 13:18   #5  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Да еще подскажите пожалуйста я нажимаю ctrl+F накладывается фильтр
а потом пытаюсь удалить этот фильтр (правая кнопка мыши меню "удалить фильтр") а фильтр не удалятеся.. где это настраивается?
Старый 20.12.2004, 13:49   #6  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
так вот при создании строк создать списания открывается форма со списком номенклат. которая фильтруется по аналитике... вроде все хорошо но при наложении доп фильтра по ctrl+F а потом удалении фильтра происходит полный сброс фильтра и того что наложили по ctrl+F и программно..
Чтобы всегда оставался программно созданный фильтр, нужно перекрывать метод ExecuteQuery у источника данных формы и писать там такой примерно код:

PHP код:
public void executeQuery()
{
    
QueryBuildRange         range;
    
QueryBuildDataSource    qbds;
    ;
    
qbds InventTable_DS.query().dataSourceNo(1);
    
range qbds.findRange(fieldNum(InventTableItemGroupId));
    if (!
range)
    {
        
range qbds.addRange(fieldNum(InventTableItemGroupId));
    }
    
range.value("YourItemGroupId");
    
range.status(2);
    
super();

Старый 20.12.2004, 13:53   #7  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Ок спасибо...
а пор то что невозможно снять фильтр где это смотреть?
Старый 20.12.2004, 14:11   #8  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Приведите код методов init(), run() у Вашей формы, а также метод executeQuery() у источников данных.
Старый 20.12.2004, 14:24   #9  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
PHP код:
void init()
{
    
object callerForm;

    
super();

    
salesQty element.control(control::salesQty);

    
origQuery inventSum_ds.query();

    
element.inventDimSetupObject().initFromCaller();
    
element.buildSavedQuery();
    
element.updateDesign(InventDimFormDesignUpdate::Init);

    
inventDimId             InventDim::inventDimIdBlank();
    
callerForm              element.args().caller();
    
formTrans               callerForm.JournalForm();
    
transData               formTrans.JournalTransData();
    
inventJournalTrans      formTrans.journalTrans_ds().cursor();
    
inventJournalTrans_ds   formTrans.journalTrans_ds();
    
journalTable            transData.journalTableData().journalTable();


    
inventdim_Q.dataSourceNo(1).allowAdd(true);


Старый 20.12.2004, 14:24   #10  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
PHP код:
void run()
{
    
super();

    
salesQty.setFocus();

    
element.inventDimSetupObject().initQuery(inventtable_ds);
    
element.inventDimSetupObject().buildQuery();
}


void executeQuery()
{
    
Query    query;
    ;
    if (
inventTable_ds.queryRun())
        
query inventTable_ds.queryRun().query();
    else
        
query inventTable_ds.query();
    
query.dataSourceTable(tablenum(inventTable)).clearDynaLinks();

    
query.forceSelectOrder(true);
    
query.datasourceTable(tableNum(inventDim)).addSortIndex(IndexNum(InventDimDimIdIdx));
    
query.datasourceTable(tableNum(inventDim)).indexIsHint(true);
    
query.datasourceTable(tableNum(inventSum)).addSortIndex(IndexNum(InventSumItemDimIdx));
    
query.datasourceTable(tableNum(inventSum)).indexIsHint(true);

    
super();



Старый 20.12.2004, 15:01   #11  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
в Ваших исходниках вроде все нормально. Вам только надо дописать код в методе executeQuery , чтобы наложенный программно фильтр не стирался.

Цитата:
а про то что невозможно снять фильтр где это смотреть?
Посмотрите, не перекрыт ли у Вас метод removeFilter() источника данных. Если этот метод перекрыт - то покажите его код.
Старый 20.12.2004, 15:44   #12  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Такого метода нету :-(
Старый 20.12.2004, 16:19   #13  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Он еще лезет перед открытием в class
PHP код:
void buildQuery()
{
    
QueryBuildDataSource    queryBuildDsInventSum,qbdsInventDim;
    
Object                  localFr;
    
queryBuildRange         queryBuildRange;
    
InventJournalTable      inventJOurnalTable;
    
InventJOurnalFormTrans  formTrans;
    
InventDim               inventDim;
    
container               inventDimList   =   new InventDimGlobal().dimEnabledFieldList();
    
int                     i;
    
int                     fieldid;

    
localFr             fr.args().caller();
    
formTrans           localFr.journalForm();
    
inventJournalTable  formTrans.JournalTableData().journalTable();
    
InventDim           inventDim::find(inventJournalTable.InventDimId);
    if (
origQuery)
    {
        
queryBuildDsInventSum _inventTable_DS.queryRun().query().dataSourceTable(tablenum(InventSum));

        
queryBuildDsInventSum.addSelectionField(fieldnum(inventSumpostedValue), selectionField::Sum);
        
queryBuildDsInventSum.addSelectionField(fieldnum(inventSumpostedQty),   selectionField::Sum);
        
queryBuildDsInventSum.addSelectionField(fieldnum(inventSumphysicalValue), selectionField::Sum);
        
queryBuildDsInventSum.addSelectionField(fieldnum(inventSumreceived), selectionField::Sum);
        
queryBuildDsInventSum.addSelectionField(fieldnum(inventSumdeducted), selectionField::Sum);

        
qbdsInventDim _inventTable_DS.queryRun().query().dataSourceTable(tablenum(InventDim));
        
qbdsInventDim.clearRanges();
        
queryBuildRange queryBuildDsInventSum.addRange(fieldnum(inventSumavailPhysical));
        
queryBuildRange.value("!0");
        
//queryBuildRange.status(rangeStatus::Locked); 
        
qbdsInventDim.allowAdd(false);
        for(
1<= conlen(inventDimList); i++)
        {
           
fieldid conpeek(inventDimList,i);
           if (
inventDim.(fieldId))
           {
               
queryBuildRange qbdsInventDim.addRange(fieldid);
               
queryBuildRange.value(sysquery::value(inventDim.(fieldid)));
               
//queryBuildRange.status(rangeStatus::Locked); 
           
}
        }
        
queryBuildDsInventSum.allowAdd(false);
    }
    
super();


Старый 20.12.2004, 18:06   #14  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Попробуйте у источника данных в форме перекрыть метод removeFilter() и там написать следующий код. Может быть, поможет, а может и нет.

PHP код:
public void removeFilter()
{
    
element.inventDimSetupObject().initQuery(inventtable_ds);
    
element.inventDimSetupObject().buildQuery();
    
element.executeQuery();

    
//super(); - попробуйте не вызывать супер

Старый 20.12.2004, 18:19   #15  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Ок сейчас попробую..
а то уже весь код облази но никак не могу найти мечто гдеже это сделано
Старый 20.12.2004, 18:22   #16  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Ругается на executeQuery()
Класс FormRun не содержит эту функцию.
что то не так делаю?
Старый 20.12.2004, 18:25   #17  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Извините, ошибся.
Вместо
PHP код:
    element.executeQuery(); 
Напишите
PHP код:
    inventTable_DS.executeQuery(); 
У вас ведь источник данных называется InventTable, не так ли?
Старый 20.12.2004, 18:27   #18  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Ок сейчас попробуем...
....нет не пашет.. все также отменить фильтр нельзя...
даже нажимая на воронку с крестиком он не пропадает.. и воронка не становиться серой.. :-(
Старый 20.12.2004, 18:32   #19  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
1. Удалите метод removeFilter()
2. В методе buildQuery() того класса, который вызывается из метода run() формы, попробуйте закомментировать строку queryBuildRange.status(rangeStatus::Locked);
Старый 20.12.2004, 18:35   #20  
velk is offline
velk
Участник
 
194 / 10 (1) +
Регистрация: 17.05.2004
Пробовал уже.. не помогает..
вот код
код уже приводил...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема - Две одинаковые таблицы в запросе NAST DAX: Программирование 0 13.10.2005 08:51
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Опять проблема с ОЛАПом metal DAX: Программирование 13 10.06.2003 15:36
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:20.