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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2007, 17:14   #1  
locky_sql_ru is offline
locky_sql_ru
Участник
 
20 / 21 (1) +++
Регистрация: 19.02.2007
sqldictionary - маппинг fieldtype в тип колонки Oracle, default
Глядя в sqldictionary вижу колонки с fieldtype=2, которые мапятся в физические колонки с типами number и number(32,16) (для Oracle). Для СКЛ - всё маппится в decimal(28,12).
Куда еще кроме sqldictionary надо смотреть чтобы вытащить precision, scale?
Аналогичный вопрос - для default.
ссылка на описание словаря метаданных - приветствуется.

Dynamics Ax 4.0 SP1
Старый 19.02.2007, 18:42   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
может, по типам данных поможет такая картинка?
Старый 19.02.2007, 21:06   #3  
locky_sql_ru is offline
locky_sql_ru
Участник
 
20 / 21 (1) +++
Регистрация: 19.02.2007
Спасибо, но это немного не то :-(
Меня интересует вопрос, исходя из каких соображений для fieldtype=2 выбирается тот или иной precision и scale. Ну, и default, конечно.
Просто в демо-базе я увидел - не всегда есть однозначное соответствие.
Старый 20.02.2007, 09:23   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от locky_sql_ru Посмотреть сообщение
Просто в демо-базе я увидел - не всегда есть однозначное соответствие.
А можно примеры? Насколько мне помнится, различие внутри типа бывает только для string (fieldtype=0) - т.е. бывает разная длина строки. Для fieldtype=2 (т.е. real) физически поля в базе данных будут именно такими, как Вы указываете. Т.е. в Oracle все real-поля будут только number(32,16) и не будет никаких других,например, number(24,8). Другое дело, что внутри самого приложения Axapta существует громадная иерархия расширенных типов данных (EDT), определенных в словаре данных. В этой иерархии конкретные real-типы могут различаться такими характеристиками, как число знаков после десятичной запятой, кол-во отображаемых знаков и т.п. (При этом в базе Oracle они все будут храниться в number(32,16) ). Может быть, Вы об этом? В любом случае помимо таблицы SqlDictionary надо заглянуть в репозитарий прикладных объектов (AOT) в узел "Data Dictionary".
Старый 20.02.2007, 12:19   #5  
locky_sql_ru is offline
locky_sql_ru
Участник
 
20 / 21 (1) +++
Регистрация: 19.02.2007
я загрузил DemoData EN-US 401 в Oracle и в MS SQL.после чего выборкой типа

Код:
 
select distinct sd.fieldtype,tc.DATA_TYPE,tc.DATA_PRECISION,tc.DATA_SCALE 
from administrator.sqldictionary sd join administrator.sqldictionary so on 
sd.tableid=so.tableid and sd.fieldid<> 0 and so.fieldid = 0 
join sys.all_tab_columns tc on sd.name=tc.COLUMN_NAME 
and tc.TABLE_NAME = so.name
получил

Код:
 
FIELDTYPE DATA_TYPE DATA_PRECISION DATA_SCALE
0 NVARCHAR2  
1 NUMBER 10 0
2 NUMBER 32 16
2 NUMBER  
3 DATE  
4 NUMBER 10 0
7 BLOB  
8 NCLOB
для MS SQL аналогичная выборка для типа 2 дала однозначный маппинг.Спасибо за совет.Пошел учить матчасть.

Последний раз редактировалось locky_sql_ru; 20.02.2007 в 12:23.
Старый 20.02.2007, 12:44   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от locky_sql_ru Посмотреть сообщение
я загрузил DemoData EN-US 401 в Oracle и в MS SQL.после чего выборкой типа [...] для MS SQL аналогичная выборка для типа 2 дала однозначный маппинг.
Не знаю, как в 4-ке, а в 3-ке не надо грузить никакие демо-данные, чтобы посмотреть, как будет инициализирована таблица SqlSystemVariables, - достаточно глянуть класс SqlDatabaseInit, методы insertSystemVariablesSqlServer() и insertSystemVariablesOracle(). И вызываются методы этого класса по любому до загрузки каких бы то ни было демо-данных.

PS. Прикол: в этом классе еще есть метод insertSystemVariablesSqlAnywhere()
Старый 20.02.2007, 12:52   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
2 locky_sql_ru : cлегка модифицировал Ваш запрос - добавил Count:
Код:
SELECT sd.fieldtype,tc.data_type,tc.data_precision,tc.data_scale, COUNT(*) 
FROM sqldictionary sd JOIN sqldictionary so ON 
sd.tableid=so.tableid AND sd.fieldid<> 0 AND so.fieldid = 0 
JOIN sys.all_tab_columns tc ON sd.NAME=tc.column_name 
AND tc.table_name = so.NAME
GROUP BY sd.fieldtype,tc.data_type,tc.data_precision,tc.data_scale
Получил на своей Axapta 3.0 CIS SP3 :
Код:
FIELDTYPE	DATA_TYPE	DATA_PRECISION	DATA_SCALE	COUNT(*)
0	VARCHAR2			10 468
1	NUMBER			6
1	NUMBER	10	0	3 654
2	NUMBER			33
2	NUMBER	32	16	1 897
3	DATE			1 320
4	NUMBER	10	0	3 347
7	BLOB			86
8	CLOB			88
Полагаю, что незначительное количество 1 NUMBER и 2 NUMBER - это некие служебные колонки схемы. Проверять лень
А в остальном всё хорошо:
0 - String
1 - Integer
2 - Real
3 - Date
4 - Enum (по сути тот же integer)
7 - Container
8 - VarString
Старый 20.02.2007, 14:24   #8  
locky_sql_ru is offline
locky_sql_ru
Участник
 
20 / 21 (1) +++
Регистрация: 19.02.2007
у меня number расходится например в 'LEDGERBALANCES','ADDRESS'
В 'ADDRESS' - number(32,16), в 'LEDGERBALANCES' - просто number


Код:
 
select so.name,sd.name,sd.fieldtype,tc.DATA_TYPE,tc.DATA_PRECISION,tc.DATA_SCALE
,sd.* 
from administrator.sqldictionary sd join administrator.sqldictionary so on sd.tableid=so.tableid and sd.fieldid <> 0 and so.fieldid = 0
join sys.all_tab_columns tc on sd.name=tc.COLUMN_NAME and tc.TABLE_NAME = so.name
where tc.DATA_TYPE = 'NUMBER'
and sd.fieldtype = 2 
and sd.name in ('CREDITMST','LINENUM')
and so.name in ('LEDGERBALANCES','ADDRESS')
получил
Код:
 
NAME NAME FIELDTYPE DATA_TYPE DATA_PRECISION DATA_SCALE TABLEID FIELDID ARRAY NAME SQLNAME FIELDTYPE STRSIZE SHADOW RIGHTJUSTIFY NULLABLE FLAGS RECVERSION RECID
ADDRESS LINENUM 2 NUMBER 32 16 1 3 1 LINENUM LINENUM 2 0 0 0 0 0 1 5637145421
LEDGERBALANCES CREDITMST 2 NUMBER   1356 9 1 CREDITMST CREDITMST 2 0 0 0 0 0 1 5637173370
Старый 20.02.2007, 14:49   #9  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
А посмотрите ExtendedDataType у этих полей. Например, LineNum на трешке основан на RealBase, но у него количество знаков после запятой переназначено. Может в этом дело?
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 20.02.2007, 15:36   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
2 locky_sql_ru: Вам, наверное, будет интересно вот это: Axapta Doc Generator. А оттуда ссылка в качестве примера ведет сюда: http://schunk.dk/DocWeb/index.html
Теги
ax4.0, oracle, sqldictionary

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Установка Dynamics 4.0 под Oracle Paul_ST DAX: Администрирование 6 20.04.2007 16:36
aEremenko: История об установке Microsoft Dynamics Ax 4.0 и Oracle 10G Blog bot DAX Blogs 0 28.10.2006 16:01
Никак не могу вьехать, для чего нужны тип счета и тип разноски maloy DAX: Функционал 5 28.03.2004 17:18
Ошибка SQL в модуле "Расчеты с персоналом" Карбофос DAX: Функционал 5 02.08.2002 12:44
Ошибка SQL в модуле "Расчеты с персоналом" Карбофос DAX: Программирование 0 31.07.2002 17:20

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:59.