|  30.03.2009, 10:23 | #1 | 
| Злыдни | Real Data Type - No of decimals 
			
			Как известно, для Real в Аксапта максимальное количество десятичных знаков - 16.  Однако поля в таблицах создаются как numeric(28,12) - т.е. 12 знаков после запятой. Что это - бага? Фича? Я дурак? AX 4.0 SP2
		 | 
|  | 
|  30.03.2009, 10:55 | #2 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: Yprit (1). | |
|  30.03.2009, 10:59 | #3 | 
| MCTS | 
			
			Может это как-то связано с этим...  Цитата: 
		
			Например, тип real хранится не как традиционное число с плавающей точкой (IEEE Double), а как Binary Coded Decimal, что позволяет избежать типичных для формата хранения IEEE Double ошибок в точном представлении дробных чисел, так осложняющих жизнь тех разработчиков, которые пытаются реализовать денежную арифметику с помощью языка C++ или Java.
		
	 хотя, действительно, и у меня на оракле (32,16) | 
|  | |
| За это сообщение автора поблагодарили: Yprit (1). | |
|  30.03.2009, 11:02 | #4 | 
| Злыдни | |
|  | 
|  30.03.2009, 11:07 | #5 | 
| Axapta | |
|  | |
| За это сообщение автора поблагодарили: Yprit (1). | |
|  30.03.2009, 11:08 | #6 | 
| Злыдни | |
|  | 
|  30.03.2009, 11:17 | #7 | 
| Участник | 
			
			Тип NUMERIC(28,12) записан в таблице SQLSYSTEMVARIABLES. Действительно для MSSQL так в коде и записано. См метод SQLDatabaseInit.insertSystemVariablesSqlServer(). Для Oracle в том же классе прописано NUMERIC(32,16).
		 | 
