05.09.2006, 10:20 | #1 |
Участник
|
Подскажите пожалуйста как отобразить данные из двух таблиц в TableBox.
Имеются две таблицы, одна из них связана с формой, необходимо по одинаковому номеру подгрузить поле из второй таблицы в TableBox. |
|
05.09.2006, 10:25 | #2 |
Участник
|
|
|
05.09.2006, 12:12 | #3 |
Участник
|
Спасибо за ответ!
Все работает. Однако пришлось опять переделать т.к пользователи хотели одно но говорили другое... |
|
18.09.2006, 13:38 | #4 |
Участник
|
Цитата:
Есть таблица N. У нее первичный ключ Number, Вторичный - Command. Эта таблица связана с формой. Есть таблица F. У нее первичный ключ Command. Необходимо по одинаковому номеру (Command)подгрузить поле из второй таблицы в TableBox. |
|
18.09.2006, 14:12 | #5 |
Участник
|
Цитата:
Сообщение от Programmer
Цитата:
Есть таблица N. У нее первичный ключ Number, Вторичный - Command. Эта таблица связана с формой. Есть таблица F. У нее первичный ключ Command. Необходимо по одинаковому номеру (Command)подгрузить поле из второй таблицы в TableBox. И вот это "У нее первичный ключ Number, Вторичный - Command" резануло слух. Ключ ПЕРВИЧНЫЙ и состоит из двух полей Number, Command. Уникальная комбинация, которая не повторяется в таблице более одного раза ... |
|
18.09.2006, 19:35 | #6 |
Участник
|
Чего-то я настолько запутался, что незнаю как получить необходимые мне строки. Вот что мне нужно получить.
Не могли бы подсказать как в коде формы, построенной на N получить необходимые записи F. Сделал как порекомендовали. А дальше незнаю как ... Цитата:
в коде формы, построенной на N нужно еще и получить необходимые записи F.
|
|
19.09.2006, 10:25 | #7 |
Участник
|
Обычно, когда получить нужно значение одного, двух, ну пяти полей в форме из другой таблицы я создаю функции. Либо по одной на каждое поле, либо одну на все поля (нужный алгоритм работы определяется параметром). Если вы предполагаете, что данных из других таблиц на форму придется вытягивать дофига, то париться с функциями уже не рационально. Тогда я объявляю глобальную переменную рекорд на нужной мне таблице. В форме в триггере OnAfterGetRecord() я делаю поиск в новой переменной по нужному значению из основной таблицы. И после этого я могу создавать сколь угодно много полей и в соурсе прописывать НоваяРекорд.Поле для отображения инфы из другой таблицы.
|
|
19.09.2006, 11:29 | #8 |
MCTS
|
Приветствую,
Для вытягивания данных из полей таблицы Товар, по коду сделал себе следующую мега-функцию: Код: 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 |
Участник
|
Есть еще один способ. Создаем табличный объект с необходимыми нам объединенными полями, ключами. Мы будем ее использовать только как временную, поэтому номер для нее выбираем вне пользовательской лицензии. Заполняем ее в кодеюните и затем вызываем созданную на ее основе форму командой
FORM.RUN(FORM::"Наша форма", ВремТаблица); Получается что-то вроде запроса. |
|
20.09.2006, 10:58 | #10 |
Участник
|
Цитата:
Сообщение от Gennady Antropov
Есть еще один способ. Создаем табличный объект с необходимыми нам объединенными полями, ключами. Мы будем ее использовать только как временную, поэтому номер для нее выбираем вне пользовательской лицензии. Заполняем ее в кодеюните и затем вызываем созданную на ее основе форму командой
FORM.RUN(FORM::"Наша форма", ВремТаблица); Получается что-то вроде запроса. |
|
21.09.2006, 04:10 | #11 |
Участник
|
Да нет же! Я же написал: ВНЕ пользовательской лицензии! На временные таблицы лицензионные ограничения клиента не распространяются. Только что на само СОЗДАНИЕ такого объекта нужна лицензия разработчика.
|
|