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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2006, 10:20   #1  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Подскажите пожалуйста как отобразить данные из двух таблиц в TableBox.
Имеются две таблицы, одна из них связана с формой, необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
Старый 05.09.2006, 10:25   #2  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от prefreitor Посмотреть сообщение
необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox.
Если по одному номеру - может проще Subform использовать?


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

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

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


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

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

Код:
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(''); //если ничего не нашли.
Для получения полей Описание и Базовая единица измерения данная функция мне вполне подходит.
Предлагаю модифицировать под свою таблицу.

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


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

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

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