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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.04.2005, 10:06   #1  
rrkrivov is offline
rrkrivov
Участник
Аватар для rrkrivov
 
8 / 10 (1) +
Регистрация: 24.12.2004
Адрес: г. Москва
Обновление данных в View
Доброго времени суток!

Есть у меня View-ха в которой связано две таблицы. Эта view-ха, как датасоурс, добавлена в форму. По ходу работы данные в одной из таблиц обновляются (вычисляются). Как обновить данную view-ху и при этом не менять текущую позицию?

refresh() данные не обновляет.
reread() обновляет данные, но при этом текущая запись замещается первой выбраной. И так до следующего выполнения метода execquery()
execquery() очень корректно отрабатывает, но перескакивает на первую запись.

И еще, интересный глюк (или я что-то не так делаю): в любое время работы данной формы, cursor у view-хи постоянно указывает (recId) на первую запись (даже если, например, в гриде указывается на последнюю)...

Уточнение: У всех выбраных view-хой записях RecId = 1010. Как это можно исправить?
Старый 08.04.2005, 15:27   #2  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Попробуйте так:

PHP код:
    myView    myView;
    ;

    
myView.data(viewInMyFormDatasource);

    .......   
//Изменяем данные

    
element.lockWindowUpdate(true);
    
viewInMyFormDatasource_DS.executeQuery();
    
viewInMyFormDatasource_DS.findRecord(myView);
    
element.lockWindowUpdate(false); 
Должно работать при условии, что viewInMyFormDatasource и myView основаны на одном и том же View, а element = FormRun (ссылка на объект Вашей формы). Если данный метод написать на форме, а не на контроле или датасоурсе, то element заменить на this
Старый 08.04.2005, 16:54   #3  
rrkrivov is offline
rrkrivov
Участник
Аватар для rrkrivov
 
8 / 10 (1) +
Регистрация: 24.12.2004
Адрес: г. Москва
Вариант уже пробовал и не работает:

PHP код:

    
//  . . .

    
element.lockWindowUpdate(true);
    
viewInMyFormDatasource_DS.executeQuery();
    
viewInMyFormDatasource_DS.findRecord(myView); // -> вегда становится на первую выбранную запись
    
element.lockWindowUpdate(false

    
//  . . . 
Но при этом возвразает true
Скорее всего это связано с тем, что у всех выбраных записях recId = 1010
Вот пример вьюхи, созданой в Аксапте:
PHP код:
SELECT     A.ORDERACCOUNT AS VENDACCOUNTA.PURCHID
          
A.RCONTRACTACCOUNTA.RCONTRACTCODE
          
A.CREATEDDATE AS PURCHDATEA.DATAAREAID
---->  
1010 AS RECID,  < -- Вот это злостное место :-) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          
SUM(B.PURCHQTY) AS PURCHQTYB.DATAAREAID AS DATAAREAID_2
          
B.ITEMID AS PURCHITEMIDB.LINENUM AS PURCHLINENUM
          
B.COR_ASSIGNEDC.DATAAREAID AS DATAAREAID_3,
          
C.INVENTLOCATIONID AS PURCHINVENTLOCATIONID
FROM       aos
.PURCHTABLE A INNER JOIN
           aos
.PURCHLINE B ON A.PURCHID B.PURCHID INNER JOIN
           aos
.INVENTDIM C ON B.INVENTDIMID C.INVENTDIMID
GROUP BY A
.ORDERACCOUNTA.PURCHIDA.RCONTRACTACCOUNT
A.RCONTRACTCODEA.CREATEDDATEA.DATAAREAID
          
B.DATAAREAIDB.ITEMID
          
B.LINENUMB.COR_ASSIGNEDC.DATAAREAIDC.INVENTLOCATIONID 
Старый 08.04.2005, 20:28   #4  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Если в возвращаемом вьюхой наборе записей нет поля с уникальными значениями, то встает вопрос о том, как находить нужную запись?
Старый 08.04.2005, 20:34   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Ace of Database
[PHP]
viewInMyFormDatasource_DS.findRecord(myView);
Не надо findRecord. Это очень тяжелая операция.
http://www.axforum.info/forums/showt...&threadid=8729
Старый 08.04.2005, 20:56   #6  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Спасибо, Mazzy.
Но:
1) в указанном тобой посте вариант с element.args().lookupField может фильровать только по одному полю. А здесь уникального поля нет - видимо, нужно находить нужную запись по нескольким полям

2) в указанном тобой посте с помощью addDynalink() можно обеспечить фильтрацию по нескольким полям, но тогда в гриде останется одна единственная искомая запись, а остальные исчезнут.

Можно ли спозиционироваться на нужную запись, применяя условие отбора по нескольким полям, и при этом чтобы не включался фильтр?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление данных при переходе на Ax3 SP5 - ошибка. Караул ! Logger DAX: Программирование 1 28.04.2008 15:34
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Распределенная база данных на основе View Владимир Максимов DAX: Программирование 27 04.09.2007 13:21
Обновление данных в while select Mystery DAX: Программирование 8 05.03.2004 12:39
Обновление данных в гриде Dimitry DAX: Программирование 2 16.07.2003 12:54

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

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

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