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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2006, 15:29   #1  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Создание объекта таблицы по ее имени
Доброго времени суток Коллеги.
Вот у меня возникла проблемка. Хочу перебрать все поля таблицы (их описания), которую укажут в диалоге. Посадил на диалог поле для ввода текста и вызываю метод моего класса, в параметре которого передается строка из диалога. Данная строка будет являться именем таблицы, поля которой мне нужно перебрать. Но как мне из строкового выражения создать объект. а может я не так предоставляю выбор таблицы? Поделитесь пожалуйста опытом.
Заранее благодарен!
Старый 13.09.2006, 15:31   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
\System Documentation\Classes\DictTable\makeRecord
Старый 13.09.2006, 15:35   #3  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Что-то не совсем понял. А зачем создавать объект, чтобы перебрать св-ва полей? Есть замечательные классы DictTable и DictField.
Старый 13.09.2006, 15:36   #4  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
ну вобще мне нужно для произвольной таблицы узнать:
какие у нее есть поля и описание полей
Старый 13.09.2006, 15:39   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
DictTable очень вам в этом поможет - при создании объекта нужно ему передать tableId той таблицы (произвольной), которой нужно.
И сразу объект этот будет все знать об этой таблице

А для того чтобы получить tableId достаточно метода tableName2Id()
За это сообщение автора поблагодарили: demon46 (1).
Старый 13.09.2006, 15:42   #6  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Об этом я знаю. Но при создании объекта необходимо передавать его ID а у меня есть название таблицы
Старый 13.09.2006, 15:43   #7  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Упс... простите не дочитал
Старый 13.09.2006, 15:44   #8  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Зачем объект-то создавать?
Старый 13.09.2006, 15:46   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот тебе еще кусочек кода:
Код:
static void Job5(Args _args)
{
    #define.yourTableNameFromDialog('InventTable')
    DictTable   dt;
    DictField   df;
    int i;
    ;
    dt = new DictTable(tableName2Id(#yourTableNameFromDialog));
    for (i = 1; i <= dt.fieldCnt(); i++)
    {
        info(fieldId2Name(dt.id(), dt.fieldCnt2Id(i)));
        df = new DictField(dt.id(), dt.fieldCnt2Id(i));
        //df.получаем о поле всю необходимую инфу
    }
}
и oip правильно говорит - объект таблицы создавать совсем не нужно.
Старый 13.09.2006, 15:46   #10  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
X++:
static void JOB6666()
{
    SysDictTable       dictTable;
    SysDictField       dictField;
    int                i;
    ;

    dictTable = new SysDictTable(tableName2Id('CustTable'));
    for (i = 1; i <= dictTable.fieldCnt(); i++)
    {
        dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(i));
        info (dictField.name());
    }
}
Edit: Тьфу, черт. Опередили.

Последний раз редактировалось oip; 13.09.2006 в 15:59.
За это сообщение автора поблагодарили: demon46 (1).
Старый 13.09.2006, 15:47   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот вам даже 2 кусочка кода - по-разному сделанных
Старый 13.09.2006, 15:48   #12  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Это конечно не по теме, но мне все же важно! В форуме на исходниках есть опция закрытия темы. А на этом форуме я не нашел данной опции. Здесь темы закрывает модератор? Ну не нравится мне, когда вопрос решен, а тема еще открыта... Подскажите как закрыть тему.
Старый 13.09.2006, 15:51   #13  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Не стоит закрывать тему! Если у кого-нить потом возникнет вопрос подобный, то он сможет его задать в этой теме, а не создавать новую. ИМХО.

PS Тут принято кликать на зеленый квадратик, если Вам кто-то помог.

Последний раз редактировалось oip; 13.09.2006 в 16:05.
Старый 13.09.2006, 15:51   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Написать просто можно - тема закрыта.
Отписаться от подписки на нее, чтобы не получать уведомления в дальнейшем.
И поблагодарить участников + оценить саму тему
Старый 13.09.2006, 15:53   #15  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от demon46 Посмотреть сообщение
ну вобще мне нужно для произвольной таблицы узнать:
какие у нее есть поля и описание полей
Хм... у меня дежавю? Мы ж Вас уже снабдили подобного рода знанием в теме Как работать с EXCEL файлами
Включайте там в экселе автофильтр и смотрите поля любой таблицы. Можно даже с собой на дачу взять на ноутбуке и под коньячок, укрывшись пледом, неспешно изучать
Или Вы просто в программировании этих вопросов хотите попрактиковаться?
Старый 13.09.2006, 15:54   #16  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Да но тут еще один вопрос а что если пользователь ошибется в одном символе и такой таблици не окажется?
Старый 13.09.2006, 15:55   #17  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
тогда метод tablename2id вернет 0 - сделайте проверку на это и все.
Старый 13.09.2006, 15:57   #18  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
X++:
static void JOB6666()
{
    SysDictTable       dictTable;
    SysDictField       dictField;
    int                i;
    ;

    dictTable = new SysDictTable(tableName2Id('CustTable1'));
    if (dictTable)
    {
        for (i = 1; i <= dictTable.fieldCnt(); i++)
        {
            dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(i));
            if (!dictField.isSystem())
                info (dictField.name());
        }
    }
    else
    {
        error ('Такой таблицы нет!');
    }
}
Старый 13.09.2006, 16:00   #19  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
GUSTAV я помню, что вы такое уже писали, но там перебор таблиц шел по ID. Да и к тому же мне данный вариант был неудобен.
Старый 13.09.2006, 16:02   #20  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
И снова всем огромнейшее спасибо.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12
Создание Menu Item на основе объекта Maxim Gorbunov DAX: База знаний и проекты 4 12.12.2005 13:12
Вызов метода таблицы по имени Bega DAX: Программирование 2 14.09.2005 17:21
Как по имени(ID) поля таблицы установить значение поля. AKit_3 DAX: Программирование 9 24.12.2004 19:03
Для чего нужны таблицы с префиксом имени Tmp? vitk DAX: Программирование 4 10.12.2001 23:27

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

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

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