|  | |
| За это сообщение автора поблагодарили: Yprit (1). | |
|  30.03.2009, 11:29 | #8 | 
| Злыдни | |
|  | 
|  30.03.2009, 11:40 | #9 | 
| Участник | 
			
			У меня 3.0 SP3  Класс SQLDatabaseInit X++: boolean insertSystemVariablesSqlServer()
{
    int indexValue =    #indexSupported+
                        #indexQualifier+
                        #recidsPerCompany+
                        #TransidsPerCompany;
    if (sqlSystem.dbRequestedUnicodeEnabled()>0)
        this.insertSystemVariable('(\'STR\',\'NVARCHAR(\%u)\',1,NULL)');
    else
        this.insertSystemVariable('(\'STR\',\'VARCHAR(\%u)\',1,NULL)');
    this.insertSystemVariable('(\'INT\',\'INT\',1,NULL)');
    this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)');
    this.insertSystemVariable('(\'DATE\',\'DATETIME\',1,NULL)');
    this.insertSystemVariable('(\'ENUM\',\'INT\',1,NULL)');
    this.insertSystemVariable('(\'BLOB\',\'IMAGE\',1,NULL)');
    this.insertSystemVariable('(\'TEXT\',\'TEXT\',1,NULL)');
    this.insertSystemVariable('(\'TIMESTAMPTYPE\',\'\',1,NULL)');
    this.insertSystemVariable('(\'GETINDEX\',\'SELECT name FROM sysindexes WHERE indid>0 AND indid<255 AND id=object_id(\'\'\%s\'\') AND INDEXPROPERTY(id, name, \'\'IsStatistics\'\') = 0\',3,NULL)');
    this.insertSystemVariable('(\'RENAME\',\'EXECUTE SP_RENAME \%s,\%s\',3,NULL)');
    this.insertSystemVariable('(\'KEYWORDS\',\'PROC,SUM,LINENO,OPEN,TRANSACTION,BY,PERCENT,PROCEDURE,CURRENT_DATE,CURRENT_TIME,CURRENT_USER,DUMMY,PERMANENT,PIPE\',4,NULL)');
    this.insertSystemVariable('(\'SHADOW\',\'$\',5,NULL)');
    this.insertSystemVariable('(\'INDEXCLUSTER\', \'CLUSTERED\',5,NULL)');
    this.insertSystemVariable('(\'QUOTEPRE\',\'\',6,NULL)');
    this.insertSystemVariable('(\'QUOTEPOST\',\'_\',6,NULL)');
    this.insertSystemVariable('(\'DBNAME\',\'Microsoft SQL Server\',7,NULL)');
    this.insertSystemVariable('(\'DUPLICATEKEY\',\'+2601,+2627\',9,NULL)');
    this.insertSystemVariable('(\'DEADLOCKCODES\',\'+1205\',9,NULL)');
    this.insertSystemVariable('(\'TIMESTAMPCODES\',\'+532\',9,NULL)');
    this.insertSystemVariable('(\'DISCONNECTCODES\',\'+230,+10054\',9,NULL)');
    this.insertSystemVariable('(\'CTRLBRKCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'SHARINGCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'RECORDLOCKCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'DONTRETRYCODES\',\'+100\',9,NULL)');
    this.insertSystemVariable('(\'INDEXEXISTCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'ENDOFDATACODES\',\'+100\',9,NULL)');
    this.insertSystemVariable('(\'LOGFULLCODES\',\'+1105\',9,NULL)');
    this.insertSystemVariable('(\'SYNCHRONIZECODES\',\'+207,+208,+1913,+3701,+3702,+3703\',9,NULL)');
    this.insertSystemVariable('(\'TABLENAMELEN\',\'30\',10,NULL)');
    this.insertSystemVariable('(\'FIELDNAMELEN\',\'30\',10,NULL)');
    this.insertSystemVariable('(\'CHARSET\',\'1\', 11,NULL)');
    this.insertSystemVariable('(\'SORTMODE\',\'1\',11,NULL)');
    this.insertSystemVariable('(\'CONCURRENCY\',\'6\',11,NULL)');
    this.insertSystemVariable('(\'NULLSUPPORT\',\'3\',11,NULL)');
    this.insertSystemVariable('(\'DBID\',\'2\',12,NULL)');
    this.insertSystemVariable('(\'SYSVARID\',\''+ int2str(#currentSysVarId) +'\',12,NULL)');
    this.insertSystemVariable('(\'RESERVED\',\'0\',12,NULL)');
    this.insertSystemVariable('(\'ALTERTABLE\',\'1\',13,NULL)');
    this.insertSystemVariable('(\'GETDATA\',\'0\',13,NULL)');
    this.insertSystemVariable('(\'SQLFUNCTIONS\',\'0\',13,NULL)'); // 2000/8/10: MAX() and MIN() handled by the SQL backend
    this.insertSystemVariable('(\'INDEX\',\''+int2Str(indexValue)+'\',13,NULL)');
    this.insertSystemVariable('(\'APICALLSPINCNT\',\'0\',15,NULL)');
    this.insertSystemVariable('(\'APICALLSLEEP\',\'10\',15,NULL)');
    this.insertSystemVariable('(\'CASESENSITIVE\',\'0\',20,NULL)');
    this.insertSystemVariable('(\'ALLOWEMPTYSTRING\',\'1\',20,NULL)');
    this.insertSystemVariable('(\'COMMENTSTRING\',\'1\',20,NULL)');
    this.insertSystemVariable('(\'NAMETRUNCFIX\',\'0\',20,NULL)');
    this.insertSystemVariable(strFmt('(\'UNICODEENABLED\',\'%1\',20,NULL)',sqlSystem.dbRequestedUnicodeEnabled()));
    this.insertSystemVariable('(\'ORDERBYSELECT\',\'0\',21,NULL)');
    return TRUE;
}X++: this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)'); | 
|  | 
|  30.03.2009, 12:12 | #10 | 
| Axapta | 
			
			В 4ке вот этой части нет: X++: if (sqlSystem.dbRequestedUnicodeEnabled()>0) this.insertSystemVariable('(\'STR\',\'NVARCHAR(\%u)\',1,NULL)'); else this.insertSystemVariable('(\'STR\',\'VARCHAR(\%u)\',1,NULL)'); this.insertSystemVariable('(\'INT\',\'INT\',1,NULL)'); this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)'); this.insertSystemVariable('(\'DATE\',\'DATETIME\',1,NULL)'); this.insertSystemVariable('(\'ENUM\',\'INT\',1,NULL)'); this.insertSystemVariable('(\'BLOB\',\'IMAGE\',1,NULL)'); this.insertSystemVariable('(\'TEXT\',\'TEXT\',1,NULL)'); this.insertSystemVariable('(\'TIMESTAMPTYPE\',\'\',1,NULL)'); | 
|  | 
|  30.03.2009, 12:17 | #11 | 
| Злыдни | 
			
			мда, действительно нет ....
		 | 
|  | 
| Теги | 
| баг, ax3.0, ax4.0 | 
|  | 
| 
 |