Показать сообщение отдельно
Старый 23.03.2004, 18:38   #10  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Есть такой человек!
Разумеется, я смотрел tutorial!! Дело в том, что все работает!! Как можно отследить ошибку, если все работает нормально? И почему данная ошибка вылезает именно при запуске из МИ? Кстати, ЧТО вы бы предложили запаковать?
Есть 2 таблицы, ProdTable и InventDim (ProdTable.InventDimId == InventDim.InventDimId), по которым стандартными средствами строиться отчет.

Вопрос: и что я должен запаковать?

ProdTable prodTable;
InventDim InventDim;

#define.CurrentVersion(1)
#define.Version1(1)
#localmacro.CurrentList
prodTable, ???? - это же просто запись, а не параметры.
inventDim ???? параметры нам пока неизвестны - это дело пользователя.
#endmacro

Зачем? он же все равно queryrun пакует?

B tutorial_runbaseform был запакован дополнительный параметр поиска. Здесь ничего такого нет. Есть наш query, который мы инитим по-своему и на основе его переопределяем queryrun...

Но! В конце концов в вообще отказался от класса, который бы инициализировал и вызывал отчет. я перекрыл метод init в отчете. Примерно так:

PHP код:

      
public void init()
      {
          
QueryBuildDataSource    qbds;
          
TableId                 tableId;
          
FieldId                 fieldId;
          
FieldId                 joinedFieldId;
          
SysReportRun            reportRun this;
          ;
          
super();
      
          
query = new Query();
      
          
tableId tablenum(ProdTable);
          
qbds query.addDataSource(tableId);
      
          
tableId tablenum(InventDim);
          
qbds qbds.addDataSource(tableId);
      
          
fieldId         fieldnum(ProdTableInventDimId);
          
joinedFieldId   fieldnum(InventDimInventDimId);
          
qbds.addLink(fieldIdjoinedFieldId);
          
qbds.joinMode(JoinMode::ExistsJoin);
          
//qbds.relations(false);
      
          
queryrun = new QueryRun(query);
          
reportRun.queryRun(queryrun);
          
reportRun.queryRun().reset();
          
reportRun.printRanges(true);
      } 
Но и этого можно не делать. Можно скопировать в датасорсы Query таблицу ProdTable, к ней в датасорс - InventDim, а в InventDimе прописать relation.

И так и так - перекрываю, допустим, prompt - вывожу (trace) запрос - результат меня радует, все так, как предпологал, запрос построен корректно. Очтет открывается - ура! Открываю через МИ - все... ошибка. Убираю один датасорс - все ОК! открывается и через МИтем. А с двумя - шиш. Вылечилось разбрасыванием отчета на два дизайна. Что, хоть и работает, но душа болит А почему так???
Вопросы тому кто "делает отчёты много лет"

Если использовать класс - что есть хорошо, дает широкие возможность и наверняка скоро возникнет ситуация, в которой имеено класс будет вызывать отчет, Что и как надо запаковать, что бы избежать подобного рода проблем?

Если не использовать класс, то что еще надо сотворить с отчетом, что бы данной проблемы не возникало (как перекрыть pack)?.

To Ned: Спасибо, что откликнулись.
To macklakov: Алекс, не издевайся, плиз. люди смотрят кинь лучше ссылку, если знаешь, где это описано. Про RTFM мы все в курсе.