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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.05.2005, 11:13   #1  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
? Как из формы Form2 обновить записи на форме Form1?
Как из формы Form2 обновить записи на форме Form1?
Старый 20.05.2005, 11:16   #2  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Не знаю правильно ли понял задачу. Но в Главной книге в Общем журнале когда открываешь Строки, то при смене текущей записи в форме Общий журнал, строки в форме Строк тоже обнавляются. Может там посмотреть.
Старый 20.05.2005, 11:24   #3  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Куча способов. Зависит от того, что знает Form2 о Form1. Самое простое, если известно args.record() - запись из формы Form1:
PHP код:
FormDatasource fDS;
...
fDS args.record().datasource();
fDS.research(); 
__________________
Андрей.
Старый 20.05.2005, 12:15   #4  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
Dron AKA andy
а куда нужно этот код вставить?
и как Аксапта догадается какую форму обновлять?
Старый 20.05.2005, 12:36   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Куда поставить - это Вам решать. Да хоть на кнопку "Обновить форму Form1" Зависит от события, по которому должна обновляться форма.
А откуда узнает - я ж написал: "Если известно args.record()". Т.е. при открытии формы Form2 в args.record() была занесена текущая запись, вручную или автоматом (при открытии через menuitem).
__________________
Андрей.
Старый 20.05.2005, 13:35   #6  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
:(
не могу понять.
Более подробно распишу проблему:
1. из формы Form1(datasource Table1) открываю форму Form2(datasource Table2).
2. Из формы Form2 вставляю записи в таблицу Table1(форма Form1) следующим кодом:
PHP код:
 void clicked()
{
    
Form1        Form1;
;
    
super();
    while 
select Table2
        where Table2
.Active == NoYes::Yes
        
{
        
select forupdate graficSks;
        {
            
Form1.DateSKS Table2.DateSKS;
            
Form1.InspectorSKS Table2.SKSInspector;
            
Form1.insert();
        }
        }
     
Table2_ds.research(); 
А записи первой на форме не обновляются не добавляются. ВОпрос как вставив записи в первую форму Form1 обновить их из кода?
Старый 20.05.2005, 13:36   #7  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
Опечатка Form1 в коде на самом деле это Table1
Старый 20.05.2005, 13:47   #8  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Ну тогда начнем с начала:
1. Как открываете Form2 из Form1? (текст метода или через menuitem)
__________________
Андрей.
Старый 20.05.2005, 14:09   #9  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
через MenuItemName
Старый 20.05.2005, 14:25   #10  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Т.е. на форме Form1 лежит кнопка menuItemButton, и clicked() у нее не перекрыт? Тогда в args.record() автоматом записывается текущая запись из datasource формы Form1 (кстати, этот источник данных на форме один? если нет, проверяйте свойство datasource у этой кнопки, должен быть выбран нужный источник). Обновляем его из приведенного выше метода формы Form2 таким образом:
PHP код:
FormDatasource fDS;
...
fDS element.args().record().datasource();
fDS.research();
... 
А Table2_ds.research(); не нужен в рамках этой задачи.
__________________
Андрей.
Старый 20.05.2005, 15:13   #11  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
Спасибо заработало!!!
Table2_ds.research() по другому поводу здесь(Table2 временная таблица, и после select по ней в форме отображаются данные последнего прохода в while select, поэтому я и воткнул Table2_ds.research() )
Старый 20.05.2005, 16:03   #12  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Ну это тоже некрасиво - research() перемещает курсор в начало таблицы. Надо сделать так:
PHP код:
Table2    Table2_tmp//переменная типа временной таблицы
...
;
Table2_tmp.setTmpData(Table2);
// и затем уже переделать запрос
while select Table2_tmp
        where Table2_tmp
.Active == NoYes::Yes
... 
research() не нужен.
__________________
Андрей.
Старый 23.05.2005, 11:47   #13  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
Сейчас у меня возникла опять проблема с обновлением форм, только уже в другом случае:
Есть две формы Form1(datasource Table1) и Form2(datasource Table2), из одной формы из текущей записи Form1 открываю вторую форму Form2 через MenuItem.

Делаю в init второй формы Form2 ссылку на текущую запись
PHP код:
    _Table2 element.args().record(); 
Во второй форме Form2 выполняется следующий код
PHP код:
public void modified()
{
    
FormDataSource      fds;
    ;
    
super();
    if(
Table1.Period3 == NoYes::Yes)
    {
        
Table1.Address3 _Table2.Address;
        
_Table2.ControllerEmplId Table1.InspectorSKS;
    }
    else
    {
        
Table1.Address3 '';
    }
     
fDS element.args().record().datasource(_Table2);
     
fds.research();

Задача заключается в том чтобы Обновить текущую запись формы Form1 из формы Form2.
При таком коде получается эффект, что все формы Form1 Form2 обновляются позиционирование на текущих записях слетает, а в форме Form2 вообще записи текущего дня начинают отображаться.
Как сделать чтобы обновлялась только текущая запись Form1, а Form2 оставалась как есть?

PS: Метод fds.reread() почему то не работает.
Старый 24.05.2005, 11:21   #14  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
PHP код:
fDS element.args().record().datasource(_Table2);
fds.research(); 
А зачем в скобках написано Table2? Этого не нужно делать, и в моем примере этого не было. Уберите это и воспользуйтесь reread() вместо research().
__________________
Андрей.
Старый 24.05.2005, 11:28   #15  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Вернее, в данном случае (обновляются данные напрямую в буфере DS) нужно не обновлять DS, а вызвать fDS.write() для сохранения изменений.
__________________
Андрей.
Старый 24.05.2005, 11:53   #16  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Регистрация: 25.03.2004
Адрес: Moscow
Помогло вот так
PHP код:
     fds.refresh();
     
fds.reread(); 
Всем спасибо
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как мне обновить Grid расположенный на другой форме? Yuri Safronov DAX: Программирование 17 22.01.2013 14:18
Выделенные записи на форме в отчёт/форму Sada DAX: Программирование 32 12.02.2011 20:12
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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