![]() |
#9 |
Участник
|
решил так
каличный метод. у меня 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 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
__________________
--- SHiSHok Последний раз редактировалось SHiSHok; 07.08.2009 в 14:54. Причина: дополнил |
|