AXForum  
Go Back   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 05.09.2006, 10:20   #1  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Join Date: 03.10.2006
Подскажите пожалуйста как отобразить данные из двух таблиц в TableBox.
Имеются две таблицы, одна из них связана с формой, необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
Old 05.09.2006, 10:25   #2  
randrews is offline
randrews
Участник
randrews's Avatar
 
312 / 10 (1) +
Join Date: 06.12.2004
Quote:
Originally Posted by prefreitor View Post
необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
Если по одному номеру - может проще Subform использовать?


А, если как вы спрашиваете, то только добавить на TableBox кнонтролы EditBox и в каждый прописывать
SourceExpr = Table2.Field2
Old 05.09.2006, 12:12   #3  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Join Date: 03.10.2006
Спасибо за ответ!
Все работает. Однако пришлось опять переделать т.к пользователи хотели одно но говорили другое...
Old 18.09.2006, 13:38   #4  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Join Date: 18.09.2006
Quote:
Originally Posted by randrews View Post
Quote:
Originally Posted by prefreitor View Post
необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
А, если как вы спрашиваете, то только добавить на TableBox кнонтролы EditBox и в каждый прописывать
SourceExpr = Table2.Field2
Чего-то у меня не получается. Сделал как советовали, но выдает ошибку: Вы использовали неопределенную переменную Table2.

Есть таблица N. У нее первичный ключ Number, Вторичный - Command. Эта таблица связана с формой.
Есть таблица F. У нее первичный ключ Command. Необходимо по одинаковому номеру (Command)подгрузить поле из второй таблицы в TableBox.
Old 18.09.2006, 14:12   #5  
romeo is offline
romeo
Участник
romeo's Avatar
 
564 / 10 (2) +
Join Date: 31.03.2004
Quote:
Originally Posted by Programmer View Post
Quote:
Originally Posted by randrews View Post
Quote:
Originally Posted by prefreitor View Post
необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
А, если как вы спрашиваете, то только добавить на TableBox кнонтролы EditBox и в каждый прописывать
SourceExpr = Table2.Field2
Чего-то у меня не получается. Сделал как советовали, но выдает ошибку: Вы использовали неопределенную переменную Table2.

Есть таблица N. У нее первичный ключ Number, Вторичный - Command. Эта таблица связана с формой.
Есть таблица F. У нее первичный ключ Command. Необходимо по одинаковому номеру (Command)подгрузить поле из второй таблицы в TableBox.
Если вдуматься, то сообщение об ошибке несет максимум нужной информации для исправления ситуации. Прописать в свойство поля имя переменной (которая насколько я понимаю объявлена и описана нигде не была) - мало. Надо в окне глобальных переменных завести переменную типа Record на таблице F и после этого можно использовать ее. Только в коде формы, построенной на N нужно еще и получить необходимые записи F.
И вот это "У нее первичный ключ Number, Вторичный - Command" резануло слух. Ключ ПЕРВИЧНЫЙ и состоит из двух полей Number, Command. Уникальная комбинация, которая не повторяется в таблице более одного раза ...
Old 18.09.2006, 19:35   #6  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Join Date: 18.09.2006
Чего-то я настолько запутался, что незнаю как получить необходимые мне строки. Вот что мне нужно получить.


Не могли бы подсказать как в коде формы, построенной на N получить необходимые записи F. Сделал как порекомендовали. А дальше незнаю как ...
Quote:
в коде формы, построенной на N нужно еще и получить необходимые записи F.
Old 19.09.2006, 10:25   #7  
romeo is offline
romeo
Участник
romeo's Avatar
 
564 / 10 (2) +
Join Date: 31.03.2004
Quote:
Originally Posted by Programmer View Post
Не могли бы подсказать как в коде формы, построенной на N получить необходимые записи F.
Обычно, когда получить нужно значение одного, двух, ну пяти полей в форме из другой таблицы я создаю функции. Либо по одной на каждое поле, либо одну на все поля (нужный алгоритм работы определяется параметром). Если вы предполагаете, что данных из других таблиц на форму придется вытягивать дофига, то париться с функциями уже не рационально. Тогда я объявляю глобальную переменную рекорд на нужной мне таблице. В форме в триггере OnAfterGetRecord() я делаю поиск в новой переменной по нужному значению из основной таблицы. И после этого я могу создавать сколь угодно много полей и в соурсе прописывать НоваяРекорд.Поле для отображения инфы из другой таблицы.
Old 19.09.2006, 11:29   #8  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Join Date: 24.02.2005
Приветствую,

Для вытягивания данных из полей таблицы Товар, по коду сделал себе следующую мега-функцию:

Code:
f_itemField(c_No : Code[20];t_fieldname : Text[30]) : Text[30]

//c_No  - код искомого товара
//t_fieldname  - наименование поля
//возвращаемое значение текст

VAR
Name	DataType	Subtype	Length
r_item	Record	Item
r_fields	Record	Field	
RecRef1	RecordRef		
fldNom	Integer		

r_fields.SETFILTER(TableNo,'%1',DATABASE::Item);  //в таблице Field выбрали поля принадлежащие таблице товар;
r_fields.SETFILTER(FieldName,'%1',t_fieldname);  //выбрали нужное нам поле (по идее одно)
IF r_fields.FIND('-') THEN
  fldNom:=r_fields."No.";  //узнали номер этого поля.

IF fldNom=0 THEN  //если такого поля нет
  EXIT('');

r_item.SETFILTER("No.",c_No);  //выбрали нужный товар (да, меня устраивает оператор FIND)
IF r_item.FIND('-') THEN BEGIN
  RecRef1.GETTABLE(r_item);				//спозиционировали RecRef1 на нужной записи
  EXIT(RecRef1.FIELD(fldNom).VALUE);  //получили значение поля
END;
EXIT(''); //если ничего не нашли.
Для получения полей Описание и Базовая единица измерения данная функция мне вполне подходит.
Предлагаю модифицировать под свою таблицу.

Отчет с данной функцией (она там одна) лежит здесь
Old 20.09.2006, 04:27   #9  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Join Date: 27.09.2004
Location: Иркутск
Есть еще один способ. Создаем табличный объект с необходимыми нам объединенными полями, ключами. Мы будем ее использовать только как временную, поэтому номер для нее выбираем вне пользовательской лицензии. Заполняем ее в кодеюните и затем вызываем созданную на ее основе форму командой
FORM.RUN(FORM::"Наша форма", ВремТаблица);
Получается что-то вроде запроса.
Old 20.09.2006, 10:58   #10  
romeo is offline
romeo
Участник
romeo's Avatar
 
564 / 10 (2) +
Join Date: 31.03.2004
Quote:
Originally Posted by Gennady Antropov View Post
Есть еще один способ. Создаем табличный объект с необходимыми нам объединенными полями, ключами. Мы будем ее использовать только как временную, поэтому номер для нее выбираем вне пользовательской лицензии. Заполняем ее в кодеюните и затем вызываем созданную на ее основе форму командой
FORM.RUN(FORM::"Наша форма", ВремТаблица);
Получается что-то вроде запроса.
Айдишник объекта под такое дело наверное не слишком хорошее решение. На мой взгляд слишком расточительно.
Old 21.09.2006, 04:10   #11  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Join Date: 27.09.2004
Location: Иркутск
Да нет же! Я же написал: ВНЕ пользовательской лицензии! На временные таблицы лицензионные ограничения клиента не распространяются. Только что на само СОЗДАНИЕ такого объекта нужна лицензия разработчика.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 11:25.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.