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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.09.2008, 09:32   #1  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
:( Data Sources
Возникла следующая проблема:
Есть форма на ней Data Sources, в котором есть 2 таблицы. Таблицы связаны 1:n.
Необходимо пробежаться по записям заполненых Data Source. Следующим образом: беру 1 запись из Data Source1 бегу по записям Data Source2 связаных с 1 записью Data Source1.
При этом хотелось бы сделать это все на Клиенте.
Старый 02.09.2008, 09:52   #2  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
можно примерно так:
X++:
    for (t1 = ds1.getFirst();
         t1;
         t1 = ds1.getNext())
    {
        ...

        for (t2 = ds2.getFirst();
             t2;
             t2 = ds2.getNext())
        {
            ...
        }
    }
Старый 02.09.2008, 10:03   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Это по выделенным записям (причем только в случае мультиселекта). Чтобы пробежаться по всем записям, которые видны в форме, нужно query получить (queryRun.Query(), если он заполнен), и бежать по нему.
Старый 02.09.2008, 10:12   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Так пробегаемся по одному источнику данных
X++:
if (calledDataSource.anyMarked()) // calledDataSource
    {
            for (YourTableMarked = calledDataSource.getFirst(true, false); YourTableMarked;
                 YourTableMarked = calledDataSource.getNext())
            {
               YourTableMarked = calledDataSource.getNext();
            }

    }
соответсвенно в связанном надо делать вложенный цикл, если правильно вас понял
__________________
Axapta book for developer
Старый 02.09.2008, 10:16   #5  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Это по выделенным записям (причем только в случае мультиселекта). Чтобы пробежаться по всем записям, которые видны в форме, нужно query получить (queryRun.Query(), если он заполнен), и бежать по нему.
Да так и есть, бежит только по записям, которые видны на текущий момент в Grid'ах.
Немного не понятно как можно с помощью queryRun пробежаться по 2 связаным таблицам Data Sources без запроса на Сервер.
И вообще такое возможно?

Последний раз редактировалось KpecT; 02.09.2008 в 10:18.
Старый 02.09.2008, 10:23   #6  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Цитата:
Сообщение от MikeR Посмотреть сообщение
Так пробегаемся по одному источнику данных
X++:
if (calledDataSource.anyMarked()) // calledDataSource
    {
            for (YourTableMarked = calledDataSource.getFirst(true, false); YourTableMarked;
                 YourTableMarked = calledDataSource.getNext())
            {
               YourTableMarked = calledDataSource.getNext();
            }
 
    }
соответсвенно в связанном надо делать вложенный цикл, если правильно вас понял
Не катит.
По первому Data Source бежит нормально, так как все записи отображаются в 1 Grid'e, во втором Grid'e отображаются записи только для выделеной записи 1 Grid'a. (Аналог формы SalesTable)
Старый 02.09.2008, 10:25   #7  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от KpecT Посмотреть сообщение
Не катит.
По первому Data Source бежит нормально, так как все записи отображаются в 1 Grid'e, во втором Grid'e отображаются записи только для выделеной записи 1 Grid'a. (Аналог формы SalesTable)
ну в принципе да. Это ж зависит от свойств связи источников на форме, а как надо то?
__________________
Axapta book for developer
Старый 02.09.2008, 10:27   #8  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Немного не понятно как можно с помощью queryRun пробежаться по 2 связаным таблицам Data Sources без запроса на Сервер.
Кэширование на что? Поправьте если не прав ... К тому же, если на форме много записей, то не все они на клиенте. При пролистывании, они все равно будут подтягиваться с сервера.

Последний раз редактировалось Eldar9x; 02.09.2008 в 10:31.
Старый 02.09.2008, 11:20   #9  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
зачем вообще бежать по датасорсам, тем более обязательно без запроса на сервер? объясните какая стоит перед вами задача?
Старый 02.09.2008, 11:20   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Не изобретайте нового и делайте через QueryRun. Это самый правильный вариант.
Все записи у вас в гриде не хранятся, они подтягиваются с сервера по мере необходимости (возможно замечали, что если начинаете скроллить вниз, то через определенное время система задумывается - тянет следующий набор записей с сервера).
Более того, для "строк" - запрос выполняется каждый раз, как вы переходите на новую строку в шапке.

Так что к QueryRun вам дорога, + исполнение на сервере - будет намного быстрее
Старый 02.09.2008, 11:51   #11  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Не изобретайте нового и делайте через QueryRun. Это самый правильный вариант.
Все записи у вас в гриде не хранятся, они подтягиваются с сервера по мере необходимости (возможно замечали, что если начинаете скроллить вниз, то через определенное время система задумывается - тянет следующий набор записей с сервера).
Более того, для "строк" - запрос выполняется каждый раз, как вы переходите на новую строку в шапке.

Так что к QueryRun вам дорога, + исполнение на сервере - будет намного быстрее
Это я уже понял.
Старый 02.09.2008, 17:56   #12  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Это по выделенным записям (причем только в случае мультиселекта). Чтобы пробежаться по всем записям, которые видны в форме, нужно query получить (queryRun.Query(), если он заполнен), и бежать по нему.
Неправда Ваша. У getFirst() есть два параметра. С их помощью можно указать, что конкретно выбирать: выделенные записи или все, а также только видимые или все
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: Eldar9x (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Solutions Monkey: Programatically reading data from AxDataSourceControl Blog bot DAX Blogs 1 07.11.2008 09:17
axStart: Change data on a data source on a Form Blog bot DAX Blogs 0 04.09.2008 15:05
Динамически join Data Sources konopello DAX: Программирование 23 11.05.2007 15:35
Data Sources и ODBC art DAX: Программирование 1 27.08.2002 13:38
Data Sources art DAX: Программирование 8 14.06.2002 15:06

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

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

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