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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.08.2009, 14:48   #9  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
решил так
каличный метод. у меня mssql2k, сделал следующее:

создал табличку (в ax)
CREATE TABLE [dbo].[TABLE2] (
[FSTR] [varchar] (10) COLLATE SQL_Ukrainian_CP1251_CI_AS NOT NULL ,
[FINT] [int] NOT NULL ,
[FREAL] [numeric](28, 12) NOT NULL ,
[FDATE] [datetime] NOT NULL ,
[FTIME] [int] NOT NULL ,
[FENUM] [int] NOT NULL ,
[FCON] [image] NULL ,
[DATAAREAID] [varchar] (3) COLLATE SQL_Ukrainian_CP1251_CI_AS NOT NULL ,
[RECID] [int] NOT NULL
)

+ пофиксил метод SysDictField.fieldSize() (по перекрестным ссылках используется только в отчетах о размере базы/компании):
X++:
int fieldSize()
{
    int size;
    switch (this.baseType())
    {
        case Types::DATETIME:
        case Types::DATE:
            size = 8;
            break;
//        case Types::DATE:
//        case Types::DATETIME:
        case Types::INTEGER:
            size = 4;
            break;
        case Types::BLOB:
        case Types::CONTAINER:
        case Types::VARSTRING:
            size = 2048; // 8192 div 4 (assumption: One out of 4 has data)
            break;
        case Types::REAL:
            size = 13; //20;
            break;
        case Types::ENUM:
            size = 4; //1;
            break;
        case Types::STRING:
        case Types::RSTRING:
            size = this.stringLen();
            break;
    }
    return size*this.arraySize();
}
дык оно просчитало вот такие поля:
X++:
TableId
RecId
sequenceNum
dataAreaId
createdTransactionId
createdBy
createdTime
createdDate
modifiedTransactionId
modifiedBy
modifiedTime
modifiedDate
fCon
fEnum
fTime
fDate
fReal
fInt
fStr
думаю для более реалистичной картины надо пофиксить sysDictTable.recordSize(). предлагаю так:
X++:
int recordSize()
{
    int size;
    int i;
    SysDictField sysDictField;

    for (i=this.fieldCnt(); i; i--)
    {
        SysDictField = new SysDictField(this.id(), this.fieldCnt2Id(i));
        if ( SysDictField.isSql() )
            size += SysDictField.fieldSize();
    }
    return size;
}
посчитало поля:
X++:
RecId
dataAreaId
fCon
fEnum
fTime
fDate
fReal
fInt
fStr
непонимаю только зачем "большие" поля типа container считать как 1/4 страницы.
__________________
--- SHiSHok

Последний раз редактировалось SHiSHok; 07.08.2009 в 14:54. Причина: дополнил
Теги
sql, запись

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Цветные строки в Grid Sergo DAX: База знаний и проекты 14 19.04.2012 10:02
AX4: Кнопка "Сценарий" в паспорте записи Den Ram DAX: Функционал 2 19.04.2007 13:53
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
Автоматическое увеличение значения поля при создании новой записи. sguryev DAX: Программирование 3 06.02.2003 14:00
Строки журналов Андре DAX: Программирование 14 08.08.2002 10:02

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

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

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