Показать сообщение отдельно
Старый 24.04.2002, 12:01   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Изначально опубликовано Андре

... перекрываю метод Init.
В нем я пишу следующее:
this.query().dataSourceNo(1).addRange(fieldNum(BomTable,BOMId)).value("001");

Цитата:
Роман Кошелев

Скорее всего, ошибка в том, что "не успевает" проинициализироваться query.
Я повторил вcё как ты писал, и понял -- быстрее всего решить проблему, если перекрыть метод executeQuery, а не Init:


public void executeQuery()
{
this.query().dataSourceNo(1).addRange(fieldNum(BomTable,BOMId)).value("001");
super();
}

Так вроде всё работает.
Работает, да не совсем.

Метод executeQuery срабатывает каждый раз при добавлении/снятии фильтра. Соответственно на форме установки фильтра при каждой установке/снятии фильтра добавляется еще одна строка.
Наверно корректнее будет так:

public void executeQuery()
{

this.query().dataSourceNo(1).clearRange(fieldNum(BomTable,BomId));
this.query().dataSourceNo(1).addRange(fieldNum(BomTable,BOMId)).value("001");

super();

}

И еще. При добавлении этого метода и открытии формы установки фильтра, там по умолчанию можно фильтровать только по одному полю - тому, на которое мы установили фильтр. А если бы я не создавал этот метод, то в форме установки фильтра отображались бы строки фильтрации по другим полям.

Куда они пропадают ?