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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.04.2004, 10:23   #1  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
Как запольнить грид данными из таблицы с филтьтрацией.
Я могу заполнить датагрид просто данными из таблицы, указав для грида datasource.
А как заполнить грид данными с фильтрацией, т.е. только те записи в которых название начинается с определенной буквы или поле не пустое. Чувсвую надо использовать Query - так как там есть Ranges - для фильтрации записей - а как приекрутить query к datasource или напрямую к гриду не представляю.
Старый 26.04.2004, 11:40   #2  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
В Init датасорса пишете

queryBuildRange = this.query().datasourceTable(tableNum(<имя таблицы>).addRange(fieldNum(...));

В executeQuery датасорса пишете

queryBuildRange.value(queryValue('x*')); - все что начинается с Х

queryBuildRange queryBuildRange; // объявляется в ClassDeclaration формы
Старый 26.04.2004, 12:12   #3  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
Спасибо, получилось заполнить грид. Но такое впечатление что он read only - да и просто по программисткой логике он таким и является раз заполняется динамически а не связкой с datasource. Как сделать так что бы внесенные в этот грид изменения, новые строки добавлялись/обновлялись в БД. Сейчас когда я меняю значения в полях строки грида - они "стираются" при переходе на другое поле.
Старый 26.04.2004, 12:16   #4  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Честно говоря, не знаю как у вас такое произошло
Если в гриде есть данные, то с датасорсом он связан.
Если на датасорсе есть фильтр то он не становится read only
Старый 26.04.2004, 13:18   #5  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
дело вот в чем - я сначала пробовал работать с QueryBuildDataSource и те симптомы что я описал - воспроизводились при использовании QueryBuildDataSource.

Попробовал как вы советуете - завел в описании класса формы

PHP код:
QueryBuildRange someQueryBuildRange
и вызываю на init datasource-а:

PHP код:
someQueryBuildRange this.query().dataSourceTable(tableNum(InventTable)).addRange(fieldNum(InventTableItemName)); 

при запуске формы система ругается:

Цитата:
---------------------------
Navision Axapta Debugger
---------------------------
Ошибка времени выполнения. : <empty class> object не инициализирован.



Трассировка стека:

(C) \Classes\<unknown>\dataSourceTable

(C) \Forms\InventTable\Data Sources\InventTableSome\Methods\init - line 12
---------------------------
OK
---------------------------
Старый 26.04.2004, 13:31   #6  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Все это хозяйство: this.query()... надо вызывать после вызова super().
__________________
Андрей.
Старый 26.04.2004, 13:51   #7  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
Цитата:
Изначально опубликовано Dron AKA andy
Все это хозяйство: this.query()... надо вызывать после вызова super().
спасибо. А вообще есть какое эмпирическое правило - когда вызывать метод базого класса - до или после вызова метода (что такое методы базового класса я знаю - справшиваю применительно к аксапте) - вель данные для query() могли быть инициализированы и не из super.Init();

Еще вопрос - сейчас организовано у меня так - есть форма, на ней несколько табов,

на одном табе грид - связанный с datasource InventTable - который тянет данные из таблицы InventTable.
на другом табе грид - связанный с datasource InventTableSome - который тянет данные из этой же таблицы InventTable.

как я заметил редактирование для записи в гриде во втором табе доступно только для строки которая является текущей в гриде в первом табе. Как от этого избавится. Или делать отдельную форму ?
Старый 26.04.2004, 14:15   #8  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Цитата:
А вообще есть какое эмпирическое правило - когда вызывать метод базого класса - до или после вызова метода (что такое методы базового класса я знаю - справшиваю применительно к аксапте) - вель данные для query() могли быть инициализированы и не из super.Init();
нет никакого правила, нужно просто примерно представлять что происходит в super'e. В большинстве случаев это описано в руководтстве разрабочика

Цитата:
как я заметил редактирование для записи в гриде во втором табе доступно только для строки которая является текущей в гриде в первом табе. Как от этого избавится. Или делать отдельную форму ?
Честно говоря точно не знаю как от этого избавиться, ибо ситуация эта не совсем стандартная. Но могу сказать пример -sysQueryForm - форма, где одна таблица редактируется в 2х датасорсах. Пример не самый простой но что-то извлечь из него можно, например, на датасорсах определены разные индексы.
Старый 26.04.2004, 14:38   #9  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
To IS:
Вполне нормальная ситуация: одна и та же таблица показывается на разных закладках, причем, скорее всего, отображаются по разному отфильтрованные данные. 2 Datasource. Все должно работать независимо.
Проверьте еще раз datasource на гридах, на полях этих гридов...
__________________
Андрей.
Старый 26.04.2004, 16:20   #10  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
Пока решил пойти по простому пути - создал отделную форму,
положил на нее TAB/TABPAGE/GRID.

Завел датасорс, соединил его с таблицей. Перекрыл как указывалось
init & executeQuery таблицы - открываю форму - видны все записи !!!
Тогда ручками из контектсного меню фильтрую по интересующему полю/убираю фильтр и вижу единсвенную запись но со значеним фильтра (который указывался в executeQuery) - то есть это и не запись вообще. !!!

И еще вопрос по дизайну форм - в других формах вижу что ширина и высота форм и табов указывается в виде Column width / Column height - пробовал так делать у себя - with no luck - получаю форму с нулевой высотой и шириной - виден только caption.
Пришлось выставить размеры в определенные значения - в принципе жить можно,
но несколько некрасиво - в чем может быть дело ?
Старый 26.04.2004, 17:04   #11  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Изначально опубликовано IS

... вижу единсвенную запись но со значеним фильтра (который указывался в executeQuery)...
А теперь, похоже , Вы присваиваете значение range в executeQuery() после вызова super() .
Если так, объясняю: здесь это надо делать до super(), т.к. этот супер и вызывает выполнение запроса с указанными вами критериями.
__________________
Андрей.
Старый 26.04.2004, 18:05   #12  
IS is offline
IS
Участник
 
21 / 10 (1) +
Регистрация: 23.04.2004
Цитата:
Изначально опубликовано Dron AKA andy

А теперь, похоже , Вы присваиваете значение range в executeQuery() после вызова super() .
Если так, объясняю: здесь это надо делать до super(), т.к. этот супер и вызывает выполнение запроса с указанными вами критериями.
Андрей, спасибо большое !!!!! Yeah !!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Две таблицы - один grid!? Kengo DAX: Программирование 3 01.11.2004 15:01
Один грид - две таблицы PACCOMAXA DAX: Программирование 3 09.04.2004 15:43

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

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

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