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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2009, 13:39   #1  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Я на форме расположил две subform( subform 1, и subform 2 ), и кнопку (comand button)
К subform 1 подключена форма табличного типа, SourceTable( таблица item с полями code и name).
К subform 2 подключена форма табличного типа,SourceTable(таблица xxx с полями code и name).
Надо сделать так:
Например открыв форму находим строку с нужным товарам в subform 1 (в таблице товаров), становимся на эту строку(чтобы строка пометилась).
Далее нажимаем на кнопку помеченная строка с нужным нам товаром должна скопироваться в subform 2 (таблицу xxx)
Подскажите пожалуйста, как можно это сделать.
Старый 27.02.2009, 14:23   #2  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
В сабформе 1 делаем функцию, возвращающую Item с кодом:
GetItem
Exit(Rec)

В основной форме в OnPush кнопки пишем код:
myItem := CurrForm.Subform1Name.FORM.GetItem;
Subform1Name - это название первой сабформы, которое нужно присвоить.
И дальше делаем вставку в таблицу xxx данных из myItem.
Затем апдейтим сабформу 2.
Старый 27.02.2009, 16:18   #3  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Создал функцию для subform1. добавил Exit(Rec) при компилировании выдает ошибку

' := не может быть выполнена для массивов.
Выбирите один элемент массива, используя индексы:
Мой массив [..]
'
А что означает переменная my Item?
Таблица item?
Старый 27.02.2009, 17:13   #4  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Да, myItem это Record подтипа Item.

Про функцию я немного неправильно написал. У функции должен быть входной var параметр inItem типа record подтипа Item.
В функции должно быть:
inItem := Rec;

Использоваться функция должна:
CurrForm.Subform1Name.FORM.GetItem(myItem);
А дальше обработка myItem.
Старый 28.02.2009, 00:28   #5  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Вроде все получилось, только данные из myitem не всавляются в xxx.
пишу:
CurrForm.Subform1Name.FORM.GetItem(myItem);
xxx.item:=myitem.item:
xxx.name:=myitem.name;
xxx.insert;
не пойму в чем ошибка.
Старый 28.02.2009, 14:57   #6  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
А какой первичный ключ в xxx?
Какая связь между основной формой и субформой 2.

И еще вопрос, хоть это мало вероятно, но все же. Субформа 2 показывает данные из реальной таблицы, не темповой?
Старый 28.02.2009, 19:34   #7  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
В таблице xxx. первичный ключ item(в первом сообщении я назвал это поле code).
Обе субформы с главной формой, связи не имеют.
Временных таблиц не используется.
Старый 28.02.2009, 21:54   #8  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от lobster Посмотреть сообщение
xxx.item:=myitem.item:
xxx.name:=myitem.name;
xxx.insert;
Не понял, поле называется code или item?
Если code, то попробуйте так:
xxx.code:=myitem."No.";
xxx.name:=myitem.name;
xxx.insert;
Старый 02.03.2009, 13:58   #9  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Большое Вам спаибо, все получилось. Я ошибся, когда создавал входной var параметр inItem, не поставил галку.
А подскажите пожалуйста еще, как сделать чтобы после нажатия на кнопку у меня все сразу обновлялось.
Я пробовал разные варианты используя UPDATE и RESET применяя их и к субформам и главной форме, но ни чего не вышло.
Старый 02.03.2009, 14:18   #10  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Если update главной формы не помогает, то сделайте следующее:
1. В субформе 2 создайте фукцию DoFormUpdate(inDoSave: boolean) с кодом:
CurrForm.Update(inDoSave);

2. В главной форме после вставки записи добавьте код:
CurrForm.Subform2Name.FORM.DoFormUpdate(False);

Должно помочь.
Старый 02.03.2009, 14:32   #11  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Это помогло, спасибо.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:56.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.