Показать сообщение отдельно
Старый 09.12.2001, 18:19   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ошибка времени выполнения
Здравствуйте, Андрей.

Возможно, что причина вашей ошибки - не совсем корректная формулировка с нашей стороны.
Цитата:
Перекрыть метод FormDataSource::Init()
Слово "перекрыть" здесь, видимо, не совсем уместно. На самом деле Вы должны лишь дописать этот метод. По видмому, Вы удалили вызов метода super() оттуда. Делать этого не стоит, а добавленные Вами строки кода должны обязательно находиться <b>после</b> вызова метода super().

Смысл сообщения об ошибке, выдаваемого Вам, заключается в том, что Вы пытаетесь использовать методы объекта, который еще не иниализирован (инициализация проходит именно в методе super()).

Решение проблемы через executeQuery также корректно (к этому момент объект FormDataSource уже инициализирован), но Вы должны осознавать, что каждый раз при вызове этого метода (а он, в отличие от init, вызывается очень часто) будет происходить присваивание query для dataSource. Теперь, если Вы захотите изменить значение query во время работы (например, по нажатию кнопки), Вам придется добавлять сравнительно сложный код с условиями ветвления в executeQuery. В случае использования метода init Вы присваиваете query лишь начальное значение, которое затем сможете как угодно менять в любых методах своей формы.

Вообще говоря, метод executeQuery лишь выполняет запрос, который присвоен полю query элемента FormDataSource. То, что у Вас не происходила фильтрация при нажатии на кнопку, объясняется тем, что Вы лишь присваивали полю query новые параметры запроса. Для выполнения запроса следует использовать метод executeQuery.

В качестве примера посмотрите мой проект. Я переопределял методы init у InventTable и clicked у кнопки. Попробуйте убрать вызов метода clearRanges.
Вложения
Тип файла: zip project1.zip (2.3 Кб, 260 просмотров)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me