AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

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

PHP-Code:
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();

Alt 20.12.2004, 13:53   #7  
velk ist offline
velk
Участник
 
194 / 10 (1) +
Registriert seit: 17.05.2004
Ок спасибо...
а пор то что невозможно снять фильтр где это смотреть?
Alt 20.12.2004, 14:11   #8  
Ace of Database ist offline
Ace of Database
Участник
Benutzerbild von Ace of Database
 
877 / 649 (23) +++++++
Registriert seit: 14.10.2004
Приведите код методов init(), run() у Вашей формы, а также метод executeQuery() у источников данных.
Alt 20.12.2004, 14:24   #9  
velk ist offline
velk
Участник
 
194 / 10 (1) +
Registriert seit: 17.05.2004
PHP-Code:
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);


Alt 20.12.2004, 14:24   #10  
velk ist offline
velk
Участник
 
194 / 10 (1) +
Registriert seit: 17.05.2004
PHP-Code:
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();



Alt 20.12.2004, 15:01   #11  
Ace of Database ist offline
Ace of Database
Участник
Benutzerbild von Ace of Database
 
877 / 649 (23) +++++++
Registriert seit: 14.10.2004
в Ваших исходниках вроде все нормально. Вам только надо дописать код в методе executeQuery , чтобы наложенный программно фильтр не стирался.

Zitat:
а про то что невозможно снять фильтр где это смотреть?
Посмотрите, не перекрыт ли у Вас метод removeFilter() источника данных. Если этот метод перекрыт - то покажите его код.
Alt 20.12.2004, 15:44   #12  
velk ist offline
velk
Участник
 
194 / 10 (1) +
Registriert seit: 17.05.2004
Такого метода нету :-(
Alt 20.12.2004, 16:19   #13  
velk ist offline
velk
Участник
 
194 / 10 (1) +
Registriert seit: 17.05.2004
Он еще лезет перед открытием в class
PHP-Code:
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();


Alt 20.12.2004, 18:06   #14  
Ace of Database ist offline
Ace of Database
Участник
Benutzerbild von Ace of Database
 
877 / 649 (23) +++++++
Registriert seit: 14.10.2004
Попробуйте у источника данных в форме перекрыть метод removeFilter() и там написать следующий код. Может быть, поможет, а может и нет.

PHP-Code:
public void removeFilter()
{
    
element.inventDimSetupObject().initQuery(inventtable_ds);
    
element.inventDimSetupObject().buildQuery();
    
element.executeQuery();

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Проблема с единицей измерения 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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 02:31 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.